AWS Cognito login 'code' vs 'token' тип ответа (символ # в URL перенаправления) - PullRequest
1 голос
/ 20 апреля 2020

Я пытаюсь узнать, как использовать AWS Cognito, и меня смущают различные варианты «response_type» при интеграции моего (тестового) клиентского приложения с пользовательским интерфейсом входа в Cognito. Если я выберу «токен», а не «код», URL-адрес перенаправления, сгенерированный Cognito после успешного входа в систему, будет иметь символ «#» перед аргументами, что не позволяет моему тестовому приложению (python, Flask) анализировать аргументы.

Мне интересно, кто-нибудь может объяснить предполагаемые варианты использования этих двух методов?

Пока у меня есть ...

  • Создан пул пользователей и добавил пользователя в AWS Консоль управления
  • В разделе «Настройки клиента приложения» установите URL моего обратного вызова для входа в систему https://localhost/test/
  • Создано основание c python приложение с flask для тестирования обратных вызовов
  • Сконфигурировано gunicorn для запуска моего flask приложения с ssl-сертификатом, поэтому мое приложение работает с https-запросами

Код для мое Flask тестовое приложение выглядит следующим образом ...

import os
import traceback

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/test/', methods=['GET'])
def test():

  try:  
    resp = jsonify(request.args)
    status = 200

  except:
    resp = traceback.format_exc()
    status = 500

  return resp, status

if __name__ == '__main__':
  app.debug = True
  app.run(host='0.0.0.0', port=int(os.environ.get("PORT", 80)))

Если я введу следующий URL в chrome, с типом ответа 'code', мое приложение будет работать, как и ожидалось

Логин URL ...

https: // [домен] .auth. [Регион] .amazoncognito.com / log in? response_type = code & client_id = [id] & redirect_uri = https://localhost/test/

URL-адрес перенаправления ...

https://localhost/test/?code= [code]

Тестовое приложение json ...

{
  code: [code]
}

Однако, если я введу следующее с типом ответа «токен», URL-адрес перенаправления будет создан с символом «#» перед аргументами, и мое Flask приложение не видит ни одного из них.

URL входа в систему ...

https: // [домен] .auth. [регион] .amazoncognito. com / login? response_type = token & client_id = [id] & redirect_uri = https://localhost/test/

URL перенаправления ...

https://localhost/test/#id_token = [токен] & access_token [access_token] = & expires_in = 3600 & token_type = Bearer

Тестовое приложение json ...

{}

Обратите внимание, что поведение, которое я вижу, соответствует документации Amazon о формате ответа Я просто не понимаю, почему это так.

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