【问题标题】:Finishing AWS authentication flow完成 AWS 身份验证流程
【发布时间】:2020-01-22 08:02:08
【问题描述】:

TLDR 我正在寻找从后端发送 cognito JWT 以验证用户状态的地方。


我目前有一个 react 应用,带有一个无服务器的 apollo api 和 dynamodb 数据库,都在本地运行。

  • React 客户端使用 aws-amplify 注册、登录等 aws-cognito - 返回访问、ID 和刷新令牌。

  • 用户还可以使用 facebook 和 google 登录, amplify.Auth.federatedSignIn 返回认知身份 凭据。

  • 然后将令牌传递到后端进行验证。

到目前为止,我找不到从后端发送令牌的位置,以验证用户是否已登录到 cognito。 我已经搜索了文档,但 TBH 让我更加困惑。

据我所知,在生产 API 网关或 AppSync 中可以拦截前端和后端之间的令牌,但由于我已经在后端验证了令牌,目前有一个端点或 SDK 方法我可以使用令牌/访问密钥等来检查用户状态?

如果我以错误的方式处理此问题,请随时告诉我。

【问题讨论】:

    标签: javascript reactjs amazon-web-services authentication amazon-cognito


    【解决方案1】:

    如果您需要验证令牌是否有效且未过期,请使用 JavaScript SDK

    const cognitoServiceProvider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});
    await cognitoServiceProvider.getUser({
            AccessToken: accessToken
        }).promise();
    

    如果令牌无效,这将引发错误。

    如果您使用不同的 SDK,请查找等效调用。

    【讨论】:

    • 嗨乔伊,这对于验证令牌非常有用,但是在我使用客户端的放大功能将用户注销后,使用 getUser 方法时访问令牌仍然有效。这是预期的行为,即访问令牌在创建到期之前一直有效吗?当用户退出 cognito 时,是否有一种方法可以使令牌失效?
    • 是的,这是预期的行为。使 JWT 失效的唯一方法是等待过期时间。通常“退出”只是意味着从本地存储中删除令牌。
    猜你喜欢
    • 2020-09-08
    • 2012-01-25
    • 2017-09-09
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    相关资源
    最近更新 更多