2016-11-15 8 views
1

Я разрабатываю API REST, защищенный с помощью Google OAuth2 (используя java, если это имеет значение). Подход заключается в следующем:Google OAuth2 - Правильное использование?

  • UI проверку подлинности с помощью Google и имеет: google id + token id,
  • google id + token id оба отправлены на каждый запрос к API, как заголовки,
  • REST API использует URL https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=token_id для получить JSON похож на ниже (где token_id приходят из заголовка запроса):

JSON:

{ 
    "iss": "accounts.google.com", 
    "iat": "14791197651", 
    "exp": "14795233651", 
    "at_hash": "xDLxhM85hTYU0KwU-rhPgg", 
    "aud": "541950199239-s1fag9iaes0s99g4feipe0ih0l75km1l.apps.googleusercontent.com", 
    "sub": "197763402127980067798", 
    "azp": "541950819239-s5fag9iaes9s99g4feipe0ih0l75km1l.apps.googleusercontent.com", 
    "alg": "RS256", 
    "kid": "db9e3d7cdd1b4178010f89af11cfd37400061afc" 
} 

и сравнивает sub значение google id из заголовка запроса,

  • если проверка проходит, и пользователь по google id находится в нашей базе данных, то пользователь имеет право использовать REST API (дополнительная логика может быть применена).

Должен ли быть правильный рабочий процесс или дополнительные проверки?

Заранее за вашу помощь.

ответ

0

Глядя в Google documentation, если вы собираетесь использовать tokeninfo конечную точку (что вы), вам нужно просто id_token, а затем вы должны также

проверить, что требование ауд содержит один ваших идентификаторов клиента вашего приложения

, так что вы можете не только подтвердить токен, но и убедиться, что он действительно предназначен для вашего клиента.

Ergo, вы можете просто вытащить уникальный идентификатор Google из заявки sub, не нужно сопоставлять его с полученным клиентом.

+0

Ницца, спасибо! – user2770362