9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitLabにログインする際AzureのSSOを利用する方法(SAML)

Posted at

構築した経緯

セキュリティのためAzureでアカウント一元管理したい&Azureにログインを任せたいっていう要望が来たため

検証環境

  • Azure(ActiveDirectoryの管理)
  • Vagrant+VirtualBoxで作ったCentOS7環境でGitLab

前提

GitLabに関してはVagrant+VirtualBoxで作成(CentOS7 ホストが192.168.10.210 443を22443にポートフォワード)

Azure側

Azureポータルサイト 表示をクリック

image.png

サイドバーのエンタープライズアプリケーションをクリック

image.png

新しいアプリケーションをクリックして管理用アプリケーション作成する(ここは会社の管理アカウントでないとできないため私作ってないので割愛)

image.png

作ったアプリケーションをクリック後 シングルサインオンをクリック

(なんか初期アクセス時UI違った気がする…SAMLをクリックした気がする)
image.png

基本的なSAML構成を下記のとおりにする(※識別子は白で塗りつぶしてますが入力はしてます)&識別子はメモっておく

image.png

SAML署名証明書の証明書(Base64)をDLしておく&拇印はメモっておく

image.png

ログインURLとログアウトURLをメモっておく

image.png

ユーザーとグループの割当でログインするユーザーを登録しておく(詳細割愛)

image.png

GitLab側

インストールに関しては割愛

セルフマネージドGitLabをインストールを参考にしたらよいかと

前提

Azureでログインする際のメールアドレス(今回のサンプルではhoge@example.jp)をGitLab側のユーザー作成において登録してることを前提にしてます(GitLab側のユーザーパスワードは覚えておく必要はないです)

SAML設定

SAML OmniAuth Providerを参考にする

/etc/gitlab/gitlab.rb(一部抜粋)
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
gitlab_rails['omniauth_block_auto_created_users'] = true
gitlab_rails['omniauth_auto_link_saml_user'] = true
gitlab_rails['omniauth_providers'] = [
  {
    name: 'saml',
    args: {
             assertion_consumer_service_url: 'https://192.168.10.210:22443/users/auth/saml/callback',
             idp_cert_fingerprint: '拇印を2文字単位で:を入れたやつ',
             idp_sso_target_url: 'メモったログインURL',
             idp_slo_target_url: 'メモったログアウトURL',
             name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
           },
    label: 'Company Login' # optional label for SAML login button, defaults to "Saml"
  }
]

ログインしてみる

ログイン画面にCompany Loginがあるので押すとAzure認証ページに飛ぶ
image.png

これだけだと

image.png
になる罠(メールアドレスとってこれねっていう感じ)

ChromeのSAML-trace拡張機能で調べると

        <AttributeStatement>
            <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
                <AttributeValue>hoge@example.jp</AttributeValue>
            </Attribute>
        </AttributeStatement>

ってなってたので

/etc/gitlab/gitlab.rb(一部抜粋)
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
gitlab_rails['omniauth_block_auto_created_users'] = true
gitlab_rails['omniauth_auto_link_saml_user'] = true
gitlab_rails['omniauth_providers'] = [
  {
    name: 'saml',
    args: {
             assertion_consumer_service_url: 'https://192.168.10.210:22443/users/auth/saml/callback',
             idp_cert_fingerprint: '拇印を2文字単位で:を入れたやつ',
             idp_sso_target_url: 'メモったログインURL',
             idp_slo_target_url: 'メモったログアウトURL',
             idp_cert: 'DLした証明書(Base64)の中身をコピペ',
             issuer: 'メモった識別子',
             name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
             attribute_statements: { email: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'] }
           },
    label: 'Company Login' # optional label for SAML login button, defaults to "Saml"
  }
]

でログインできた

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?