この章の目的

  • OpenID Connect との違いをざっくりと理解する
  • Single Sign-On の理解の準備知識とする

概要

  • 標準仕様は RFC7522 で定められている
  • Security Assertion Markup Language の略称であり、XML をベースとした ID 連携 の仕組み
  • Single Sign-On を実現できる
  • ユーザの情報を付与できるので、それに応じた 認可 も行えるプロトコル

関連する要素・流れ

  • SAML 1.0 策定 ( 2002 )
  • SAML 2.0 公開 ( 2005 )
  • OAuth 2.0 リリース ( RFC6749 / 2012 )
  • OpenID Connect 1.0 公開 ( OpenID Connect Core 1.0 / 2014 )

これ以降は特に明記しない限り SAML は SAML 2.0 を指すものとする

  • JWT は JSON Web Token なので JSON をベースとした 書式
  • SAML は XML をベースとした 書式プロトコル

概略

プロバイダ

  • 認証情報を提供する側を Identity Provider ( IdP ) と呼ぶ
  • 認証情報を利用する側を Service Provider ( SP ) と呼ぶ

2つのフロー

フローはかなりシンプル

図は調べればたくさん出るので割愛

SP Initiated

ユーザがまず SP にアクセスし、SP が SAML 認証要求 を作り IdP にリダイレクトする

IdP Initiated

ユーザはまず IdP にログインし、IdP が SP にアクセスするための SAML アサーション を作成する

OpenID Connect と SAML の違い

OpenID Connect

  • 比較的新しい
  • クライアント間の連携は同意確認があり、連携する/しないはユーザが判断する
  • JSON ベース
  • 連携方法や時代背景的に SNS 連携とかに使われることが多い
  • SAML に比べて機能がまだ少ない
  • とはいえ一般的なユースケースには十分対応でき、シンプル
  • Single Sign-On については後ろの章で

SAML

  • 比較的古い
  • クライアント間の連携に同意の確認はなく、連携する/しないにユーザは介入しない
  • XML ベース
  • 連携方法や時代背景的に官公庁のシステムや企業内で使われていることが多い
  • 多機能
  • カスタマイズには専門知識が要求される
  • Single Sign-On については後ろの章で

違いのまとめ

  • OpenID Connect が OAuth の拡張仕様だったのに対し、OpenID Connect と SAML はどちらかがどちらかを拡張したものではない
  • 認証認可 の技術的またビジネス的な要件に基づいて、どちらを使うか考える
  • OpenID Connect も SAML も Single Sign-On を実現できるが、Single Sign-On にもパターンがたくさんあるので自分の状況と合わせて判断する

この章の参考資料

  1. SAMLとは |クラウド型シングルサインオン・アクセスコントロール(IDaaS) OneLogin - サイバネット
  2. 今更ですがSAMLのおさらい - Qiita
  3. What is OpenID vs SAML? Find out the differences - Auth0