我正在开发一个可供客户访问的REST API,我想使用AWS Cognito来处理身份验证和授权。
但是,我想从客户中提取AWS Cognito,这样,如果我从AWS Cognito更改为其他服务,则他们不必更改其代码(只需更改API密钥)即可。
不幸的是,在许多天阅读了AWS的文档之后,我找不到以下答案:
我如何给我的客户一个永不过期的“ personal access token”,让他们可以用来对脚本和后端服务进行身份验证,类似于可以在GitHub上进行身份验证?
到目前为止,我创建了一个REST端点,客户端可以在其中发布他们的username
和password
,并且我代表他们与AWS Cognito对话,以进行身份验证: / p>
var request = new AdminInitiateAuthRequest
{
UserPoolId = "MyUserPoolId",
ClientId = "MyUserPoolAppClientId",
AuthFlow = AuthFlowType.ADMIN_NO_SRP_AUTH,
};
request.AuthParameters.Add("USERNAME", "myuser@mydomain.com");
request.AuthParameters.Add("PASSWORD", "123456"); // Relax, this is demo code
string accessToken = string.Empty;
var response = await _identityProvider.AdminInitiateAuthAsync(request);
var authResult = response.AuthenticationResult;
这一切都有效,authResult
给了我3个令牌(我认为)是在30天后过期(我最多可以配置3650天)。
这给了我3个令牌(访问,ID,刷新)。我觉得将这3个令牌提供给调用者将是一个糟糕的选择,因为它是Cognito特有的...
如何为我的客户提供一个API密钥,然后我可以使用该密钥对Cognito进行身份验证?