このトピックでは、Identity as a Service (IDaaS) コンソールで GitLab 用の Security Assertion Markup Language (SAML) ベースのシングルサインオン (SSO) を構成する方法について説明します。
概要
GitLab は、倉庫管理システムに使用されるオープンソースプロジェクトです。 GitLab は Git をコード管理ツールとして使用し、Web インターフェースを使用してパブリックまたはプライベートプロジェクトにアクセスします。
GitLab は複数の SSO プロトコルをサポートしています。このトピックでは、SAML プロトコルを使用します。 SAML ベースの SSO の詳細については、GitLab のドキュメントをご参照ください。
手順
ステップ 1: IDaaS でアプリケーションを追加する
管理者として IDaaS コンソールにログインします。 EIAM ページで、必要なインスタンスをクリックします。左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 アプリケーション ページで、[アプリケーションの追加] をクリックして [マーケットプレイス] タブに移動します。次に、[gitlab SAML] を検索し、[アプリケーションの追加] をクリックします。 アプリケーション名を確認し、[追加] をクリックします。アプリケーションが追加されます。

アプリケーションを追加すると、自動的に [SSO] タブにリダイレクトされます。
SSO を構成する

GitLab サービスアドレスパラメーターを構成します。パラメーター値はスラッシュ (/) で終わることはできません。
その他のパラメーターにはデフォルト設定を使用し、[保存] をクリックします。 SSO の構成は完了です。
アプリケーションユーザー名: デフォルト値は IDaaS ユーザー名です。 GitLab はジャストインタイムプロビジョニングをサポートしています。特定のアプリケーションアカウントを使用して GitLab への SSO アクセスを実装し、その特定のアプリケーションアカウントが GitLab に存在しない場合、GitLab は自動的にアプリケーションアカウントを作成します。アプリケーションアカウントの構成方法の詳細については、「SSO の構成」トピックの「アプリケーションアカウント」セクションをご参照ください。 承認: デフォルトでは、[承認] パラメーターは [すべてのユーザー] に設定されています。 GitLab アプリケーションにアクセスする IDaaS アカウントを指定する方法の詳細については、「SSO の構成」トピックの「アプリケーションアカウント」セクションをご参照ください。
[サインイン] タブの [アプリケーション設定] セクションで、GitLab で SSO を構成するために必要なパラメーターの値を取得できます。

ステップ 2: GitLab で SSO を構成する
デプロイ環境で GitLab 構成ファイルを変更します。 詳細については、GitLab ドキュメントのOpenID Connect OmniAuthをご参照ください。
# Omnibus を使用して GitLab をインストールした場合は、次のコマンドを実行します。
sudo editor /etc/gitlab/gitlab.rb
# GitLab インストールパッケージをダウンロードして GitLab をインストールした場合は、次のコマンドを実行します。
cd /home/git/gitlab
sudo -u git -H editor config/gitlab.yml構成ファイルに次の内容を追加します。パラメーターの設定は、Omnibus を使用して GitLab をインストールする場合と同じです。 GitLab インストールパッケージをダウンロードして GitLab をインストールする場合、または Omnibus を使用して GitLab をインストールする場合、パラメーターの設定は同じですが、特定のパラメーターの名前と順序が異なります。 詳細については、GitLab ドキュメントのOpenID Connect OmniAuthをご参照ください。
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 の Assertion Consumer Service (ACS) URL。ほとんどの場合、GitLab エンドポイントに /users/auth/saml/callback を追加することで URL を取得できます。 | 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 | ID プロバイダー (IdP) の SSO URL。 IDaaS コンソールの [サインイン] タブの [アプリケーション設定] セクションから IdP の SSO URL を取得できます。 | https://example.aliyunidaas.com/login/app/app_mi****qmz7zrslxcmlyxa25me4/saml2/sso |
args.idp_cert_fingerprint | IdP の公開鍵証明書のフィンガープリント。証明書をダウンロードした後、証明書の属性を確認し、証明書の Secure Hash Algorithm (SHA)-1 フィンガープリントを取得します。取得したフィンガープリント情報は、コロン (:) で区切られていない場合があります。この場合は、手動でコロン (:) を追加する必要があります。 | 23:f8:77:03:fc:69:4c:da:ac:7e:4a:42:5a:87:5a:b3:ad:a8:d**** |
構成が完了したら、次のいずれかのコマンドを使用して GitLab を再起動します。
# Omnibus を使用して GitLab をインストールした場合は、次のコマンドを実行して GitLab 構成ファイルを再読み込みし、GitLab を再起動します。
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
# GitLab インストールパッケージをダウンロードして GitLab をインストールした場合は、次のいずれかのコマンドを実行して GitLab を再起動します。
# systemd を実行しているシステムの場合は、次のコマンドを実行して GitLab を再起動します。
sudo systemctl restart gitlab.target
# SysV init を実行しているシステムの場合は、次のコマンドを実行して GitLab を再起動します。
sudo service gitlab restartGitLab の再起動後、GitLab ログインページの下部に AliyunIDaaS でログイン ボタンが表示されます。
SSO の構成は完了です。
ステップ 3: GitLab の SSO をテストする
上記の手順を実行した後、GitLab の SSO をテストできます。
このトピックでは、SAML プロトコルを使用して GitLab の SSO を有効にします。 GitLab は、IdP 起点の SSO とサービスプロバイダー起点 (SP 起点) の SSO をサポートしています。 IdP 起点の SSO では、ユーザーは IDaaS ポータルページでログインを開始します。 SP 起点の SSO では、ユーザーは GitLab アプリケーションのログインページでログインを開始します。
IdP 起点の SSO
GitLab へのアクセス権限が付与されている IDaaS アカウントを使用して IDaaS ポータルにログインします。ページ上の [gitlab] アイコンをクリックして、SSO ログインを開始します。

SP 起点の SSO
匿名ブラウザで GitLab ログインページを開き、[aliyunidaas でログイン] をクリックします。ログインのために IDaaS ページにリダイレクトされます。 IDaaS にログインしていない場合は、プロンプトに従って IDaaS にログインします。

認証に合格すると、GitLab にリダイレクトされます。