κΉλ©μ OmniAuthλΌλ λͺ¨λμ λ΄μ₯νμ¬ SSO(Single Sign On)μ μ 곡ν©λλ€. μ΄λ‘ μΈν΄ λ§€μ° λ€μν μΈμ¦ νλ‘λ°μ΄λλ₯Ό μ§μνκ³ μμ΅λλ€. https://docs.gitlab.com/ee/integration/omniauth.html#supported-providers
μ΄ λ¬Έμμμλ μ΄ λͺ©λ‘ μ€ λ§μ΄ν¬λ‘μννΈμ κ³μ μ μ΄μ©ν μ μλ "Azure V2 νλ‘λ°μ΄λ"μμ SSO μ€μ μ μ€λͺ
ν©λλ€. μ¬κΈ°μμ SSOλ MS κ³μ μ κ°μ§κ³ κΉλ©μ μ μ λ₯Ό λ±λ‘νκ±°λ κΈ°μ‘΄ λ±λ‘λ μ μ μ μ°κ²°ν΄μ λ‘κ·ΈμΈμ ν μ μλλ‘ νλ κ²μ
λλ€.
μ격
μ΄νμ μμ
μ νλλ° μμ΄μλ λ€μμ μ‘°κ±΄μ΄ νμν©λλ€.
- MS κ³μ μ κ΄λ¦¬μ κΆν 보μ
- κΉλ© μλ²μ sshλ‘ μ μν μ μκ³ root κΆνμΌλ‘ λͺ
λ Ήμ μ€νν μ μλ μν
Azure Active Directory μ€μ
κΉλ©μμ MS κ³μ μ λν SSOλ₯Ό μ΄μ©νλ€λ κ²μ MSμ μΈμ¦ νλ‘λ°μ΄λλ₯Ό μ΄μ©νλ€λ μκΈ°μ κ°μ΅λλ€. μ΄ μΈμ¦ νλ‘λ°μ΄λλ Azure Active Directory(μ΄ν Azure AD)μ κΈ°λ₯μΌλ‘ μ 곡λ©λλ€. μ΄ κΈ°λ₯μ μ΄μ©νκΈ° μν΄μλ λ¨Όμ μ΄ν리μΌμ΄μ
μ λ±λ‘ν΄μΌ ν©λλ€. μμΈν μ€μ μ https://docs.microsoft.com/ko-kr/azure/active-directory/develop/quickstart-register-appμ μ°Έμ‘°νκΈ° λ°λλλ€.
μ€μ μ κΈ°λ³Έ νλ©΄μ λ€μμ λ¨κ³λ‘ λ€μ΄κ° μ μμ΅λλ€.
- Azure Portalμ λ‘κ·ΈμΈ
- "Azure Active Directory κ΄λ¦¬" ν΄λ¦
μ± λ±λ‘
μ±λ±λ‘μ λ€μμ κ³Όμ μ κ±°μΉ©λλ€.
- λ©λ΄μμ "μ± λ±λ‘"μ μ ν
- "μ λ±λ‘"μ ν΄λ¦
- μ΄ν리μΌμ΄μ
μ λ±λ‘
- μ΄λ¦μλ "κΉλ©" μ
λ ₯. (λ€λ₯Έ μ΄λ¦λ κ°λ₯)
- μ§μλλ κ³μ μ νμλ "μ΄ μ‘°μ§ λλ ν°λ¦¬μ κ³μ λ§(ITMSGλ§ - λ¨μΌ ν
λνΈ)" μ ν
- 리λλ μ
URIμλ μΉμ μ ννκ³ https://gitlab.example.com/users/auth/azure_activedirectory_v2/callback μ
λ ₯
ν΄λΌμ΄μΈνΈ μνΈ μμ±
μ±λ±λ‘μ λ§μΉλ©΄ μμΈ μ€μ νλ©΄μ΄ λμ΅λλ€. λ€μμ κ³Όμ μ κ±°μ³μ ν΄λΌμ΄μΈνΈ μνΈλ₯Ό μμ±ν μ μμ΅λλ€.
- λ©λ΄μμ "μΈμ¦μ λ° μνΈ" μ ν
- "μ ν΄λΌμ΄μΈνΈ μνΈ" μ ν
- "μ€λͺ
"κ³Ό "λ§λ£μκ°"μ μ
λ ₯ νΉμ νμΈνκ³ μΆκ° ν΄λ¦
μ κ³Όμ μ κ±°μΉλ©΄ μνΈκ° μμ±λλλ° μ΄λ κ°μ 볡μ¬ν΄μ λ©λͺ¨μ₯ λ±μ 보κ΄ν΄ λμ΄μΌ ν©λλ€. νλ©΄ μ ν νμλ λμ΄μ κ°μ λ³Ό μ μμ΅λλ€. (보μμμ μ΄μ )
API μ¬μ©κΆν μ€μ
SSO λ‘κ·ΈμΈ κ³Όμ μμ κΉλ©μ΄ νμν μ 보λ₯Ό μ 곡νλλ‘ μ€μ ν΄ μ£Όμ΄μΌ ν©λλ€. κΉλ©μ email, openid, profile μ λν μ κ·Ό κΆνμ΄ νμν©λλ€. λ€μμ κ³Όμ μ ν΅ν΄ μ¬μ© κΆνμ λΆμ¬ν©λλ€.
- λ©λ΄μμ "API μ¬μ© κΆν" μ ν
- "κΆν μΆκ°" μ ν
- "Microsoft Graph" μ ν
- "μμλ κΆν" μ ν
- "OpenId κΆν"μμ email, openid, profile μ ν
- 맨λ°μ "κΆνμΆκ°" λ²νΌ ν΄λ¦
κΆνμ μΆκ°ν μ΄ν "ITMSGμ λν κ΄λ¦¬μ λμ νμ©"μ ν΄λ¦νκ³ κΆν λΆμ¬μ λμν΄μ£Όμ΄μΌ ν©λλ€. μ΄ μμ
μ ITMSG κ·Έλ£Ήμ λν κ΄λ¦¬μ κΆνμ΄ μμ΄μΌ κ°λ₯ν©λλ€.
μ¬κΈ°κΉμ§ μ€μ νλ©΄ Azure ADμ λν λͺ¨λ μ€μ μ λμ΄ λ©λλ€. μ΄ μ€μ μ μν΄ μμ±λ μ 보 μ€ "κ°μ" μμ λ³Ό μ μλ "μ ν리μΌμ΄μ
(ν΄λΌμ΄μΈνΈ) ID"μ "λλ ν°λ¦¬(ν
λνΈ) ID", ν΄λΌμ΄μΈνΈ μνΈ μμ±μμ μμ±ν μνΈλ κΉλ© μ€μ μμ μ΄μ©λκΈ° λλ¬Έμ λ°λ‘ λ©λͺ¨ν΄ λμμΌ ν©λλ€.
κΉλ© μ€μ
μ΄μ κΉλ©μμ Azure ADλ₯Ό μ΄μ©ν λ‘κ·ΈμΈμ νμ±ν μμΌ μ£Όμ΄μΌ ν©λλ€. /etc/gitlab/gitlab.rb νμΌμ λ€μμ μ€μ μ μΆκ°ν΄ μ€λλ€.
gitlab_rails['omniauth_allow_single_sign_on'] = ['azure_activedirectory_v2']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_providers'] = [
{
"name" => "azure_activedirectory_v2",
"args" => {
"client_id" => "[μ ν리μΌμ΄μ
(ν΄λΌμ΄μΈνΈ) ID]",
"client_secret" => "[ν΄λΌμ΄μΈνΈ μνΈ]",
"tenant_id" => "[λλ ν°λ¦¬(ν
λνΈ) ID]"
}
}
]
μ€μ μ΄ λ³κ²½λλ©΄,
sudo gitlab-ctl reconfigure
λͺ
λ Ήμ΄λ‘ μ€μ μ λ°μν΄ μ€λλ€.
μμΈν λ΄μ©μ https://docs.gitlab.com/ee/integration/azure.html#microsoft-azure-oauth2-omniauth-provider-v2 μ°Έμ‘°.
[Ubuntu] μ°λΆν¬ μλ² μΈν
[GitLab] κΉλ© μ°λΆν¬(Ubuntu)μλ²μ μΈν
[GitLab] κΉλ© λ‘κ·ΈμΈ νλ©΄ 컀μ€ν°λ§μ΄μ§
[GitLab] κΉλ© SSLμ μ© λ° μλκ°±μ