Как получить токен от Cognito? - PullRequest
0 голосов
/ 29 января 2019

У меня есть простой API ядра Dotnet, который получает значение1, значение2 и метод [Авторизовать].Я пытаюсь получить токен обратно из Cognito idp, чтобы получить доступ к результату, но дело в том, что я не смог найти способ отправить (имя пользователя, пароль и адрес электронной почты) в Cognito, чтобы получить токен.

Я получаю следующую ошибку:

Ошибка в обработке ответа SAML: недопустимые атрибуты пользователя: электронная почта: атрибут обязателен, error_uri: 'error_uri is null' ¨ В файле startup.cs я настроил егокак показано ниже:

services.Configure<OpenIdConnectOptions>(Configuration.GetSection("Authentication:Cognito"));
        var serviceProvider = services.BuildServiceProvider();
        var authOptions = serviceProvider.GetService<IOptions<OpenIdConnectOptions>>();

        services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddCookie()
        .AddOpenIdConnect(options =>
        {
            options.ResponseType = authOptions.Value.ResponseType;

            options.MetadataAddress = authOptions.Value.MetadataAddress;
            options.ClientId = authOptions.Value.ClientId;
            options.ClientSecret = authOptions.Value.ClientSecret;
            options.SaveTokens = authOptions.Value.SaveTokens;
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = authOptions.Value.TokenValidationParameters.ValidateIssuer
            };
         });

Я ожидаю получить токен после отправки атрибутов (имя пользователя, пароль и адрес электронной почты) в Cognito idp и предоставить его почтальону для получения значений.

1 Ответ

0 голосов
/ 31 января 2019

Используйте приведенный ниже код для получения токена доступа после успешной регистрации с именем пользователя и паролем

 CognitoUserPool userPool=new CognitoUserPool(poolid,client_id,provider);
 CognitoUser user=new CognitoUser(username,client_id,userPool,provider);
            InitiateSrpAuthRequest authRequest=new InitiateSrpAuthRequest()
            {
                Password=password
            };
   Task<AuthFlowResponse> authFlowResponse=null;
   authFlowResponse=user.StartWithSrpAuthAsync(authRequest);
   string Token=authFlowResponse.Result.AuthenticationResult.AccessToken.ToString();
...