powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните как работает пример с sso oauth2
1 сообщений из 1, страница 1 из 1
Объясните как работает пример с sso oauth2
    #39629786
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так как предыдущая тема скатилась в широкоизвестную субстанцию открою новую с конкретным вопросом.

Есть работающий пример, который я локально у себя запускаю и он работает. Пример очень небольшой. Буквально несколько(3-4) классов на проект. Инетересуют 2 проекта клиент и сервер. Вот собственно исходный код:

https://github.com/eugenp/tutorials/tree/master/spring-security-sso

Это была предыстория. Теперь к вопросам:


Когда я захожу на клиента я вижу следующее:




Насколько я понимаю из-за этих строк кода:

Код: java
1.
2.
3.
4.
5.
6.
http.antMatcher("/**")
            .authorizeRequests()
            .antMatchers("/", "/login**")
            .permitAll()
            .anyRequest()
            .authenticated();



запросы на
Код: java
1.
/

и на
Код: java
1.
/login**

доступны всем без аунтефикации.

Когда я тыкаю на кнопку login срабатывает href на
Код: java
1.
 /securedPage


Так как этот путь доступен только авторизованным пользователям, то меня редиректит на дефолтный спринговый урл для логина -
Код: java
1.
/login



причем на том же приложении




Судя по всему так как у меня настроена конфигурация:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
security:
  basic:
    enabled: false
  oauth2:
    client:
      clientId: SampleClientId
      clientSecret: secret
      accessTokenUri: http://localhost:8081/auth/oauth/token
      userAuthorizationUri: http://localhost:8081/auth/oauth/authorize
    resource:
      userInfoUri: http://localhost:8081/auth/user/me





Меня редиректит на userAuthorizationUri с аргументами
Код: java
1.
&redirect_uri=http://localhost:8082/ui/login


Код: java
1.
client_id=SampleClientId

- тоже берется из конфига, но что это значит непонятно

Код: java
1.
&response_type=code

-непонятно что это такое
Код: java
1.
&state=Rjb7k9

- и это тоже непонятно что

GET запрос на
Код: java
1.
http://localhost:8081/auth/oauth/authorize?client_id=SampleClientId&redirect_uri=http://localhost:8082/ui/login&response_type=code&state=Rjb7k9


тоже в свою очередь ведёт к редиректу на

Код: java
1.
http://localhost:8082/ui/login?code=pqJ8Wy&state=Rjb7k9


state явно берется с предыдущего запроса, а код сгенерировался.

запрос
Код: java
1.
http://localhost:8082/ui/login?code=pqJ8Wy&state=Rjb7k9

отвечает следующим образом:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
HTTP/1.1 302
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Set-Cookie: UISESSION=4B99A4CB703DA025D45B2DA0EBE19B69; Path=/ui; HttpOnly
Location: http://localhost:8082/ui/securedPage
Content-Length: 0
Date: Fri, 13 Apr 2018 09:07:16 GMT



То есть в результате всей этой процедуры сетается кука
Код: java
1.
UISESSION=4B99A4CB703DA025D45B2DA0EBE19B69 

и происходит редирект на
Код: java
1.
http://localhost:8082/ui/securedPage



Причём если потушить сейчас авторизационный сервер, то страница
Код: java
1.
http://localhost:8082/ui/securedPage

продолжит открываться.

А если я эту куку просто изначально выставлю какой-то рандомной строкой, то клиент как-то понимает, что это кривая кука и просит авторизоваться.

Как он это понимает?

Как добавить разлогин?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните как работает пример с sso oauth2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]