InfoGrab Docs

Microsoft Azure를 OAuth 2.0 인증 공급자로 사용

요약

Microsoft Azure OAuth 2.0 OmniAuth 공급자를 활성화하고 Microsoft Azure 자격 증명으로 GitLab에 로그인할 수 있습니다. GitLab을 처음으로 Azure/Entra ID와 통합하는 경우 Microsoft ID 플랫폼(v2.0) 엔드포인트를 사용하는 OpenID Connect 프로토콜을 구성하세요.

Microsoft Azure OAuth 2.0 OmniAuth 공급자를 활성화하고 Microsoft Azure 자격 증명으로 GitLab에 로그인할 수 있습니다.

Note

GitLab을 처음으로 Azure/Entra ID와 통합하는 경우 Microsoft ID 플랫폼(v2.0) 엔드포인트를 사용하는 OpenID Connect 프로토콜을 구성하세요.

Generic OpenID Connect 구성으로 마이그레이션#

GitLab 17.0 이상에서는 azure_oauth2를 사용하는 인스턴스가 Generic OpenID Connect 구성으로 마이그레이션해야 합니다. 자세한 내용은 OpenID Connect 프로토콜로 마이그레이션을 참조하세요.

Azure 애플리케이션 등록#

Microsoft Azure OAuth 2.0 OmniAuth 공급자를 활성화하려면 Azure 애플리케이션을 등록하고 클라이언트 ID와 시크릿 키를 얻어야 합니다.

  1. Azure 포털에 로그인합니다.

  2. Azure Active Directory 테넌트가 여러 개인 경우 원하는 테넌트로 전환합니다. 테넌트 ID를 메모합니다.

  3. 애플리케이션을 등록하고 다음 정보를 제공합니다:

    • GitLab 설치의 Azure OAuth 콜백 URL이 필요한 리디렉션 URI: https://gitlab.example.com/users/auth/azure_activedirectory_v2/callback.
    • Web으로 설정해야 하는 애플리케이션 유형.
  4. 클라이언트 ID와 클라이언트 시크릿을 저장합니다. 클라이언트 시크릿은 한 번만 표시됩니다.

    필요한 경우 새 애플리케이션 시크릿을 만들 수 있습니다.

client IDclient secret은 OAuth 2.0과 관련된 용어입니다. 일부 Microsoft 문서에서는 이 용어를 Application IDApplication Secret이라고 합니다.

API 권한(범위) 추가#

애플리케이션을 만든 후 웹 API를 노출하도록 구성합니다. Microsoft Graph API에서 다음 위임된 권한을 추가합니다:

  • email
  • openid
  • profile

또는 User.Read.All 애플리케이션 권한을 추가합니다.

GitLab에서 Microsoft OAuth 활성화#

Note

새 프로젝트의 경우 Microsoft ID 플랫폼(v2.0) 엔드포인트를 사용하는 OpenID Connect 프로토콜을 사용해야 합니다.

  1. GitLab 서버에서 구성 파일을 엽니다.

    • Linux 패키지 설치의 경우:

      sudo editor /etc/gitlab/gitlab.rb
      
    • 소스에서 컴파일한 설치의 경우:

      cd /home/git/gitlab
      
      sudo -u git -H editor config/gitlab.yml
      
  2. azure_activedirectory_v2를 단일 사인온(SSO) 공급자로 추가하도록 일반 설정을 구성합니다. 이를 통해 기존 GitLab 계정이 없는 사용자에 대한 Just-In-Time 계정 프로비저닝이 가능합니다.

  3. 공급자 구성을 추가합니다. <client_id>, <client_secret>, <tenant_id>를 Azure 애플리케이션을 등록할 때 얻은 값으로 바꿉니다.

    • Linux 패키지 설치의 경우:

      gitlab_rails['omniauth_providers'] = [
        {
          "name" => "azure_activedirectory_v2",
          "label" => "Provider name", # optional label for login button, defaults to "Azure AD v2"
          "args" => {
            "client_id" => "<client_id>",
            "client_secret" => "<client_secret>",
            "tenant_id" => "<tenant_id>",
          }
        }
      ]
      
      
    • 대체 Azure 클라우드의 경우 args 섹션에서 base_azure_url을 구성합니다. 예를 들어 Azure Government Community Cloud(GCC)의 경우:

      gitlab_rails['omniauth_providers'] = [
        {
          "name" => "azure_activedirectory_v2",
          "label" => "Provider name", # optional label for login button, defaults to "Azure AD v2"
          "args" => {
            "client_id" => "<client_id>",
            "client_secret" => "<client_secret>",
            "tenant_id" => "<tenant_id>",
            "base_azure_url" => "https://login.microsoftonline.us"
          }
        }
      ]
      
    • 소스에서 컴파일한 설치의 경우:

      v2.0 엔드포인트의 경우:

      - { name: 'azure_activedirectory_v2',
          label: 'Provider name', # optional label for login button, defaults to "Azure AD v2"
          args: { client_id: "<client_id>",
                  client_secret: "<client_secret>",
                  tenant_id: "<tenant_id>" } }
      

      대체 Azure 클라우드의 경우 args 섹션에서 base_azure_url을 구성합니다. 예를 들어 Azure Government Community Cloud(GCC)의 경우:

      - { name: 'azure_activedirectory_v2',
          label: 'Provider name', # optional label for login button, defaults to "Azure AD v2"
          args: { client_id: "<client_id>",
                  client_secret: "<client_secret>",
                  tenant_id: "<tenant_id>",
                  base_azure_url: "https://login.microsoftonline.us" } }
      

    선택적으로 args 섹션에 OAuth 2.0 범위에 대한 scope 매개변수를 추가할 수도 있습니다. 기본값은 openid profile email입니다.

  4. 구성 파일을 저장합니다.

  5. Linux 패키지를 사용하여 설치한 경우 GitLab을 재구성하거나 소스에서 직접 컴파일한 경우 GitLab을 재시작합니다.

  6. GitLab 로그인 페이지를 새로 고칩니다. 로그인 양식 아래에 Microsoft 아이콘이 표시되어야 합니다.

  7. 아이콘을 선택합니다. Microsoft에 로그인하고 GitLab 애플리케이션을 승인합니다.

