このセットアップでは、wso2is を idp として使用し、2 つのアプリケーションを sp として使用しています。アプリケーションの 1 つは java、spring-security-saml-extension を使用し、もう 1 つは php と simplesamlphp を使用します。SSO は正常に機能していますが、SLO を機能させることができません。
私がすることは:
- 両方の SP にログイン
- 最初の sp でログアウトを行う
- wso2 ログを見て、wso2is がログアウト要求を 2 番目の SP に送信したことを確認します。
- 2 番目の SP が logoutrequest の読み取りに失敗する
simplesamlphp エラー メッセージ:
SimpleSAML_Error_BadRequest: BADREQUEST('%REASON%' => 'Received message on logout endpoint without issuer.')
idp によって発行された saml2 LogoutRequest:
<?xml version="1.0" encoding="UTF-8"?>
<saml2p:LogoutRequest ID="ljknoccfdhjcgelcpmbicffooeokboficpggcmpi" IssueInstant="2014-04-08T06:45:19.944Z" NotOnOrAfter="2014-04-08T06:50:19.944Z" Reason="urn:oasis:names:tc:SAML:2.0:logout:user" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">EXAMPLE.AT/test01@domain.com</saml2:NameID>
<saml2p:SessionIndex>5f14fc6e-1c31-42e1-b7c2-e1501bf400a8</saml2p:SessionIndex
</saml2p:LogoutRequest>
以下の saml2 SLO-Profile 仕様では、4.4.4 章の 1294 行目に明確に記載されています。
<Issuer> 要素が存在する必要があり、要求元エンティティの一意の識別子が含まれている必要があります。
私が理解しているように、ここでは Idp として機能する wso2is が発行者である必要がありますが、メッセージにその ID を含めることができません。
私が間違っていることについてのヒントはありますか?これが wso2is のバグだとは思えません!
http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf