AWS Cognito 内置登录重定向问题

fat*_*ine 2 c# amazon-cognito .net-core

我正在尝试将 Cognito 内置登录逻辑纳入我们的工作流程。这是我尝试使用的场景:在通过用户的 Cognito 内置 UI 成功登录后,我需要重定向到特定的 URI,该 UI 已在用户池中创建。但我不明白该怎么做。我已经创建了用户池、应用程序客户端、配置了域、提供了回调 url、创建了一个用户。

我将“允许的 OAuth 流”配置为使用Authorization code grant“允许的 OAuth 范围”设置为openid 到目前为止 - 太好了。然后我想出了以下 URL 来唤起 Cognito 内置 UI:

https://<my-domain>.amazoncognito.com/authorize?response_type=code&client_id=<my-client-id>&redirect_uri=https://<my-domain>.amazoncognito.com/login?client_id=<my-client-id>
Run Code Online (Sandbox Code Playgroud)

在我选择的浏览器中执行它后,我点击了 Cognito 内置登录页面。但是在单击“登录”按钮时,出现错误:Required String parameter 'redirect_uri' is not present

好吧,我心里想,让我们在上述 URL 的末尾添加 redirect_uri 属性,路径将被清除为成功,但这种乐观是短暂的。我很害怕:“redirect_mismatch”错误。我试图提供多个回调网址,但没有成功。redirect_mismatch 错误阻止了我的方式。

现在我不知道如何指示 Cognito 重定向到所需的 url。欢迎任何想法。

Arm*_*min 7

您不应将“redirect_uri”设置为 Cognito 的登录端点。这没有道理。'redirect_uri' 是一个参数,用于告诉 Cognito 在登录后将用户带到哪里,这将是您的应用程序的 url。

'redirect_uri'应该完全匹配您出于安全原因配置的应用程序客户端的回调 URI 之一,否则您将收到“redirect_mismatch”错误。

要访问登录端点:

https://mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI
Run Code Online (Sandbox Code Playgroud)

对于授权端点:

https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI
Run Code Online (Sandbox Code Playgroud)

授权端点首先检查您是否有会话 cookie 表明您已经登录,如果是,它会自动将您重定向到 redirect_uri,否则它将通过登录端点将您带到登录页面提供给授权端点的查询字符串。