Перевод кода из JS в C # для аутентификации Cognito Identity - PullRequest
0 голосов
/ 01 июля 2019

Я не могу перевести рабочий код в JS для аутентификации с помощью Cognito Identity в рабочий код на C #

В настоящее время процесс уже работает с языком javascript и работает нормально:

  1. пользователь выполняет вход в систему Gigya и получает JWT
  2. Этот JWT передается службе Lambda-Cognito, в результате чего получается токен доступа, подобный этому:

Заголовок

{
   "kid":"eu-west-11",
   "typ":"JWS",
   "alg":"RS512"
}

Полезная нагрузка

{
   "sub":"eu-west-1:eed436ce-0126-494e-a098-647XXXXXXXXX",
   "aud":"eu-west-1:1e71e5a8-2554-4a92-9f22-ca1XXXXXXXXX",
   "amr":[
      "authenticated",
      "auth.cognito.custom.gsdp.fca",
      "auth.cognito.custom.gsdp.fca:eu-west-1:1e71e5a8-2554-4a92-9f22-ca1fcca153e2:a097fc344410484e827XXXXXXXXXX"
   ],
   "iss":"https://cognito-identity.amazonaws.com",
   "exp":1561629216,
   "iat":1561628916
}

Подпись

XXXXXXXXXX

затем эти данные передаются в Amazon с помощью:

</p> <pre><code>var iss = decodedToken.payload.iss.split('//')[1]; //iis obtained in the previous step var logins = {}; logins[iss] = token; //(Token obtained by the lambda function on the previous point) AWS.config.region = cognito_sdpr_params.region; // Region AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityId: identityId, //(identityId Obtained by the lambda function on the previous point) Logins: logins }); AWS.config.credentials.get(function () { $timeout(function () {...})})

затем, когда Cognito Identity получает учетные данные, маркер сеанса используется для сбора данных из третьего сервиса.

Хорошо, все это работает нормально с javascript, но теперь тот же процесснеобходимо реплицировать в .net внутри веб-службы.

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

 CognitoAWSCredentials c = new CognitoAWSCredentials(dt.Payload.aud, RegionEndpoint.EUWest1);
 ImmutableCredentials ic = c.GetCredentials();

Но я получаю сообщение об ошибке типа: «Неавторизованный доступ не поддерживается для этого пула удостоверений».Я не понимаю этого сообщения, поскольку все работает нормально для javascript, а не для .net, а также токена, полученного Lambda si, который сообщает о том, что пользователь прошел проверку подлинности, как мы видим выше.

Спасибо за любую помощь, высоко ценится с наилучшими пожеланиями

...