问题描述
我正在尝试让测试应用程序与 AWS 单点登录服务配合使用。当我点击 SSO 登录 url 并输入我的凭据时,它登录正常,但亚马逊显示错误:
Requeest nameID format does not match our record
我的请求包含:
<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" AllowCreate="true" />
亚马逊为我的应用程序提供的 IdP 元数据 xml 有一个空白的 <md:NameIDFormat/>
标签。我猜这与它有关。但是,我在 Amazon UI 中没有看到可以指定 nameIDFormat
的任何地方。
我的问题:
- 如何/在哪里可以指定我的 AWS SSO 应用程序接受的
nameIDFormat
?这是假设空白<md:NameIDFormat/>
是(部分)问题。也许这与问题无关,在这种情况下: - 上述错误消息是什么意思?
解决方法
您可以在 AWS SSO“应用程序”页面更改 NameID 格式:
- 转到 AWS SSO->应用程序->我的应用程序名称
- 将
${user:subject}
设置为属性值(第二列)并在第三列中选择必要的 NameID 格式。
完成后,您可以通过 NameIDPolicy 标签发送相应的 NameID 格式:
<saml2p:NameIDPolicy
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
顺便说一句:通过使用 NameIDPolicy 标签,SP 从 IdP 请求相应的 NameID 格式(电子邮件、临时、持久等)。您的 AWS IdP 没有请求的映射,并且不知道默认情况下应该返回什么或允许什么并引发您看到的错误。
,我遇到了同样的问题,与 Twilio 的技术支持人员进行了交谈,他们为我提供了一个插件,可让您跟踪 SAML 内容 -> https://chrome.google.com/webstore/detail/saml-tracer/mpdajninpobndbfcldcmbpnnbhibjmch
一旦我纠正了我的问题,nameid-format:unspecified to emailAddress 就起作用了!