我需要公开一个api,它也允许我们获取范围,但是我使用awscognito的所有尝试都失败了。
所以我希望能做到以下几点:
-
分配scope:foo to 现有用户和新用户
-
获取包含foo作用域的访问令牌(使用c#后端代码)
第一部分:使用作用域获取访问令牌
因此,要获得代币,需要以下步骤:
var provider = new AmazonCognitoIdentityProviderClient(new BasicAWSCredentials(AccessKey, SecretKey));
var request1 = new AdminInitiateAuthRequest
{
UserPoolId = userPoolId,
ClientId = request.ClientId,
AuthFlow = AuthFlowType.ADMIN_NO_SRP_AUTH,
AuthParameters =
{
{"USERNAME", request.UserName},
{"PASSWORD", request.Password}
}
};
var response1 = await provider.InitiateAuthAsync(request);
现在,我可以通过这个请求/响应获得令牌(显然是通过良好的凭证:)。我搞不懂的是怎么要求更多
scope
项目。目前它只返回
aws.cognito.signin.user.admin
说到这里,我还添加了一个
custom:some-attribute
属性。我可以在UI中看到
General settings \ Attributes
我发现我可以
更新
当我得到一个
OK|200
状态返回,但如果我尝试获取用户,则不会显示其更新的属性。
var request2 = new AdminUpdateUserAttributesRequest
{
UserAttributes = new List<AttributeType>
{
new AttributeType {
Name="custom:some-attribute",
Value=Guid.NewGuid().ToString("N")
};
UserPoolId = userPoolId,
Username = userName
};
var response2 = await provider.AdminUpdateUserAttributesAsync(request);
var result = await _provider.GetUserAsync(new GetUserRequest
{
AccessToken = response1.AuthenticationResult.AccessToken
});
... 新更新的变量未显示在
result.UserAttribues
AttributeType
也许我做错了,但是我不知道如何创建一个作用域(我想我可以通过custom属性做另一个选择)并获取作用域。
谢谢,
凯莉