Shibboleth을 인증 제공자로 사용하기
참고: 특정 Shibboleth 식별 제공자(IdP)를 통합하려면 GitLab SAML 통합을 사용하세요. Shibboleth 페더레이션 지원(Discovery Service)의 경우, 이 문서를 사용하세요.
GitLab에서 Shibboleth 지원을 활성화하려면 NGINX 대신 Apache를 사용하세요. Apache는 Shibboleth 인증을 위해 ‘mod_shib2’ 모듈을 사용하며, 속성을 OmniAuth Shibboleth 제공자로 헤더로 전달할 수 있습니다.
리버스 프록시 설정을 사용하여 다른 인스턴스에서 Shibboleth 서비스 제공자를 실행하려면 Linux 패키지의 번들된 NGINX를 사용할 수 있습니다. 그러나 이를 수행하지 않는 경우, 번들된 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 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" => "로그인 버튼 텍스트", "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로 리디렉션되어 로그인됩니다.