После перенаправления 302 браузер перенаправляет в неправильное местоположение после неявной аутентификации Oauth2 и отсутствует фрагмент токена доступа - PullRequest
0 голосов
/ 07 октября 2019

У меня есть сервер авторизации Oauth2 на основе springboot 2.

У меня есть приложение SPA на основеact.js.

Я хочу сгенерировать accessToken, для этого я выбрал неявныйgarant_type. поток работает хорошо, я получаю access_token, но не могу прочитать фрагмент access_token из моего фронт-приложения. Браузер не перенаправляет на адрес 302 www.example.com/conetext-path/index.hrml#access_token=azerty, браузер перенаправляет на www.example.com/conetext-path/ и фрагмент исчезает.

См. Ниже различные обмены с сервером:

1- GET https://www.example.com/api/auth/oauth/authorize?response_type=token&client_id=my-trusted-client&redirect_uri=https://www.example.com/context-apth/index.html&scope=read

ОТВЕТ:

HTTP/1.1 302
Access-Control-Allow-Headers: x-requested-with, authorization
Access-Control-Allow-Methods: GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 3600
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Date: Sun, 06 Oct 2019 19:01:56 GMT
Expires: 0
Location: https://www.example.com/context-path/login
Pragma: no-cache
Server: nginx/1.15.10
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Content-Length: 0
Connection: keep-alive 

2-POST https://www.example.com/context-path/login с учетными данными

ОТВЕТ:

HTTP/1.1 302
Access-Control-Allow-Headers: x-requested-with, authorization
Access-Control-Allow-Methods: GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 3600
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Date: Sun, 06 Oct 2019 19:05:35 GMT
Expires: 0 
Location: https://www.example.com/api/auth/oauth/authorize?response_type=token&client_id=my-trusted-client&redirect_uri=https://www.example.com/context-apth/index.html&scope=read
Pragma: no-cache
Server: nginx/1.15.10
Set-Cookie: JSESSIONID=B08832A4F924A500DBB5C8F38034996D; Path=/api/auth; Secure; HttpOnly
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Content-Length: 0
Connection: keep-alive

3- 302 результат перенаправления после входа в систему

ОТВЕТ

Access-Control-Allow-Headers: x-requested-with, authorization
Access-Control-Allow-Methods: GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE
Access-Control-Allow-Origin: *
Access-Control-Max-Age: 3600
Cache-Control: no-store
Connection: keep-alive
Content-Language: fr-FR
Content-Length: 0
Date: Sun, 06 Oct 2019 19:05:35 GMT
Location: https://www.example.com/context-path/index.html#access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsib2F1dGgyLXJlc291cmNlIl0sInVzZXJfbmFtZSI6IkFnZW50X21haGRpX2thbGxlbCIsIlRFTkFOVF9DUkVDSEUiOjEsInNjb3BlIjpbInJlYWQiXSwiZXhwIjoxNTcwNDE4NzM1LCJhdXRob3JpdGllcyI6WyJBR0VOVF9DUkVDSEVfTk9OX0NPTkZJUk1FIiwiQUdFTlRfQ1JFQ0hFX0NPTkZJUk1FIiwiQURNSU5fQ1JFQ0hFIl0sImp0aSI6ImJmYzUzN2Y2LTA2ZDgtNGUxMS1hNTA3LTc0ZmRlNDgzMzVhNCIsImNsaWVudF9pZCI6Im15LXRydXN0ZWQtY2xpZW50In0.qoEEBIy2x-ABlXIEYeilfW-X4U8sOMTdZrEqLWFJ4Kc&token_type=bearer&expires_in=30000
Server: nginx/1.15.10
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block

4- Я перенаправлен в /index.html:

ОТВЕТ

HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: text/html
Date: Sun, 06 Oct 2019 18:48:22 GMT
ETag: W/"5d989034-a83"
Last-Modified: Sat, 05 Oct 2019 12:44:36 GMT
Server: nginx/1.15.10
Vary: Accept-Encoding
Content-Length: 1250

но в браузере я вижу URL https://www.example.com/context-path/ вместо https://www.example.com/context-path/index.html.

Внутри index.html У меня есть скрипт javascript, ищущий фрагмент access_token, но его ноль.

Не знаюНе понятно, почему браузер не перенаправляет на место с фрагментом.

...