Я пытаюсь лучше понять OAuth2 и OpenID Connect, поэтому я решил посмотреть, что отображается в инструментах разработчика Chrome при входе в StackOverflow с моей учетной записью Google.
После нажатия на кнопкуКнопка Google, чтобы войти, эти 5 сетевых запросов сделаны:
Обратите внимание, что я уже вошел в Google и ранее авторизовал StackOverflow.
1) 204 POST https://stackoverflow.com/gps/event
Request Payload:
...
properties:
location: "users_login"
openid_provider: "google"
2) 302 POST https://stackoverflow.com/users/login?...
Query String Parameters:
ssrc: head
returnurl: https://stackoverflow.com/
Form Data:
email:
password:
oauth_version: 2.0
oauth_server: https://accounts.google.com/o/oauth2/auth
openid_username:
openid_identifier:
3) 302 GET https://accounts.google.com/o/oauth2/auth?...
Query String Parameters:
client_id: xxxx
scope: profile email
redirect_uri: https://stackauth.com/auth/oauth2/google
state: {"sid":1,"st":"xxxx","ses":"xxxx"}
response_type: code
4) 302 GET https://stackauth.com/auth/oauth2/google?...
Query String Parameters:
state: {"sid":1,"st":"xxxx","ses":"xxxx"}
code: xxxx
5) 302 GET https://stackoverflow.com/users/oauth/google?...
Query String Parameters:
code: xxxx
state: {"sid":1,"st":"xxxx","ses":"xxxx"}
s: xxxx
Из запроса 1) похоже, что используется OpenID Connect.Но затем, глядя на запрос 3), запрашиваемая область равна scope: profile email
.
Если OpenID Connect действительно использовался, не будет ли openid
включена в область?Без этого конечная точка token
будет не возвращать id_token
верно?
Означает ли это, что StackOverflow на самом деле не использует OpenID Connect для аутентификации пользователей, которые входят в Google, новместо этого используя простой старый OAuth2?
Если так, я предполагаю, что старый старый OAuth2 обычно использовался для аутентификации (безопасным способом) до появления OpenID Connect?