メモ : Enhanced Client or Proxy (SAML)
メモ。包括的な解説はここではやらない
現在のWorking Draft 6
https://www.oasis-open.org/committees/download.php/47214/sstc-saml-ecp-v2.0-wd06.pdf
ECPの概念的な解説は特に以下のページが分かりやすい
https://wiki.shibboleth.net/confluence/display/SHIB2/ECP
以下の5.2も解説している。個人の印象で言うとやや周りくどい。
https://www.oasis-open.org/committees/download.php/27819/sstc-saml-tech-overview-2.0-cd-02.pdf
Technical Overviewだとそのようには書いてないのだが (WAPとかある)、煎じ詰めるとShibbolethの上記のページの以下の説明がいちばんしっくりくる:
これを動作させるには、もちろんクライアントがなければならないが、SPとIdpも新仕様を満たす必要がある。例えば、ブラウザなら「IdPに飛んで認証されてきなさい」というHTTPリダイレクトを処理できる。しかしECPのクライアントではそうはいかない (HTML読めないし)。その代わりに、Basic認証などを用いてクライアントとIdPがやり取りする必要があるが、これはIdPに新しい実装を求めている。
ラフに何が必要かはオリジナルの仕様の3. Conformance を読めば分かる。
既存のSAMLのやり取りに追加で情報を突っ込むことで実現するので、互換性はある。
SAMLのTechnical Overviewにも既に記載されているが現時点 (2012-11-21) ではWorking Draft 6の段階 (仕様は固まっていない)。それもあってか、サポートしている実装は多くない。SimpleSAMLphpは実装している様子がない。Shibbolethは一応対応している模様。
宿題
現在のWorking Draft 6
https://www.oasis-open.org/committees/download.php/47214/sstc-saml-ecp-v2.0-wd06.pdf
ECPの概念的な解説は特に以下のページが分かりやすい
https://wiki.shibboleth.net/confluence/display/SHIB2/ECP
以下の5.2も解説している。個人の印象で言うとやや周りくどい。
https://www.oasis-open.org/committees/download.php/27819/sstc-saml-tech-overview-2.0-cd-02.pdf
Technical Overviewだとそのようには書いてないのだが (WAPとかある)、煎じ詰めるとShibbolethの上記のページの以下の説明がいちばんしっくりくる:
ECP is a SAML acronym that stands for "Enhanced Client or Proxy". The name is historical; the basic point of an enhanced client is that it's not a browser. The ECP profile is an adaptation of the SAML profile used for Browser SSO with the parts that were designed around the limitations of a browser removed.
(私訳な意訳) ECPはSAML界隈の頭字語で Enhanced Client or Proxy を意味する。名前は歴史的なもので誤解を招く。Enhanced client と言った時に重要なのは、それがブラウザではない、という点だ。ECPは、ブラウザを用いたSSO (Single Sign On)のために利用されている SAMLから、ブラウザの制約に縛られて設計された構成要素を取り除いたものだ。ECPで対象になる(ブラウザでないけどSSOをSAMLでやりたい)クライアントは、HTTPをしゃべれたりCookieに対応できたりする必要があるものの、既存のSPやIdPと連携してSAMLを使えるようになる。なお「取り除いた」というよりは「その部分を使わない方法を追加した」が正しい気はする。
これを動作させるには、もちろんクライアントがなければならないが、SPとIdpも新仕様を満たす必要がある。例えば、ブラウザなら「IdPに飛んで認証されてきなさい」というHTTPリダイレクトを処理できる。しかしECPのクライアントではそうはいかない (HTML読めないし)。その代わりに、Basic認証などを用いてクライアントとIdPがやり取りする必要があるが、これはIdPに新しい実装を求めている。
ラフに何が必要かはオリジナルの仕様の3. Conformance を読めば分かる。
既存のSAMLのやり取りに追加で情報を突っ込むことで実現するので、互換性はある。
SAMLのTechnical Overviewにも既に記載されているが現時点 (2012-11-21) ではWorking Draft 6の段階 (仕様は固まっていない)。それもあってか、サポートしている実装は多くない。SimpleSAMLphpは実装している様子がない。Shibbolethは一応対応している模様。
宿題
- Holder of Key
- Channel Binding