Shibboleth을 인증 공급자로 사용
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'
-
Shibboleth을
/etc/gitlab/gitlab.rb
에 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 ID 공급자 또는 속성 권한 부여자가 여러 이메일 주소를 주장할 수 있습니다. 이 경우
multi_values
인수를first
로 설정하는 것을 고려해 보세요. -
변경 사항이 적용되려면:
로그인 페이지에는 이제 기존의 로그인 양식 아래에 Shibboleth로 로그인: Shibboleth 아이콘이 표시됩니다. 아이콘을 선택하여 인증 프로세스를 시작합니다. Shibboleth 모듈 구성에 따라 적절한 IdP 서버로 리디렉션됩니다. 모든 것이 잘 되면, GitLab로 되돌아와 로그인할 수 있습니다.