Shibboleth를 인증 제공자로 사용하기
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 등가물 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를 OmniAuth 제공자로
/etc/gitlab/gitlab.rb
에 추가하세요. 사용자 속성은 Apache 역방향 프록시에서 GitLab으로 헤더 형태로 전송됩니다. Shibboleth 속성 매핑에서 이름을 따릅니다. 그래서args
해시의 값은"HTTP_ATTRIBUTE"
형태여야 합니다. 해시의 키는 OmniAuth::Strategies::Shibboleth 클래스의 인수이며,omniauth-shibboleth-redux
gem에 의해 문서화됩니다 (GitLab에 패키지된 gem의 버전을 주의하세요).파일은 다음과 같아야 합니다:
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이 “e-mail is invalid”를 포함한 URI로 계정을 거부하는 경우, Shibboleth ID 제공자 또는 속성 기관이 여러 이메일 주소를 주장하고 있을 수 있습니다. 이 경우,
multi_values
인수를first
로 설정하는 것을 고려하세요. -
변경 사항을 적용하려면:
로그인 페이지에는 이제 일반 로그인 양식 아래에 Sign in with: Shibboleth 아이콘이 있어야 합니다. 아이콘을 선택하여 인증 프로세스를 시작하세요. 적절한 IdP 서버로 리디렉션됩니다. 모든 것이 잘 진행되면 GitLab로 돌아와서 로그인됩니다.