Set up GitLab-CE ให้ login ด้วย Azure AD (Ver. จับมือทำ)

Nattapat Pruangpharch
MFess Experiences
Published in
3 min readApr 14, 2019

เรื่องมันเริ่มจากว่า ตัวผู้เขียนเองนั้นต้องคอยสร้าง user เวลามีสมาชิกทีมใหม่เพิ่มเข้ามา แล้วก็ต้องสร้างทั้ง user email ของ Microsoft และก็ยังต้องมาเพิ่ม user ใน gitlab อีก จึงเกิดความขี้เกียจขึ้นและผุดไอเดียขึ้นได้ว่า ในเมื่อ Azure AD เราก็ได้มาตอนที่ซื้อ office365 อยู่แล้วนี่ ทำไมไม่ทำให้มันเป็น single sign on ไปเลยจะได้ไม่ต้องเสียเวลาไปเพิ่ม user ทั้งสองที่ แล้วไหนในอนาคตอาจจะมีระบบเพิ่มขึ้นมาอีก ไม่พูดเยอะละ ไปดูวิธีกันเลยดีกว่า…

ทำความเข้าใจกันก่อน…
1. สำหรับบทความนี้เหมาะกับทีมที่ใช้ office 365 อยู่แล้ว หรือใช้บริการ Azure AD
2. การติดตั้ง Gitlab-CE ของทีมผู้เขียนนั้น ใช้บริการ one-click apps ของ digital ocean (ก็คนมันขี้เกียจลงอ้ะ) สำหรับผู้ที่ติดตั้งเอง อาจจะมีวิธีการที่แตกต่างออกไป เดี๋ยวจะทิ้ง link ไว้ให้นะครับ ^^

เริ่มกันเลย.

เข้าสู่ระบบ Azure AD admin center หรือจะเข้าจาก Azure portal แล้วเลือก menu Azure Active Directory ก็ได้ครับ

จะได้หน้าตาแบบนี้มาสำหรับผู้ที่เข้าจาก admin center

ไปที่ menu Enterprise Applications

คลิก +New Applications จะได้หน้าตาแบบนี้มา กดเลือก Application you’re developing

มันจะไล่ให้เราไป register applications ก่อน 555+ ก็ให้เรากดไปตาม link ที่ระบุไว้ได้เลยครับ

กดแล้วจะได้แบบนี้ กด New application registration ได้เล้ย

กรอกข้อมูลตามนี้ แล้วกด create โลด

จะได้ข้อมูลตามนี้มา แก้ไข Reply URLs เป็นตามนี้ซะหน่อย https://gitlab.mycompany.com/users/auth/azure_oauth2/callback

แก้ไข App ID URLs ซะหน่อย เช่น https://mycompany.onmicrosoft.com/gitlab

ต่อมาก็คือการสร้าง secret key เพื่อใช้งานกับ gitlab ตามนี้เล้ย อย่าลืมจดเอาไว้นะครับ มันให้ดูรอบเดียวนะเออ

  1. กดที่ Keys
  2. ตั้งชื่อ Keys ของเรา เลือกวันที่ key นี้หมดอายุ
  3. เมื่อกด Save key จะแสดงออกมา (จดไว้ๆ)

ถึงขั้นตอนนี้เราจะได้ key มาสองตัวก็คือ
1. Client ID = Application ID
2. Client Secret = Secret key ที่สร้างมาเมื่อกี้
เราจะตามหาอีก 1 key ก็คือ TENANT ID ตามนี้เล้ย

กดตรงนี้เลยจย้าาา

Copy ตรงนี้มาให้หมดโลด เราก็จะได้ key ครบตามที่ต้องการแล้วครับ

ขั้นตอนถัดไป ssh เข้าไปที่ gitlab server ของเราได้เลย จากนั้นเรียก config file ของ gitlab มาโลด

sudo editor /etc/gitlab/gitlab.rb

จากนั้น config ค่าตามนี้เลยครับ

gitlab_rails[‘omniauth_enabled’] = true
gitlab_rails[‘omniauth_allow_single_sign_on’] = true
gitlab_rails[‘omniauth_auto_link_ldap_user’] = true
gitlab_rails[‘omniauth_block_auto_created_users’] = false
gitlab_rails[‘omniauth_providers’] = [
{
“name” => “azure_oauth2”,
“args” => {
“client_id” => “client_id”,
“client_secret” => “client_secret”,
“tenant_id” => “tenant_id”,
}
}
]

gitlab_rails[‘omniauth_block_auto_created_users’] = false

สำหรับค่านี้นั้น ถ้าตั้งเป็น true ไว้เราจะต้องไปสร้าง user ใน gitlab ก่อน ถ้าเกิดเป็น false มันจะสร้าง user ใหม่ให้อัตโนมัติ (แต่ถ้ามันไม่สร้างอัตโนมัติมันก็ไม่ตอบโจทย์น่ะสิ)

จากนั้นสั่ง Reconfigure gitlab ได้เลยครับ

sudo gitlab-ctl reconfigure

แต่นแต๊นนนน…. ถ้า gitlab restart เสร็จแล้ว หน้า login ของเราก็ควรจะมีแบบนี้

มีปุ่ม Azure Oauth2 เพิ่มขึ้นมาแล้นนน

ถึงขั้นตอนนี้ก็เป็นอันเสร็จสิ้นแล้วครับ สำหรับการ setup สำหรับ user เก่าที่อยากจะ sign in ด้วย Azure AD ด้วย ถ้าเกิด email ใน user ของ gitlab ตรงกันก็สามารถใช้งานได้ทันทีครับ

สำหรับตรงนี้พอเท่านี้ก่อน คราวหน้าจะมาสอนในกรณีที่ เอ๊ะ แต่ฉันไม่ได้อยากให้ทุกคนใน AD ชั้นเข้าได้นะ AD ชั้นก็มีพวก BA หรือคนอื่นๆ ที่ไม่ได้ใช้ gitlab ซะหน่อย อดใจรอนะครับ บ้ายบาย…

[ที่มา] https://docs.gitlab.com/ee/integration/azure.html

--

--