我是开发人员,尝试使用SAML 2将我的IdP与Office 365集成。
我在Logon用户的第一步中取得了成功。但是,我对使用IdP-Initiated流的Sign Out(LogoutRequest
)有很多疑问,怀疑与Sign Out的端点有关。为了开发Logon,我遵循了此元数据文件中的端点和配置:
https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml
Ti发送LogoutRequest,元数据提供与登录相同的URL:
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://login.microsoftonline.com/login.srf"/>
我按如下方式创建LogoutRequest:
<saml2p:LogoutRequest Destination="https://login.microsoftonline.com/login.srf"
ID="_263311dc-ce0a-21c3-90d3-2e1312cde124"
IssueInstant="2015-01-13T13:51:57.978Z"
Version="2.0"
xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">https://my-enterprise-configuration-value</saml2:Issuer>
<saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
SPNameQualifier="https://my-enterprise-configuration-value"
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">my-configuration-name-id-in-o365</saml2:NameID>
<samlp:SessionIndex>_session-index-generate-in-saml-response</samlp:SessionIndex>
</saml2p:LogoutRequest>
所以我使用Signature的属性生成相同的LogoutRequest,但是我得到了同样的错误(SessionIndex不存在......)。
我最大的疑问与Destination,NameID Format和SPNameQualifier有关。
目的地的正确值是多少?我在其他地方看到我应该使用https://login.microsoftonline.com/common/saml2
插入目的地,我也看到https://login.microsoftonline.com/<tenant-azure-id>/saml2
。
那么,即使我的目标应用是以上注释之一,我仍然必须将我的POST请求发送到https://login.microsoftonline.com/login.srf
吗?或者我应该将POST发送到与目的地相同的本地位置?
NameID格式与上传的SAMLResponse(我发送到Office 365)相同。
SPNameQualifier已使用Issuer(ImmutableID)中设置的相同值。
我在帖子中发送的数据示例:
SAMLRequest=nVLdSsMwFH6Vkvt0TWs3F9bCYAiFKerEC29GSE9roE1qTirz2bzwkXwF025DHajgTchJvvP9nGSBom3ijq9NbXp3C089oAtWflFaOGV0Rh6d65BPJo2plQ5bJa1BUzmjG6UhlKY93KCtSFCsMrKNp0nCWCmphEjQmMmEzqMyoTGwhMWyBBafeShiD4VGJ7TLSByxlEaMsuSOJTxlPJ2F89n5AwnuweJoJA4jEuzaRiPfu85IbzU3AhVyLVpA7iTfLC/X3EN5Z40z0jQkX4xwPgrarwy/EwhEsMMMSP7++nYcg9+2LxS0A9tZhUCl0ZWqezuOiz6LpofF5KviUf/KKxSr4MLYVrifpVnIxhNV0mqEcmiFapZlaQGRBJvrgeimF42qFNjPB/rTFvlXdk/7nWtAU+9OaWqSaXoMu4+XB2Pajm+8WY8udAm7fIv7yvf4ktagwZPBQDGgqU/WGY2HwZ00BweFk1+afwA=
SigAlg=http://www.w3.org/2000/09/xmldsig#rsa-sha1
RelayState=data_sended_for_microsoft_in_login_value
Signature=UrlEncoded(Base64Encoded(SAMLRequest))&UrlEncoded(Base64Encoded(SigAlg))
我也在尝试在管理工具中找到在我的应用程序中配置注销的位置,但还没找到。
答案 0 :(得分:0)
SigAlg
和Signature
属性,而应在SAML2 XML消息本身中将签名作为XML签名包括在内。这两个属性仅在HTTP重定向绑定中使用。