Cognito 中无效的relayState

0

【以下的问题经过翻译处理】 有文档描述在Cognito中一个有效的relayState应该是什么格式吗?我无法正确格式化一个Cognito会接受的relayState,并且没有找到任何相关的文档。在其他地方指定的标准RelayState格式(如https://jackstromberg.com/adfs-relay-state-generator/)会导致Cognito抛出无效的relayState错误。

目前我是使用ADFS作为SAML身份提供者并启用注销流程。然后我通过我的应用程序登录,并转到ADFS屏幕以注销。最开始会出现缺少relayState的问题,但我通过在我的注销路径中添加一个RelayState查询参数来解决了这个问题。它能够识别我添加了该参数,但显然无法解析它(因此抛出无效的relayState)。

profile picture
专家
已提问 5 个月前11 查看次数
1 回答
0

【以下的回答经过翻译处理】 “有文档描述在Cognito中一个有效的relayState应该是什么格式吗?“

  • 不,我们没有发布关于此格式的文档,但可以从网络请求中解码。Cognito的relayState由一个附加了签名的用户池详细信息的JSON对象组成。

“我无法正确格式化一个Cognito会接受的relayState,并且没有找到任何相关的文档。在其他地方指定的标准RelayState格式(如https://jackstromberg.com/adfs-relay-state-generator/)会导致Cognito抛出无效的relayState错误。”

  • 这是预期的结果。即使可以按照规定格式创建有效的JSON relayState,签名部分也无法生成。因此,简而言之,您无法生成relayState并使用IdP发起的SSO。

“目前我是使用ADFS作为SAML身份提供者并启用注销流程。然后我通过我的应用程序登录,并转到ADFS屏幕以注销。最开始会出现缺少relayState的问题,但我通过在我的注销路径中添加一个RelayState查询参数来解决了这个问题。它能够识别我添加了该参数,但显然无法解析它(因此抛出无效的relayState)。“

  • 注销请求需要从Cognito生成。在用户池中创建SAML提供者时,如果希望在从Amazon Cognito注销时将用户从SAML IdP注销,则选择“启用IdP注销流程”。启用此流程时,当调用LOGOUT端点时,会向SAML IdP发送一个带有有效relay state的签名注销请求。

此外,我们已将“由IdP发起的SSO”加入到功能需求列表中,但我们无法提供发布此功能的预计时间。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则