기존 GitLab 사용자가 새 Azure AD 계정에 연결하는 방법에 대한 자세한 내용은 기존 사용자에 대해 OmniAuth 활성화를 참조하세요.

문제 해결#

사용자 로그인 배너 메시지: Extern UID has already been taken#

로그인 시 Extern UID has already been taken 오류가 발생할 수 있습니다.

이 문제를 해결하려면 Rails 콘솔을 사용하여 계정에 연결된 기존 사용자가 있는지 확인합니다:

  1. extern_uid를 찾습니다:

    id = Identity.where(extern_uid: '<extern_uid>')
    
  2. 해당 extern_uid에 연결된 사용자 이름을 찾기 위해 내용을 출력합니다:

    pp id
    

extern_uid가 계정에 연결된 경우 해당 사용자 이름으로 로그인할 수 있습니다.

extern_uid가 어떤 사용자 이름에도 연결되지 않은 경우, 이는 고스트 레코드를 발생시키는 삭제 오류로 인한 것일 수 있습니다.

extern uid를 해제하기 위해 ID를 삭제하려면 다음 명령을 실행합니다:

 Identity.find('<id>').delete

Microsoft Azure를 OAuth 2.0 인증 공급자로 사용

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

Microsoft Azure OAuth 2.0 OmniAuth 공급자를 활성화하고 Microsoft Azure 자격 증명으로 GitLab에 로그인할 수 있습니다. GitLab을 처음으로 Azure/Entra ID와 통합하는 경우 Microsoft ID 플랫폼(v2.0) 엔드포인트를 사용하는 OpenID Connect 프로토콜을 구성하세요.

Microsoft Azure OAuth 2.0 OmniAuth 공급자를 활성화하고 Microsoft Azure 자격 증명으로 GitLab에 로그인할 수 있습니다.

Note

GitLab을 처음으로 Azure/Entra ID와 통합하는 경우 Microsoft ID 플랫폼(v2.0) 엔드포인트를 사용하는 OpenID Connect 프로토콜을 구성하세요.

Generic OpenID Connect 구성으로 마이그레이션#

GitLab 17.0 이상에서는 azure_oauth2를 사용하는 인스턴스가 Generic OpenID Connect 구성으로 마이그레이션해야 합니다. 자세한 내용은 OpenID Connect 프로토콜로 마이그레이션을 참조하세요.

Azure 애플리케이션 등록#

Microsoft Azure OAuth 2.0 OmniAuth 공급자를 활성화하려면 Azure 애플리케이션을 등록하고 클라이언트 ID와 시크릿 키를 얻어야 합니다.

  1. Azure 포털에 로그인합니다.

  2. Azure Active Directory 테넌트가 여러 개인 경우 원하는 테넌트로 전환합니다. 테넌트 ID를 메모합니다.

  3. 애플리케이션을 등록하고 다음 정보를 제공합니다:

    • GitLab 설치의 Azure OAuth 콜백 URL이 필요한 리디렉션 URI: https://gitlab.example.com/users/auth/azure_activedirectory_v2/callback.
    • Web으로 설정해야 하는 애플리케이션 유형.
  4. 클라이언트 ID와 클라이언트 시크릿을 저장합니다. 클라이언트 시크릿은 한 번만 표시됩니다.

    필요한 경우 새 애플리케이션 시크릿을 만들 수 있습니다.

client IDclient secret은 OAuth 2.0과 관련된 용어입니다. 일부 Microsoft 문서에서는 이 용어를 Application IDApplication Secret이라고 합니다.

API 권한(범위) 추가#

