全部產品
Search
文件中心

Identity as a Service:GitLab SSO By SAML

更新時間:Sep 24, 2024

本文為您介紹如何在IDaaS中通過SAML協議,配置Gitlab單點登入。

應用簡介

GitLab是一個用於倉庫管理系統的開源專案,使用Git作為代碼管理工具,並在此基礎上搭建起來的Web服務。

說明

GitLab支援多種SSO協議,本文檔介紹如何通過SAML協議對接GitLab。 GitLab SAML官網文檔:GitLaB官網文檔

操作步驟

一、配置IDaaS應用

請管理員前往應用 > 應用市場,搜尋到GitLab SAML應用。確認應用程式名稱後,即可完成添加流程。

image.png

建立應用成功後,會自動來到SSO單點登入配置頁。

配置SSO

image

您只需要將GitLab的服務地址填寫進來,注意服務地址不要以/結尾

其他選項保持預設,點擊儲存即可完成全部SSO配置。

說明

應用賬戶:預設使用IDaaS賬戶名作為應用登入標識。GitLab支援自動建立賬戶,單點登入時,若GitLab中不存在指定賬戶,則會直接建立出來。若希望靈活配置,請參考單點配置通用說明-應用賬戶進行配置。授權範圍:預設全員可用。若希望指定可訪問應用的IDaaS賬戶,請參考單點配置通用說明-應用賬戶進行配置。

配置頁面下方,包含了一系列GitLab完成配置所需要的參數。image.png

二、配置Gitlab

根據GitLab官網文檔,您需要在部署環境中編輯Gitlab設定檔。

# 若您使用 Omnibus 安裝 Gitlab,請使用命令:
sudo editor /etc/gitlab/gitlab.rb

#若您使用獨立安裝 Gitlab,請參考命令:
cd /home/git/gitlab
sudo -u git -H editor config/gitlab.yml

將如下資訊補充進設定檔(參數按照onmibus安裝方式提供。獨立安裝的參數與其一致,但格式不同,詳情參考GitLab官網文檔):

gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_link_saml_user'] = true
gitlab_rails['omniauth_providers']=[
  {
    name: 'saml', 
    args: {
      name: 'saml', 
      assertion_consumer_service_url:'http://gitlab.example.com/users/auth/saml/callback',
      issuer:'http://gitlab.example.com/users/auth/saml',
      idp_cert_fingerprint:'23:f8:77:03:fc:69:4c:da:ac:7e:4a:42:5a:87:5a:b3:ad:a8:d9:df',
      idp_sso_target_url:'https://example.aliyunidaas.com/login/app/app_mivpoqqmz7zrslxcmlyxa25me4/saml2/sso',
      name_identifier_format:'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
      attribute_statements: { 
        nickname: ['username'],
      },
    },
    label:'EIAM2.0'
  }
]

如上參數中大部分無需調整,僅有幾項配置需要修改:

參數名

說明

樣本

args.assertion_consumer_service_url

填寫GitLab的斷言消費地址,一般是GitLab服務地址後加 /users/auth/saml/callback

http://gitlab.example.com/users/auth/saml/c****ack

args.issuer

填寫GitLab的身份標識,一般是 GitLab服務地址後加 /users/auth/saml

http://gitlab.****ple.com/users/auth/saml

args.idp_sso_target_url

IdP SSO地址,從IDaaS獲得

https://example.aliyunidaas.com/login/app/app_mi****qmz7zrslxcmlyxa25me4/saml2/sso

args.idp_cert_fingerprint

Idp密鑰憑證指紋。請您下載認證後,通過檢查認證屬性,擷取認證SHA1指紋。可能擷取到的指紋資訊並未按照冒號 : 區隔,您可能需要手動處理。

23:f8:77:03:fc:69:4c:da:ac:7e:4a:42:5a:87:5a:b3:ad:a8:d****

配置完成後,使用命令重啟Gitlab。

# 若您使用 Omnibus 安裝 Gitlab,請使用命令重新載入設定檔並重啟服務:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

# 若您使用獨立安裝 Gitlab,請參考命令:
# 運行 systemd 的系統
sudo systemctl restart gitlab.target

# 允許 SysV init 的系統
sudo service gitlab restart

重啟後,在Gitlab登入頁下方,應出現使用阿里雲IDaaS賬戶登入。​

配置完成。

三、嘗試SSO

您已經可以嘗試GitLab SSO。​

本文中GitLab採用SAML協議,既支援IdP發起(即從阿里雲IDaaS發起)SSO,也支援SP發起(即從GitLab發起)SSO流程。

IdP發起

請用已授權使用GitLab的IDaaS賬戶,登入到IDaaS門戶頁,單擊頁面上GitLab表徵圖,發起SSO。

image.png

SP發起

請在匿名瀏覽器中,開啟Gitlab登入頁,單擊阿里雲 IDaaS,則會跳轉到IDaaS進行登入。如果使用者尚未登入IDaaS ,則IDaaS會引導使用者進行登入 。

image.png

IDaaS驗證使用者身份通過後,將直接登入到GitLab中。