Shibboleth을 인증 제공자로 사용하기
Offering: Self-Managed, GitLab Dedicated
GitLab에서 Shibboleth 지원을 활성화하려면 NGINX 대신 Apache를 사용하세요. Apache는 Shibboleth 인증을 위해 mod_shib2
모듈을 사용하며, 속성을 OmniAuth Shibboleth 공급자로 헤더로 전달할 수 있습니다.
리버스 프록시 설정을 사용하여 Linux 패키지에 제공된 번들 NGINX를 사용하여 다른 인스턴스에서 Shibboleth 서비스 제공자를 실행할 수 있습니다. 그러나 이렇게 하지 않는 경우, 번들 NGINX는 구성하기 어렵습니다.
Shibboleth OmniAuth 제공자를 활성화하려면 다음을 수행해야 합니다:
Shibboleth을 활성화하려면:
-
OmniAuth Shibboleth 콜백 URL 보호:
<Location /users/auth/shibboleth/callback> AuthType shibboleth ShibRequestSetting requireSession 1 ShibUseHeaders On require valid-user </Location> Alias /shibboleth-sp /usr/share/shibboleth <Location /shibboleth-sp> Satisfy any </Location> <Location /Shibboleth.sso> SetHandler shib </Location>
-
Shibboleth URL을 재작성에서 제외합니다.
RewriteCond %{REQUEST_URI} !/Shibboleth.sso
및RewriteCond %{REQUEST_URI} !/shibboleth-sp
을 추가합니다. 예제 구성:# Nginx try files의 Apache equivalent 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 제공자로 추가합니다. 사용자 속성은 Apache 리버스 프록시에서 Shibboleth 속성 매핑의 이름으로 GitLab으로 헤더로 전송됩니다. 따라서args
해시의 값은"HTTP_ATTRIBUTE"
형식이어야 합니다. 해시의 키는 OmniAuth::Strategies::Shibboleth 클래스의 인수이며,omniauth-shibboleth-redux
젬에 의해 문서화되어 있습니다 (GitLab과 함께 패키지화된 젬의 버전을 주의해서 참고하십시오).파일은 다음과 같아야 합니다:
external_url 'https://gitlab.example.com' gitlab_rails['internal_api_url'] = 'https://gitlab.example.com' # 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" => "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이 “이메일이 잘못되었습니다”를 포함하는 URI로 사용자 계정을 거부하는 경우 Shibboleth Identity Provider 또는 Attribute Authority에서 여러 이메일 주소를 선언할 수 있습니다. 이 경우
multi_values
인수를first
로 설정하는 것을 고려하십시오. -
변경 사항을 적용하려면:
로그인 페이지에는 이제 일반 로그인 양식 아래 Shibboleth로 로그인 아이콘이 표시됩니다. 해당 아이콘을 선택하여 인증 프로세스를 시작합니다. Shibboleth 모듈 구성에 따라 적절한 IdP 서버로 리디렉션됩니다. 모든 것이 잘되면 GitLab으로 돌아와 로그인됩니다.