애플리케이션을 만든 후 웹 API를 노출하도록 구성합니다. Microsoft Graph API에서 다음 위임된 권한을 추가합니다:

  • email
  • openid
  • profile

또는 User.Read.All 애플리케이션 권한을 추가합니다.

GitLab에서 Microsoft OAuth 활성화#

Note

새 프로젝트의 경우 Microsoft ID 플랫폼(v2.0) 엔드포인트를 사용하는 OpenID Connect 프로토콜을 사용해야 합니다.

  1. GitLab 서버에서 구성 파일을 엽니다.

    • Linux 패키지 설치의 경우:

      sudo editor /etc/gitlab/gitlab.rb
      
    • 소스에서 컴파일한 설치의 경우:

      cd /home/git/gitlab
      
      sudo -u git -H editor config/gitlab.yml
      
  2. azure_activedirectory_v2를 단일 사인온(SSO) 공급자로 추가하도록 일반 설정을 구성합니다. 이를 통해 기존 GitLab 계정이 없는 사용자에 대한 Just-In-Time 계정 프로비저닝이 가능합니다.

  3. 공급자 구성을 추가합니다. <client_id>, <client_secret>, <tenant_id>를 Azure 애플리케이션을 등록할 때 얻은 값으로 바꿉니다.

    • Linux 패키지 설치의 경우:

      gitlab_rails['omniauth_providers'] = [
        {
          "name" => "azure_activedirectory_v2",
          "label" => "Provider name", # optional label for login button, defaults to "Azure AD v2"
          "args" => {
            "client_id" => "<client_id>",
            "client_secret" => "<client_secret>",
            "tenant_id" => "<tenant_id>",
          }
        }
      ]
      
      
    • 대체 Azure 클라우드의 경우 args 섹션에서 base_azure_url을 구성합니다. 예를 들어 Azure Government Community Cloud(GCC)의 경우:

      gitlab_rails['omniauth_providers'] = [
        {
          "name" => "azure_activedirectory_v2",
          "label" => "Provider name", # optional label for login button, defaults to "Azure AD v2"
          "args" => {
            "client_id" => "<client_id>",
            "client_secret" => "<client_secret>",
            "tenant_id" => "<tenant_id>",
            "base_azure_url" => "https://login.microsoftonline.us"
          }
        }
      ]
      
    • 소스에서 컴파일한 설치의 경우:

      v2.0 엔드포인트의 경우:

      - { name: 'azure_activedirectory_v2',
          label: 'Provider name', # optional label for login button, defaults to "Azure AD v2"
          args: { client_id: "<client_id>",
                  client_secret: "<client_secret>",
                  tenant_id: "<tenant_id>" } }
      

      대체 Azure 클라우드의 경우 args 섹션에서 base_azure_url을 구성합니다. 예를 들어 Azure Government Community Cloud(GCC)의 경우:

      - { name: 'azure_activedirectory_v2',
          label: 'Provider name', # optional label for login button, defaults to "Azure AD v2"
          args: { client_id: "<client_id>",
                  client_secret: "<client_secret>",
                  tenant_id: "<tenant_id>",
                  base_azure_url: "https://login.microsoftonline.us" } }
      

    선택적으로 args 섹션에 OAuth 2.0 범위에 대한 scope 매개변수를 추가할 수도 있습니다. 기본값은 openid profile email입니다.

  4. 구성 파일을 저장합니다.

  5. Linux 패키지를 사용하여 설치한 경우 GitLab을 재구성하거나 소스에서 직접 컴파일한 경우 GitLab을 재시작합니다.

  6. GitLab 로그인 페이지를 새로 고칩니다. 로그인 양식 아래에 Microsoft 아이콘이 표시되어야 합니다.

  7. 아이콘을 선택합니다. Microsoft에 로그인하고 GitLab 애플리케이션을 승인합니다.

기존 GitLab 사용자가 새 Azure AD 계정에 연결하는 방법에 대한 자세한 내용은 기존 사용자에 대해 OmniAuth 활성화를 참조하세요.

문제 해결#

사용자 로그인 배너 메시지: Extern UID has already been taken#

로그인 시 Extern UID has already been taken 오류가 발생할 수 있습니다.

이 문제를 해결하려면 Rails 콘솔을 사용하여 계정에 연결된 기존 사용자가 있는지 확인합니다:

  1. extern_uid를 찾습니다:

    id = Identity.where(extern_uid: '<extern_uid>')
    
  2. 해당 extern_uid에 연결된 사용자 이름을 찾기 위해 내용을 출력합니다:

    pp id
    

extern_uid가 계정에 연결된 경우 해당 사용자 이름으로 로그인할 수 있습니다.

extern_uid가 어떤 사용자 이름에도 연결되지 않은 경우, 이는 고스트 레코드를 발생시키는 삭제 오류로 인한 것일 수 있습니다.

extern uid를 해제하기 위해 ID를 삭제하려면 다음 명령을 실행합니다:

 Identity.find('<id>').delete