我正在尝试将Cognito内置登录逻辑纳入我们的工作流程。 这是我尝试启用的方案: 通过用户的Cognito内置UI(已在用户池中创建)成功登录后,我需要重定向到特定的URI。但是我不知道该怎么做。 我已经创建了用户池,应用程序客户端,配置的域,提供了回调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>
在我选择的浏览器中执行它时,我会访问Cognito内置登录页面。但是,单击“登录”按钮后,出现错误:Required String parameter 'redirect_uri' is not present
好吧,我想我自己,让我们在上述URL的末尾添加redirect_uri属性,这样就可以清除成功路径,但是这种乐观是短暂的。我很害怕:“ redirect_mismatch”错误。我尝试提供多个回调URL,但没有成功。 redirect_mismatch错误阻止了我的前进。
现在我不知道如何指示Cognito重定向到所需的url。任何想法都欢迎。
答案 0 :(得分:2)
您不应将“ redirect_uri”设置为Cognito的登录端点。这没有道理。 “ redirect_uri”是一个参数,用于告诉Cognito登录后将用户带到哪里,这将是您应用程序的网址。
出于安全原因配置的应用客户端的“ 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
对于授权端点:
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI
授权端点首先检查您是否具有表明您已经登录的会话cookie,如果已登录,它将自动将您重定向到redirect_uri,否则将通过Login将您带到登录页面。具有提供给授权端点的查询字符串的端点。