从刷新令牌生成 AWS 访问令牌

Generating AWS access token from refresh token

提问人:Ebikeneser 提问时间:11/6/2023 更新时间:11/6/2023 访问量:32

问:

我目前正在开发一个客户端脚本,以便与 AWS 中的 .net 6.0 Web API 进行交互。

我正在使用 AWS Cognito 处理终端节点上的授权。

阅读文档后,我了解到访问令牌的最长过期时间为 1 天,之后您必须使用刷新令牌生成新的令牌(其中刷新令牌的有效期最长为 10 年)。

我已经编写了一个客户端脚本来用 Python 做到这一点 -

import boto3

refresh_token = 'my-refresh-token'

client = boto3.client('cognito-idp', region_name='my-region')

try:
    auth_response = client.initiate_auth(
        AuthFlow='REFRESH_TOKEN_AUTH',
        AuthParameters={
            'REFRESH_TOKEN': refresh_token,
            'SECRET_HASH': 'my-hash'
        },
        ClientId='my-client-id'
    )

    if 'AuthenticationResult' in auth_response:
        new_access_token = auth_response['AuthenticationResult']['AccessToken']
        print(f'New Access Token: {new_access_token}')
    else:
        print('Authentication failed.')

except Exception as e:
    print(f'Error: {str(e)}')

这工作正常,但是我面临的问题是,当我的工作客户想要与我的 api 交互时,有一天他们将不得不生成一个新的访问令牌,我可以忍受。但是,必须向他们提供应用程序池肯定会带来安全风险,因为这些将被视为敏感信息?SECRET_HASHClientID

亚马逊网络服务 Amazon-Cognito 访问令牌

评论

0赞 Ankush Jain 11/7/2023
为什么不直接公开一个终结点,它将刷新令牌作为输入,并将返回 access_token/ID_Token。为了提高安全性,您还可以请求过期的令牌并在服务器端进行验证。只需检查exp声明即可。无需向客户发送client_id和client_sercret。

答: 暂无答案