Конечная точка TOKEN возвращает invalid_client без секрета клиента - PullRequest
0 голосов
/ 07 февраля 2019

У меня проблемы с потоком кода авторизации в Amazon Cognito.Рабочий процесс, который я пытаюсь создать, выглядит следующим образом:

  1. Пользователь проходит аутентификацию со встроенным пользовательским интерфейсом Cognito.
  2. Cognito перенаправляет обратно с кодом авторизации.
  3. Я отправляю код на сервер, где он обменивается на токены, используя конечную точку / oauth2 / token.

Я создал клиента без секрета клиента.Я проверяю подлинность с помощью Cognito UI, возвращаю код, затем отправляю с почтальоном следующее:

URL: https://MY-DOMAIN/oauth2/token
Method: POST
Headers: 
Content-Type: application/x-www-form-urlencoded
Body:
  grant_type=authorization_code&
  client_id=<my-client-id>&
  code=<code-from-cognito-ui>&
  redirect_uri=<my-redirect-url>

Я не использую авторизацию, так как нет секрета клиента.

В ответ я получаю:

Code: 400
Body: { "error": "invalid_client" }

Клиенту приложения разрешено предоставление кода авторизации в консоли AWS Cognito.

1 Ответ

0 голосов
/ 10 февраля 2019

У меня была похожая проблема при работе с Cognito на iOS (без усиления), но я понял, что мне нужно было отправить nil (для быстрой передачи).

Я не уверен, что это такпоможет вам в вашей ситуации, но вот что у меня есть в Swift:

@objc func config(_ call: CAPPluginCall) {
    let appClientId = "myclientid";
    let scopes = Set<String>(["openid", "email"]);
    let signInRedirectUri = "com.myappurl://signin";
    let signOutRedirectUri = "com.myappurl://signout";
    let webDomain = "https://[myappdomain].auth.us-east-2.amazoncognito.com";

    // NOTICE my nil here for appClientSecret, if I used "" it would throw the error you are seeing
    let config = AWSCognitoAuthConfiguration(appClientId: appClientId, appClientSecret: nil, scopes: scopes, signInRedirectUri: signInRedirectUri, signOutRedirectUri: signOutRedirectUri, webDomain: webDomain);

    AWSCognitoAuth.registerCognitoAuth(with: config, forKey: "AWSCognito")
    call.resolve()
}

Это может не совсем соответствовать вашей ситуации, но именно это помогло мне устранить ужасную ошибку invalid_client.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...