■ はじめに
業務でシングルサインオン(Single Sign-On; SSO)のSAML認証について 扱ったので、メモしておく。
目次
【1】シングルサインオン(SSO) 1)認証方式 【2】SAML (Security Assertion Markup Language) 【3】SAML認証方式の構成要素 1)SP(Service Provider) 2)IdP (Identify Provider) 【4】SAML認証方式による認証の流れ 1)登場人物 2)認証の流れ
【1】シングルサインオン(SSO)
* 一回(Single)のユーザ認証を行うことで、 様々なシステムを以降の認証なしで利用できる仕組み
1)認証方式
* シングルサインオンの認証方式は、以下の通り。 ~~~~~~~~~~~~~ [1] 代行認証方式 [2] リバースプロキシ方式 [3] エージェント方式 [4] ケルベロス認証方式(Kerberos) [5] SAML認証方式(フェデレーション方式) <= 今回は、こちらを扱う などなど ~~~~~~~~~~~~~
補足:IDフェデレーション
* 以下の関連記事を参照のこと
https://dk521123.hatenablog.com/entry/2022/10/18/185246
【2】SAML (Security Assertion Markup Language)
* 読み方は「サムル」 * シングルサインオンを実現するときに使われる XML ベースの標準規格
Assertion (アサーション)
cf. Assertion = 断定 * 標準規格「RFC7522」より抜粋
https://datatracker.ietf.org/doc/html/rfc7522
The Assertion, an XML security token, is a fundamental construct of SAML that is often adopted for use in other protocols and specifications. アサーション (XMLセキュリティトークン) は、 他のプロトコルや仕様内で使用するためのよく導入されるSAMLの 基本的構造です => SAMLにおける「アサーション」とは XMLベースのユーザ認証情報(トークン)といえる。
【3】SAML認証方式の構成要素
* SAML認証方式の構成要素としては、以下の通り。 1)SP(Service Provider) 2)IdP (Identify Provider)
1)SP(Service Provider)
* サービス提供者 => オンラインショップなどのWebサーバ をイメージ
2)IdP (Identify Provider)
* ID プロバイダ。こいつがメイン。 * シングルサインオンでの認証情報を行ってくれるサービス => 認証して問題がなければ、アサーションを発行
補足:「d」が小文字の理由
* IDP(Intruder Detection & Protection)などの 他の用語との誤用を防ぐため
【4】SAML認証方式による認証の流れ
* ごちゃごちゃ書いているが、あんま大したことやってない => ググって動画の説明(例えば、以下のサイト)や説明図をみてみると、 理解できると思う
https://youtu.be/KUd4xsOAGZ8?t=237
* ポイントとしては、「認証後、IDプロバイダがアクセストークンとして アサーションを発行する」(以下「2)認証の流れ」の[5])ってことだと思う
1)登場人物
[1] ユーザ [2] サービスプロバイダ (SP) [3] IDプロバイダ (IdP)
2)認証の流れ
[1] 「ユーザ」が「サービスプロバイダ」にアクセスする [2] 「サービスプロバイダ (SP)」は認証がまだ済んでいない場合 「IDプロバイダ (IdP)」へリダイレクト [3] 「IDプロバイダ (IdP)」は「ユーザ」へログイン画面を表示 [4] 「ユーザ」は「IDプロバイダ (IdP)」の提供してもらったログイン画面に 認証情報を入力 [5] 「IDプロバイダ (IdP)」は認証が問題なければ、アクセストークンとして アサーションを発行する [6] アサーション付きのレスポンスが「サービスプロバイダ (SP)」に 受領され、それが正規なアサーションであれば(※) ユーザ認証されていると判断し、「ユーザ」はログインできる
※正規なアサーションかどうかの判断
* 事前に「サービスプロバイダ (SP)」と「IDプロバイダ (IdP)」で 設定しておく必要がある
参考文献
https://www.mobi-connect.net/blog/single-sign-on/
https://cybersecurity-jp.com/column/38350
動画
https://www.youtube.com/watch?v=KUd4xsOAGZ8
関連記事
IAM ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2017/02/26/231046
トークン認証 ~ JWT ~
https://dk521123.hatenablog.com/entry/2022/07/20/000000
トークン認証 ~ OAuth ~
https://dk521123.hatenablog.com/entry/2022/07/21/000000
IDフェデレーション
https://dk521123.hatenablog.com/entry/2022/10/18/185246