LoginSignup
8
4

More than 3 years have passed since last update.

シングルサインオン(SSO)とは

シングルサインオン(英語:Single Sign-On、略称:SSO)は、一度のユーザ認証処理によって独立した複数のソフトウェアシステム上のリソースが利用可能になる特性である。この特性によって、ユーザはシステムごとにユーザIDとパスワードの組を入力する必要がなくなる。
シングルサインオン Wikipedia

SSOってなにが便利なの

image.png
https://www.ogis-ri.co.jp/pickup/themistruct/note/note_sso01.html

  • 複数のシステムを利用する際に、都度パスワードを入力する手間を省略できる。
  • システム利用者のパスワード忘れ、パスワード入力ミスによるアカウントロック、パスワード再発行といった手間を削減できる。
  • システム利用者のパスワード関連の問題に対応するための人員(情報システム部のヘルプデスクなど)、コストを削減できる。
  • (SAML [security assertion markup language, 認証を行う際の規格] などを用いることで)第三者にパスワード情報を渡すことなく、第三者のシステムへのサインオンが可能となる。このため、パスワード漏洩リスクを低減することにつながる。

SSOのデメリットは?

  • シングルサインオン製品自体に不正アクセスされると、シングルサインオン製品の先にあるシステム・サービス全てに不正アクセスできてしまう。
  • 製品によって費用が高額となる。特に従業員数が多い企業にとっては、年間億単位の負担が求められる場合がある。
  • リバースプロキシ型のように、一点にアクセスが集中する方式の場合は、シングルサインオンの認証速度に遅延がみられる場合がある。

SSOの実現方式

よく使われるのは下記の3つ。

  • エージェント方式
  • リバースプロキシ方式
  • フェデレーション方式

参考
https://www.ogis-ri.co.jp/pickup/themistruct/note/note_sso01.html

今回はSAMLを用いたフェデレーション方式でやります。

SMALの長所

  • 信頼性が高く、設定・構築が簡単
  • セキュアな通信・やり取りが可能認証情報/認可情報もSAMLでやりとりされるので、Webアプリケーション側で情報を持たなくて良い

SAMLの短所

  • インターネット上のWebアプリケーション、クラウドサービスならSAMLは当たり前のように対応しているが、社内の業務システムでSAMLに対応している、というパターンはほぼない。そのため、対応していないなら、既存Webアプリケーションの改修が必須
  • SSLを使用する関係で、証明書の用意が必要

SAML SSOの仕組み

SAMLとは、Security Assertion Markup Languageの略称であり、OASISによって策定された異なるインターネットドメイン間でユーザー認証を行うための XML をベースにした標準規格です。
SAMLによる認証フロー
image.png
https://boxil.jp/mag/a2950/

  • SP(Service Provider)
    WEBサービスの提供側、認証情報を利用する側。
    この人アクセスしたがっているから認証してあげてね、とお願いする側です。
    例:Office, Jira, Salesforce

  • Idp(Identity Provider)
    認証情報を提供する側のこと。
    この人ログインできたからサービス利用させて大丈夫だよ、ちなみにこんな情報持っている人だよ、と教えてあげる側です。
    例:Okta, AzureAD, OneLogin

環境構築

今回はIdP側をOkta、SP側をJiraでSAML SSOのアドオンを使用して環境構築する。

IdPをOktaにした理由
image.png
https://www.okta.com/resources/access-management-leader-gartner-magic-quadrant/

環境

OktaのユーザーをJiraに同期する

参考:https://wiki.resolution.de/doc/usersync/latest/okta-configuration

Okta側:
1.管理者権限を持つユーザーとしてOktaにログイン。
2.右上の管理 ボタンをクリック。
3.セキュリティにカーソルを合わせ、APIをクリック。
4.トークンをクリック。
5.トークンの作成をクリック。
6.トークンに名前を付け、トークンを作成 をクリック。
7.トークン値をコピー、一度しか表示されないので注意。

Jira側:
1.SAML SSOアドオンをインストール
2.右上の歯車>ユーザー管理>User Sync
3.Add Connector>OKTA Connector
4.名前を設定し、「Okta Domain」を挿入し、「API Token」のトークン値を入力します。
5.Sync

SSOの設定

参考:https://wiki.resolution.de/doc/saml-sso/latest/jira/setup-guides-for-saml-sso/okta/okta-with-user-sync#id-.OktawithUserSyncv3.3.x-ConfiguretheSAMLSSOApp

Tips

ユーザーの履歴、グループ、チケットが保持されるように、内部ディレクトリ(またはLDAPなど)をUserSyncディレクトリに移行する

参考:https://wiki.resolution.de/doc/usersync/latest/knowledge-base/how-to-migrate-an-internal-directory-to-usersync

usernameがJiraインターナルとOkta側で一致するユーザーのみ移行可能。
最初のUsersync時のみ引き継ぎ処理が行われる。

※Usersyncディレクトリへ移行すると、パスワードを保持していないためパスワードログインができなくなります。
^問題になるのはUsersyncディレクトリの管理者アカウント。Websudoでパスワード入力が必要なので管理者画面を触れなくなる。

対応策

Jiraのユーザー名を、OktaのログインIDのドメイン部分を省略したものにしたい

Transformations
https://wiki.resolution.de/doc/usersync/latest/knowledge-base/how-to-migrate-an-internal-directory-to-usersync#id-.HowtoMigrateanInternalDirectorytoUserSyncv1.1.x-Transformations
image.png

Oktaの特定のグループのユーザーのみJiraと同期する

https://wiki.resolution.de/doc/usersync/latest/knowledge-base/how-to-migrate-an-internal-directory-to-usersync#id-.HowtoMigrateanInternalDirectorytoUserSyncv1.1.x-Localgroups
image.png

インターナルの特定のグループのみUsersyncディレクトリに移行する

全インターナルグループを保持する場合
image.png

Oktaのカスタム属性をJiraの属性とマッピングしたい

Oktaにカスタム属性を追加する
https://support.okta.com/help/s/article/How-to-create-a-new-custom-attribute-in-Okta

image.png

Usersync の設定画面でJIRA の Username とOkta の profile.JiraID をマッピング
image.png

SAML SSOの認証要素を変更する場合は、Okta とJira で設定を合わせる

前提条件:
Usersync の設定画面でJIRA の Username とOkta の profile.JiraID をマッピングして同期済
SP側(JIRA)はUsernameで認証
IdP側(Okta)はカスタム属性(JiraID)で認証

Oktaの設定
Okta認証要素をJiraIDに設定する

image.png
https://developer.okta.com/docs/reference/okta-expression-language/#okta-user-profile

Jiraの設定
Authentication AttributeをUsername(OktaのJiraID)にする。
image.png

 Just-In-Time Provisioning

https://wiki.resolution.de/doc/saml-sso/latest/jira/setup-guides-for-saml-sso/okta/okta-with-just-in-time-provisioning
UsersyncなしでSAML SSOの情報でJiraにユーザーを作成してログインを許可する

  • ユーザーがログインしないとJira内にユーザーが作成されない

JiraにOktaの属性情報を追加したい

Attribute MappingでJiraのユーザープロパティに属性を登録できる
JIRA.PROP.{key} key は任意。
image.png

keyがプロパティとして登録される。
image.png

参考
シングルサインオン (SSO) とは何か
https://boxil.jp/mag/a2950/
https://www.ogis-ri.co.jp/pickup/themistruct/note/note_sso01.html

8
4
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
8
4