「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
汎用認証サイトにSAML2.0を実装するため作成中。
参考 †
Qiita †
SAML2.0ベースのSSOをわかりやすく解説してみる †
https://qiita.com/hanenao/items/27c1219d41828ec7532d
SAML2.0 ID プロバイダをつくるときの参考資料まとめ †
https://qiita.com/suemoc/items/276e709aa51936689254
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の信頼関係を構築)。
Tags: :IT国際標準, :認証基盤, :クレームベース認証