我正在使用SAML开发SSO,而我的IdP是Azure。
我在IDP启动流程方面遇到问题。在SAML响应中,我总是得到此NameID:
<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">
bMFy2VsLxPyxxxxxx.....
</NameID>
这是我期望的:
<NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">
[email protected]
</NameID>
我总是得到nameid-format:persistent
而不是nameid-format:emailAddress
。尽管我已将“名称标识符格式”设置为“电子邮件地址”:
注意,在SP发起的流程上,我可以通过指定NameIDPolicy来让Azure发送电子邮件地址:
<samlp:AuthnRequest
Destination="xxx"
ID="_f59f9e55bc165eae92e4269909e274aeb78f88f3"
IssueInstant="2020-03-04T10:49:51Z" Version="2.0"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer>xxxxxxx</saml:Issuer>
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"/>
</samlp:AuthnRequest>
但是,在IdP发起的流程上,AuthnRequest没有NameIDPolicy
<samlp:AuthnRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="F84D888AA3B44C1B844375A4E8210D9E" Version="2.0"
IssueInstant="2020-03-04T10:03:47.953Z" IsPassive="false"
AssertionConsumerServiceURL="xxxxxx"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ForceAuthn="false">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">xxxxxx</Issuer>
</samlp:AuthnRequest>
我想知道我的Azure应用程序配置是否不正确。
通过有关IdP发起流的方式,我认为IdP将创建SAML响应并直接发送到SP的ACS端点。为什么仍然存在SAML请求? (在Azure上测试应用程序时,我会看到下载SAML请求的选项)。从应用程序面板(office.com)打开应用程序时,我也可以看到SAML请求。 (使用chrome扩展名saml-chrome-panel)
尝试在NameIDPolicy
中使用IdP发起的流程
<samlp:AuthnRequest
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="id6c1c178c166d486687be4aaf5e482730"
Version="2.0" IssueInstant="2013-03-18T03:28:54.1839884Z"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">
</samlp:NameIDPolicy>
</samlp:AuthnRequest>
有关更多详细信息,您可以参考此article(翻译成英文)。