Мне нужно предоставить API, который также позволяет нам получить область, но я терплю неудачу со всеми своими попытками использовать aws cognito.
Так что я надеялся сделать следующее:
- назначить область действия: foo существующим и новым пользователям
- получить обратно токен доступа, содержащий эту область действия foo (используя код конца c #)
Часть I: Получение токена доступа с помощью Scope
Итак, для получения токена необходимо следующее:
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
Часть II: пользовательские атрибуты
С учетом сказанного я также добавил атрибут custom:some-attribute
.Я вижу это в интерфейсе для экрана 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
.
Может быть, я делаю это неправильно, но я не могу понять, как создать область (что я думал, я мог бы сделать альтернативу через пользовательский атрибут) и получить область.
Точно так же я не могу понять, как передать область при аутентификации для токенов.
Спасибо, Келли