【问题标题】:How can I make the redirect_uri of AWS Cognito (Hosted UI) authenticated?如何使 AWS Cognito(托管 UI)的 redirect_uri 进行身份验证?
【发布时间】:2023-03-21 09:05:02
【问题描述】:

我正在使用 Amazon Congito 的托管 UI。我设置的重定向uri是:

https://example.com/redirect_endpoint

但是,该端点已通过身份验证。因此,我希望托管 UI 将 id_token 作为其 Authorization 标头的一部分发送到该重定向 URI

有没有办法告诉 AWS Cognito 的托管 UI 将该 id_token 作为其 Authorization 标头的一部分发送?换句话说,我可以让redirect_uri通过身份验证吗?

【问题讨论】:

    标签: amazon-web-services oauth-2.0 token amazon-cognito


    【解决方案1】:

    您可以使用隐式授权流程,id 和访问令牌将作为查询参数发送。因此,如果经过身份验证的 uri 的身份验证在您的控制范围内,您可以从查询字符串中读取令牌。 您可以在 userpool/app client settings/oauth 2.0 下进行设置。

    选项 1 - 重定向到公共页面或主页,然后从那里调用经过身份验证的 uri。在这种情况下,您可以使用更安全且推荐使用 aws 的授权授予流程。

    选项 2 - 为 api 网关使用自定义 lambda 授权程序并选择 lambda 事件有效负载作为请求。现在您可以将查询字符串令牌传递给 lambda 授权方,您可以在其中检查其签名和到期时间

    【讨论】:

    • 不幸的是,身份验证是通过 API Gateway 完成的,它从“Authorizer”标头中读取它。我担心我必须创建公共页面,然后我可以在其中设置 cookie。我会试试的。感谢您的回复,请继续关注这里:)
    • 明确地说,有什么方法可以通过 Cognito 的托管 UI 将 id_token 从查询参数移动到重定向中的 HTTP 标头(授权:Bearer ____)?
    • 另一种方法是为 api 网关使用自定义 lambda 授权程序,并选择 lambda 事件有效负载作为请求。现在您可以将查询字符串令牌传递给 lambda 授权方,您可以在其中检查其签名和到期时间。
    • 有趣。所以我会根据 GET 请求让那个 lambda 有自己的自定义授权器。
    • 是的,您可以使用此自定义授权器授权所有请求,也可以仅将其用于特定端点。如果您想根据用户组等启用 api 访问,这些自定义授权器很有用(cognito 不支持)
    猜你喜欢
    • 2021-02-28
    • 2018-03-14
    • 1970-01-01
    • 2023-04-03
    • 2021-04-28
    • 2019-06-19
    • 2019-10-04
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多