Shibboleth을 인증 공급자로 사용
Offering: GitLab Self-Managed, GitLab Dedicated
특정 Shibboleth ID 공급자(IdP)를 통합하려면 GitLab SAML 통합을 사용하세요. GitLab에서 Shibboleth 지원을 활성화하려면 NGINX 대신 Apache를 사용하세요. Linux 패키지에서 제공하는 번들 NGINX를 사용하여 역방향 프록시 설정을 사용하는 다른 인스턴스에서 Shibboleth 서비스 공급자를 실행할 수 있습니다.
특정 Shibboleth ID 공급자(IdP)를 통합하려면 GitLab SAML 통합을 사용하세요. Shibboleth 페더레이션 지원(Discovery Service)은 이 문서를 사용하세요.
GitLab에서 Shibboleth 지원을 활성화하려면 NGINX 대신 Apache를 사용하세요. Apache는 Shibboleth 인증을 위해 mod_shib2 모듈을 사용하고 속성을 헤더로 OmniAuth Shibboleth 공급자에게 전달할 수 있습니다.
Linux 패키지에서 제공하는 번들 NGINX를 사용하여 역방향 프록시 설정을 사용하는 다른 인스턴스에서 Shibboleth 서비스 공급자를 실행할 수 있습니다. 그러나 이 작업을 수행하지 않는 경우 번들 NGINX는 구성하기 어렵습니다.
Shibboleth OmniAuth 공급자를 활성화하려면 다음을 수행해야 합니다:
Shibboleth를 활성화하려면:
-
OmniAuth Shibboleth 콜백 URL을 보호합니다:
AuthType shibboleth ShibRequestSetting requireSession 1 ShibUseHeaders On require valid-user </Location> Alias /shibboleth-sp /usr/share/shibboleth Satisfy any </Location> SetHandler shib </Location> -
Shibboleth URL을 재작성에서 제외합니다.
RewriteCond %{REQUEST_URI} !/Shibboleth.sso와RewriteCond %{REQUEST_URI} !/shibboleth-sp를 추가합니다. 예시 구성:# Apache equivalent of Nginx try files RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !/Shibboleth.sso RewriteCond %{REQUEST_URI} !/shibboleth-sp RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA] RequestHeader set X_FORWARDED_PROTO 'https' -
/etc/gitlab/gitlab.rb에 Shibboleth를 OmniAuth 공급자로 추가합니다. 사용자 속성은 Shibboleth 속성 매핑의 이름으로 헤더로 Apache 역방향 프록시에서 GitLab으로 전송됩니다. 따라서args해시의 값은"HTTP_ATTRIBUTE"형식이어야 합니다. 해시의 키는 OmniAuth::Strategies::Shibboleth 클래스에 대한 인수이며omniauth-shibboleth-reduxgem에 의해 문서화되어 있습니다(GitLab에 패키징된 gem 버전에 주의하세요).파일은 다음과 같아야 합니다:
external_url 'https://gitlab.example.com' gitlab_rails['internal_api_url'] = 'https://gitlab.example.com' # disable Nginx nginx['enable'] = false gitlab_rails['omniauth_allow_single_sign_on'] = true gitlab_rails['omniauth_block_auto_created_users'] = false gitlab_rails['omniauth_providers'] = [ { "name" => "shibboleth", "label" => "Text for Login Button", "args" => { "shib_session_id_field" => "HTTP_SHIB_SESSION_ID", "shib_application_id_field" => "HTTP_SHIB_APPLICATION_ID", "uid_field" => 'HTTP_EPPN', "name_field" => 'HTTP_CN', "info_fields" => { "email" => 'HTTP_MAIL'} } } ]일부 사용자가 Shibboleth 및 Apache에 의해 인증되지만 GitLab이 "e-mail is invalid"를 포함하는 URI로 계정을 거부하는 경우 Shibboleth ID 공급자 또는 속성 기관이 여러 이메일 주소를 어설션하고 있을 수 있습니다. 이 경우
multi_values인수를first로 설정하는 것을 고려하세요. -
변경 사항이 적용되려면:
로그인 페이지에 일반 로그인 양식 아래에 Sign in with: Shibboleth 아이콘이 표시됩니다. 아이콘을 선택하여 인증 프로세스를 시작합니다. Shibboleth 모듈 구성에 맞는 적절한 IdP 서버로 리다이렉트됩니다. 모든 것이 정상이면 GitLab으로 돌아가 로그인됩니다.
