InfoGrab Docs

Shibboleth을 인증 공급자로 사용

요약

특정 Shibboleth ID 공급자(IdP)를 통합하려면 GitLab SAML 통합을 사용하세요. GitLab에서 Shibboleth 지원을 활성화하려면 NGINX 대신 Apache를 사용하세요. Linux 패키지에서 제공하는 번들 NGINX를 사용하여 역방향 프록시 설정을 사용하는 다른 인스턴스에서 Shibboleth 서비스 공급자를 실행할 수 있습니다.

Note

특정 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를 활성화하려면:

  1. 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>
    
  2. Shibboleth URL을 재작성에서 제외합니다. RewriteCond %{REQUEST_URI} !/Shibboleth.ssoRewriteCond %{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'
    
  3. /etc/gitlab/gitlab.rb에 Shibboleth를 OmniAuth 공급자로 추가합니다. 사용자 속성은 Shibboleth 속성 매핑의 이름으로 헤더로 Apache 역방향 프록시에서 GitLab으로 전송됩니다. 따라서 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'
    
    # 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로 설정하는 것을 고려하세요.

  4. 변경 사항이 적용되려면:

    • Linux 패키지 설치의 경우 GitLab을 재구성합니다.
    • 자체 컴파일 설치의 경우 GitLab을 재시작합니다.

로그인 페이지에 일반 로그인 양식 아래에 Sign in with: Shibboleth 아이콘이 표시됩니다. 아이콘을 선택하여 인증 프로세스를 시작합니다. Shibboleth 모듈 구성에 맞는 적절한 IdP 서버로 리다이렉트됩니다. 모든 것이 정상이면 GitLab으로 돌아가 로그인됩니다.

Shibboleth을 인증 공급자로 사용

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

특정 Shibboleth ID 공급자(IdP)를 통합하려면 GitLab SAML 통합을 사용하세요. GitLab에서 Shibboleth 지원을 활성화하려면 NGINX 대신 Apache를 사용하세요. Linux 패키지에서 제공하는 번들 NGINX를 사용하여 역방향 프록시 설정을 사용하는 다른 인스턴스에서 Shibboleth 서비스 공급자를 실행할 수 있습니다.

Note

특정 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를 활성화하려면:

  1. 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>
    
  2. Shibboleth URL을 재작성에서 제외합니다. RewriteCond %{REQUEST_URI} !/Shibboleth.ssoRewriteCond %{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'
    
  3. /etc/gitlab/gitlab.rb에 Shibboleth를 OmniAuth 공급자로 추가합니다. 사용자 속성은 Shibboleth 속성 매핑의 이름으로 헤더로 Apache 역방향 프록시에서 GitLab으로 전송됩니다. 따라서 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'
    
    # 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로 설정하는 것을 고려하세요.

  4. 변경 사항이 적용되려면:

    • Linux 패키지 설치의 경우 GitLab을 재구성합니다.
    • 자체 컴파일 설치의 경우 GitLab을 재시작합니다.

로그인 페이지에 일반 로그인 양식 아래에 Sign in with: Shibboleth 아이콘이 표시됩니다. 아이콘을 선택하여 인증 프로세스를 시작합니다. Shibboleth 모듈 구성에 맞는 적절한 IdP 서버로 리다이렉트됩니다. 모든 것이 정상이면 GitLab으로 돌아가 로그인됩니다.