[SSO] SAML でハマりがちなこと
シングルサインオン(SSO)は、言ってみれば SAML という認証情報を POST するだけなのだが、この肝となる SAML がむしろ一番ハマりやすい気がする。気を付けないといけないポイントは以下の通りだと思う。
- 日付はすべて標準時。
SAML に埋め込む日付はすべて標準時でなければいけない。 - 認証の有効期限
すべての発効日は、NotOnOrAfter や InResponseTo の間である必要がある。 - 証明書のパスワード
証明書を XML 署名する際に、パスワードは正しものをセットしなければいけない。ただ、証明書自体の有効期限は切れていても認証可能のようである。 - XML 署名の方式
.NETのサンプルソースを使った場合だけだろうが、Google Appsでは RSAKeyValue (RSA 公開鍵) で署名するのだが、Salesforce では KeyInfoX509Data (X.509 形式) で証明する。Salesforce では BASE64 形式でエンコードしたものを POST しなければならなかったため、これはその差異ということだろうか……。