AWS Cognito:注册/登录后如何在 .Net 中发出身份验证请求
Posted
技术标签:
【中文标题】AWS Cognito:注册/登录后如何在 .Net 中发出身份验证请求【英文标题】:AWS Cogntio: How to make authentication request in .Net after SignUp/SignIn 【发布时间】:2018-10-07 23:37:24 【问题描述】:使用适用于 .Net 的 AWS 开发工具包,我可以使用
在 UserPool 中注册用户AmazonCognitoIdentityProviderClient provider = new AmazonCognitoIdentityProviderClient(new Amazon.Runtime.AnonymousAWSCredentials(), RegionEndpoint.USEast1);
SignUpRequest signUpRequest = new SignUpRequest()
ClientId = CLIENTAPP_ID,
Password = user.Password,
Username = user.Username
;
await provider.SignUpAsync(signUpRequest);
注册后,我想验证用户身份并登录并重定向到某个授权页面。使用以下代码我可以获得 Auth Token
CognitoUserPool userPool = new CognitoUserPool(this.POOL_ID, this.CLIENTAPP_ID, provider);
CognitoUser user = new CognitoUser(username, this.CLIENTAPP_ID, userPool, provider);
InitiateSrpAuthRequest authRequest = new InitiateSrpAuthRequest()
Password = password
;
AuthFlowResponse authResponse = await user.StartWithSrpAuthAsync(authRequest).ConfigureAwait(false);
if (authResponse.AuthenticationResult != null)
// Here i can see authResponse.AuthenticationResult.AccessToken
但是现在对于 GetUserAttributes 或 DeleteUser 的任何下一个请求,我如何使用返回的用户令牌?
我看到有 userPool.getCurrentUser();
但这在 .Net SDK 中不可用,我认为它在 JS SDK 中。
那么,我如何在注册/登录后发出经过身份验证的请求,以使用 .Net SDK 或使用 REST Api 调用来执行各种其他操作,例如 UpdateAttributes 或 DeleteUser 等
请推荐
【问题讨论】:
【参考方案1】:StartWithSrpAuthAsync调用成功返回后,可以使用user
对象,调用GetCognitoAWSCredentials
。
CognitoAWSCredentials credentials =
user.GetCognitoAWSCredentials("identityPoolID", RegionEndpoint.<Your_Identity_Pool_Region>);
然后使用这些凭据:
// examples
await user.UpdateAttributesAsync(...);
await user.DeleteUserAsync();
new AmazonLambdaClient(credentials, AuthenticationManager.Region);
new AmazonS3Client(credentials);
您也可以拨打电话获取用户:
string accessToken = authResponse.AuthenticationResult.AccessToken;
Task<GetUserResponse> responseTask =
provider.GetUserAsync(new GetUserRequest
AccessToken = accessToken
);
GetUserResponse responseObject = await responseTask;
一些参考资料:
https://aws.amazon.com/blogs/developer/cognitoauthentication-extension-library-developer-preview/ https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/cognito-authentication-extension.html#more-authentication-options 在页面内搜索GetCognitoAWSCredentials
【讨论】:
以上是关于AWS Cognito:注册/登录后如何在 .Net 中发出身份验证请求的主要内容,如果未能解决你的问题,请参考以下文章
如何从通过 Google/Federated Login 登录的 AWS Cognito 检索 id 令牌
将Cognito的用户信息与AWS Amplify GraphQL关联起来。