我正在使用 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">
user-email-address@foo.bar
</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)