「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
汎用認証サイトにSAML2.0を実装するため仕様を読む。
詳細 †
ロードマップ †
Technical Overview †
SAML2.0 の 技術概要
Profiles †
特定のユースケースを実現するための組み合わせ方を定義。
- セキュリティ情報を伝達するためのSAMLの豊富で柔軟な
構文を使用および制限するための一連の特定の規則を定義。
- 属性プロファイルの構文の側面をカバーするいくつかの関連する小さなスキーマ。
Bindings †
- SAMLアサーションと要求/応答プロトコル・メッセージを交換する方法を定義
- SAMLのメッセージを実際の通信プロトコル(HTTPなど)にマッピングする方法を定義。
Core(Assertions and Protocols) †
- 認証、属性、許可情報を記述したプロトコル・メッセージを伝達する
XMLエンコードアサーションを作成するための構文とセマンティクス
- アサーション用とプロトコル用のスキーマを定義する。
- 認証情報を表す用のXMLのスキーマ(SAML Assertions)
- メッセージ交換のプロトコル用のXMLのスキーマ(SAML Protocols)
SAML Metadata †
SPがIdPを利用するための情報を記述するためのXMLのスキーマを定義(IdPとSPの信頼関係を構築)。
Authentication Context †
認証メカニズムを記述する認証コンテキスト宣言を記述するための構文を定義
XML Signature Syntax and Processing †
XMLデジタル署名処理規則と構文
ユースケース †
SAML参加者 †
- 最低限、SAML交換は、以下のシステム・エンティティ間で行われる。
- アサーティング・パーティ(SAMLオーソリティ)
SAMLアサーションを行うシステム・エンティティ
- リライング・パーティ
受け取ったアサーションを使用するシステム・エンティティ
- リクエスタ / レスポンダ
- アサーティング・パーティとリライング・パーティは、SAMLリクエスタにもレスポンダにもなりうる。
- アサーティング・パーティの情報に依存するという回答側の意向は、アサーティング・パーティとの信頼関係に依存
- システム・エンティティのロール
- Identityプロバイダの役割(IdP)
- Serviceプロバイダの役割(SP)
- 属性機関の役割(...)
Web-SSO †
- マルチドメインWebシングルサインオン
- SAMLが適用される最も重要なユースケース
IDフェデレーション †
- 考慮しなければならない多くの質問
- ユーザーは、既存のローカルIDをサイトに持っているか?
- ユーザーの連合IDの確立と終了は静的か?動的か?
- ユーザーは連合IDの確立に明示的に同意する必要があるか?
- ユーザーに関するID属性を交換する必要があるか?
- IDフェデレーションは、SessionIDなどの識別子に依存するべきか?
- 情報が暗号化されるべきか?交換される情報のプライバシーは大きな関心事か?
- 連合ID機能を強化するための2つの機能
- フェデレーション名識別子の動的確立と管理をサポートする、新しい構成とメッセージ
- プライバシー保護の特徴を持った2つの新しいタイプの名前識別子
- プロバイダー間のユーザー情報の維持および更新
- 追加のフローは必要のないケース。
- 追加のフローが必要になるケース。
SAML V2.0メッセージ交換の外部で行われるケース
- IdPにおけるデータソースによって駆動され、
- SPに伝播されるバッチまたはオフラインのIDフィードを利用
アカウントリンク †
連合IDをローカルIDと関連付けるプロセスは、アカウントリンクと呼ばれる。
- IdP検出機能を使用し、SPからIdPにアカウントリンクするかしないかをユーザに問う。
- ユーザが、フェデレーションに同意するとIdPにリダイレクトされる。
- IdPでSPのフェデレーション名識別子が生成され、IdP上のアカウントにリンクされる。
- IdPでSPは、後続のトランザクションでこの識別子を使用してユーザを参照する。
- IdPからSPにリダイレクトされた後、この識別子をSPのローカル・アカウントに関連付ける。
※ 追加のサイトとアカウントリンクする場合は、
新たにフェデレーション名識別子を生成し、上記手順を繰り返す。
アーキテクチャ †
基本概念 †
- SAMLアサーション
アサーティング・パーティが真実であると主張するプリンシパルに関する
ステートメントを伝えるXMLスキーマによって定義されたアサーション。
- リライング・パーティからの要求に基づいてアサーティング・パーティによって作成される。
- 特定の状況下では、アサーションは未承諾の方法でリライング・パーティに配信できる。
- SAMLプロトコル
- SAMLのリクエスト / レスポンスを行うプロトコル。
- これにより、アサーションの入手や、IDマネジメントを行う。
- SAMLバインディング
参加者間でSAMLプロトコル・メッセージを転送するために下位レベルの
通信またはメッセージングプロトコル(HTTPまたはSOAPなど)を使用する方法
- SAMLプロファイル
- WebブラウザSSOプロファイルなどの特定のユースケースを満たすように定義される。
- SAMLアサーション、プロトコル、およびバインディングの内容に対する制約を定義する。
- プロトコルメッセージやバインディングを参照しない属性プロファイルもある。
(X.500 / LDAP、DCEなどの一般的な使用環境と一致する方法でアサーションを使用)
以下、参考 †
SAMLの仕様 †
SAML 2.0 †
- 以下を読むとイイらしい。
以下のQiitaを参考にすると、TechnicalOverview? をざっと眺めて、
どの Profile か選択してから Profile, binding, core と見ていくとイイらしい。
SAML 1.1 †
SAML 1.0 †
- SAMLのAssertionsのスキーマと要求/応答プロトコルを定めた仕様
- SAMLをSOAPとHTTPにバインドする仕組みとSSOプロファイルの規定
- SAMLの相互運用性を確保するために適合性要件をまとめたもの
Qiita †
SAML2.0ベースのSSOをわかりやすく解説してみる †
https://qiita.com/hanenao/items/27c1219d41828ec7532d
SAML2.0 ID プロバイダをつくるときの参考資料まとめ †
https://qiita.com/suemoc/items/276e709aa51936689254
SAML2.0でのシングルサインオン実装と戦うあなたに(.NET編) †
https://qiita.com/ea54595/items/e932644477a45070690b
OSSTech †
OpenSSO社内勉強会第二回 - SAML - †
https://www.osstech.co.jp/_media/techinfo/opensso/osstech-opensso-study-02-saml.pdf
クラウド時代の シングルサインオン †
https://www.osstech.co.jp/_media/techinfo/seminar/hbstudy-20110416-sso.pdf
SAML概要 †
- SAML : Secure Assertion Markup Lauguage
- 認証、認可、ユーザ属性情報などをXMLで送受信するための仕様
- Webアプリの”認証処理”を、外部で代行してもらうための仕組み。
SAML用語 †
- SP/IdP
- Identity Provider(IdP)
- 認証・認可の情報を提供する役割を担う。
- IdPで認証されたユーザーは SP のサービスにアクセスできるようになる。
- Service Provider(SP)
- シングルサインオン対象の Web アプリケーションなどを意味する。
- IdP が発行した認証・認可の情報に応じてクライアントにサービスを提供する。
- トラストサークル(Circle Of Trust)
- IdP と SP の間で結ばれた信頼関係を意味する。
- シングルサインオンを実現するためには、
IdP と SP との間で事前に信頼関係を結んでおく必要がある。
- IdP-SP 間でお互いを事前に登録し、お互いの証明書を交換する。
- 一つのトラストサークル内に複数の IdP が存在することもある
※同じ言葉でも、他のプロトコルでは意味が違うことがあるので注意
- アカウント連携
- IdP のアカウントと SP のアカウントを紐付ける
- NameID というユーザー識別子を IdP と SP 間で共有することで実現する
- NameID には以下のものが使用される
- メールアドレス
- ユーザー名
- GUIDなどの識別子
- X.509 の Subject
シーケンス †
- 認証シーケンス
- SP-initiated SSO
- ユーザーは最初にSPにアクセスし、IdPでの認証に成功した後に、再びSPにアクセスする。
- IdP-initiated SSO
- ユーザーは最初にIdPにアクセスし、IdPでの認証に成功した後にSPにアクセスする。
- SAML RelayState?というパラメタに遷移先情報を埋め込む。
- メッセージの送受信方法
- HTTP Redirect/HTTP POST Binding
- IdP-SP間の直接的な通信が発生しない
- ブラウザが通信を中継する(HTTP Redirect/HTTP POST を利用)
- HTTP Artifact Binding
- IdP-SP間の直接的な通信が発生する
- アサーションへのリファレンスである Artifact をブラウザを介してIdPとSPの間で送受信する。
IdPと SP は Artifact を利用して直接相手に SAML 認証要求/認証応答メッセージを問い合わせる。
- Artifact のデータサイズは小さい。
SAMLアサーション †
事前に IdP の証明書を SP に登録しておく必要がある(JWTみたいなもの)
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
Version="2.0"
ID="s2907181983bc6f588aeb045fca183d671224506ec"
IssueInstant="2009-11-18T08:28:09Z">
アサーション発行者
アサーションのデジタル署名
ユーザー識別子(NameID)
</saml:Assertion>
認証要求・認証応答 †
OpenAMのSAML利用時の認証方式の指定について †
https://www.osstech.co.jp/_media/techinfo/openam/saml_authncontext_20150417.pdf
Cybozu †
SAML認証ができるまで Cybozu Inside Out サイボウズエンジニアのブログ †
http://developer.cybozu.co.jp/tech/?p=4224
SAMLはSecurity Assertion Markup Languageの略で、OASIS3によって策定された、
異なるセキュリティドメイン間で、認証情報を連携するためのXMLベースの標準仕様。
SAML用語 †
- 認証情報を提供する側をIdentity Provider(IdP)
- 認証情報を利用する側をService Provider(SP)
SAMLの仕様 †
- SAML Core
認証情報を表すXMLのスキーマ(SAML Assertions)と、
メッセージ交換のプロトコル(SAML Protocols)を定義。
- SAML Bindings
SAMLのメッセージを実際の通信プロトコル(HTTPなど)にマッピングする方法を定義。
- SAML Profiles
特定のユースケースを実現するための組み合わせ方を定義。
- SAML Assertions
- SAML Protocols
- SAML Bindings
- SAML Metadata
IdPやSPに関する情報を表現するためのXMLのスキーマを定義(IdPとSPの信頼関係を構築)。
Wikipedia †
en †
ja †
OASIS †
OASISは「SGML Open」として1993年、
主に「研修活動を通じたSGMLの採用促進を目的として」結成された、
SGMLツール業者の業界団体。
SAML2.0 †
Reference †
用語集 †
- SAML仕様全体を通して使用される用語を規範的に定義
- 可能な限り、用語は他のセキュリティ用語集で定義されている用語と一致させてある。
適合要件 †
セキュリティとプライバシーに関する考慮事項 †
SAMLのセキュリティとプライバシーの特性について分析/説明。
Security †
http://www.oasis-open.org/committees/security/.
- SAMLExecOvr?
- エグゼクティブの概要
- SAMLとその主な利点についてエグゼクティブレベルで簡単に説明(非規範的な文書)。
- SAMLMDV1x
SAML V1.x OASIS規格をサポートするSAMLエンティティ
を記述するためのSAML V2.0メタデータ構成体の使用
- SAMLMDExtQ
クエリ要求者用のSAMLメタデータ拡張
- SAMLProt3P
- サードパーティの要求に対するSAMLプロトコルの拡張を定義
- SAMLプロトコルの拡張意図された応答受信者以外のエンティティによる要求を容易にするため
- SAMLX509Attr
X.509認証ベースシステム用のSAML属性共有プロファイル
- SAMLXPathAttr?
属性名としてXPath URIを使用するためのSAML属性の使用をプロファイル
- SAMLErrata
- 正誤表
- SAML準拠ソフトウェアの実装者によって使用される可能性のある解釈へのガイド
- SAML V2.0規格の矛盾や不明確である点の解釈を明確化する。
WSS †
http://www.oasis-open.org/committees/wss/
- WSS
Web Services Security: SOAP Message Security 1.1 (WS-Security 2004).
- WSSSAML
Web Services Security: SAML Token Profile 1.1. OASIS WSS-TC, February 2006.
XML(W3C) †
Else †
参考 †
Tags: :IT国際標準, :認証基盤, :クレームベース認証