「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>SAML]] * 目次 [#b2a7541f] #contents *概要 [#ifcd76fe] 汎用認証サイトにSAML2.0を実装するため作成中。 *参考 [#f7980123] -SAML 実装仕様書 第Ⅰ編 概要、用語及び参考文献 第 1.0 版~ 医療分野共通認証基盤整備コンソーシアム~ https://www.keieiken.co.jp/medit/pdf/240423/7-data.pdf -SAML認証に関する自分なりのまとめ - なんとな~くしあわせ?の日記~ https://nantonaku-shiawase.hatenablog.com/entry/2016/07/13/081053 *Qiita [#i80f170a] **SAML2.0ベースのSSOをわかりやすく解説してみる [#s11590a8] https://qiita.com/hanenao/items/27c1219d41828ec7532d **SAML2.0 ID プロバイダをつくるときの参考資料まとめ [#ab412874] https://qiita.com/suemoc/items/276e709aa51936689254 *OSSTech [#i952f8dc] **OpenSSO社内勉強会第二回 - SAML - [#d78049dd] https://www.osstech.co.jp/_media/techinfo/opensso/osstech-opensso-study-02-saml.pdf **クラウド時代の シングルサインオン [#bc874894] https://www.osstech.co.jp/_media/techinfo/seminar/hbstudy-20110416-sso.pdf ***SAML概要 [#g7fa118a] -SAML : Secure Assertion Markup Lauguage -認証、認可、ユーザ属性情報などを[[XML]]で送受信するための仕様 -Webアプリの”認証処理”を、外部で代行してもらうための仕組み。 ***SAML用語 [#t41413c4] -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 ***シーケンス [#of7ce633] -認証シーケンス --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アサーション [#gb7ace7c] 事前に 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> ***認証要求・認証応答 [#uc6a393c] -認証要求(AuthnRequest)~ SPがIdPに対して、ユーザーの認証情報(アサーション)を要求するメッセージ <samlp:AuthnRequest ID=”xxx” Version=”2.0” Destination=”http://idp.osstech.co.jp/idp/sso”> 認証要求情報 </samlp:AuthnRequest> -認証応答(Response)~ IdPがSPにユーザーの認証情報(アサーション)を送付するメッセージ <samlp:Response ID=”xxx” Version=”2.0” Destination”http://sp.osstech.co.jp/sp/sso”> < saml:Assertion ...> アサーション </saml:Assertion> </samlp:AuthnRequest> **OpenAMのSAML利用時の認証方式の指定について [#l06dcf33] https://www.osstech.co.jp/_media/techinfo/openam/saml_authncontext_20150417.pdf *Cybozu [#a583f88d] **SAML認証ができるまで Cybozu Inside Out サイボウズエンジニアのブログ [#b96fa2da] http://developer.cybozu.co.jp/tech/?p=4224 SAMLはSecurity Assertion Markup Languageの略で、OASIS3によって策定された、~ 異なるセキュリティドメイン間で、認証情報を連携するための[[XML]]ベースの標準仕様。 ***SAML用語 [#n5a6bfc5] -認証情報を提供する側をIdentity Provider(IdP) -認証情報を利用する側をService Provider(SP) ***SAMLの仕様 [#ge5ed415] -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国際標準]], [[:認証基盤]], [[:クレームベース認証]]