Spring OAuth2 URL-адрес перенаправления неявного потока
В моем приложении Spring Boot/OAuth2 я пытаюсь войти в систему через свой собственный сервер OAuth2 с неявным потоком со следующим URL:
http://example.com/api/oauth/authorize?response_type=token&client_id=example_client_id&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin
после входа он перенаправляет пользователя на следующий URL:
http://localhost:8080/login#access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoyOTcsInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsicmVh&token_type=bearer&expires_in=43199&scope=read%20write&user_id=297&jti=9d416117-0d08-4f4e-874d-3f31dbe7815f
Это правильное поведение, что пользователь был перенаправлен на URL с #
символ вместо ?
.. Я имею в виду:
http://localhost:8080/login?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoyOTcsInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsicmVh&token_type=bearer&expires_in=43199&scope=read%20write&user_id=297&jti=9d416117-0d08-4f4e-874d-3f31dbe7815f
если нет - как настроить сервер OAuth2 приложения Spring для перенаправления пользователя на правильный URL-адрес?
1 ответ
Поведение правильное. Поток кода авторизации требует, чтобы параметры ответа были встроены в часть запроса URI перенаправления (RFC 6749, 4.1.2. Ответ авторизации), в то время как неявный поток требует, чтобы параметры ответа были встроены в часть фрагмента (RFC 6749, 4.2.2). Доступ к токену).
Методы кодирования множественных ответов OAuth 2.0 определили новый параметр запроса, response_mode
, Параметр указывает, куда должны быть встроены параметры ответа. В спецификации query
, fragment
а также none
определены. Кроме того, добавлен режим ответа OAuth 2.0 Form Post Response. form_post
в качестве значения response_mode
, Если response_mode=form_post
включен в запрос авторизации, параметры ответа встроены в параметры HTML-формы.
Вы можете найти таблицу, описывающую отношения между response_type
/ response_mode
комбинации и положение HTTP / параметры ответа в разделе " 2. Формат ответа " в "Полном руководстве автора".