Поток кода OpenId, как передать токены пользователю - PullRequest
0 голосов
/ 05 мая 2020

Предположим, у вас есть следующие сервисы Auht, Service-A, Service-B и поток от openid

https://openid.net/specs/openid-connect-core-1_0.html

+--------+                                   +--------+
|        |                                   |        |
|        |---------(1) AuthN Request-------->|        |
|        |                                   |        |
|        |  +--------+                       |        |
|        |  |        |                       |        |
|        |  |  End-  |<--(2) AuthN & AuthZ-->|        |
|        |  |  User  |                       |        |
|   RP   |  |        |                       |   OP   |
|        |  +--------+                       |        |
|        |                                   |        |
|        |<--------(3) AuthN Response--------|        |
|        |                                   |        |
|        |---------(4) UserInfo Request----->|        |
|        |                                   |        |
|        |<--------(5) UserInfo Response-----|        |
|        |                                   |        |
+--------+                                   +--------+

Spring framework имеет сборку в поддержке входа по протоколу oauth и openIdLogin (https://github.com/spring-projects/spring-security/tree/5.0.0.RELEASE/samples/boot/oauth2login), но все они основаны на сеансах. Однако я хочу передать токены пользователю, поэтому пользователь может вызывать другие службы через access_token. Как правильно это делать?

Если я так реализую, это неправильно

User --> MyAuth
               ------------->Google MyAuth server redirects to sso 
UI<--------------------------Google callback to fronten (ui/login/cb?code=codefromcode)
UI --->MyAuth  ------------> Google
      (using code obtain tokens)
              <--------------Google sends tokens   
UI <---MyAuth
  (tokens send to browser) 
...