シングルサインオン ~ SAML認証方式 ~

■ はじめに

業務でシングルサインオン(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