Использует ли StackOverflow OpenID Connect для входа в Google? - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь лучше понять 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?

1 Ответ

0 голосов
/ 07 июня 2018

Похоже, что StackOverflow выполняет обычный поток авторизации OAuth 2.0 с Google в качестве поставщика.

Запрос 1) отправляется на сервер StackOverflow.Это на самом деле ничего не значит.Вы можете видеть, что если вы нажмете на Facebook, вы получите openid_provider: "facebook", даже если Facebook не реализует OpenID Connect.

StackOverflow реализует что-то похожее на это: https://developers.google.com/identity/sign-in/web/server-side-flow, но вместо этого просто использует перенаправленияиспользования библиотеки Google

OAuth 2.0 поток авторизации_кода объяснил: https://aaronparecki.com/oauth-2-simplified/#web-server-apps

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...