我正在开发使用Google OAuth2保护的REST API(如果重要的话,使用java)。方法如下:
google id
+ token id
,google id
+ token id
都会在每个请求上发送给API作为标题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 :(得分:0)
查看Google documentation,如果您要使用tokeninfo
端点(您是),则只需要id_token
,然后您还必须
检查aud声明是否包含您应用的一个客户端ID
这样您不仅可以验证令牌,还可以确保它实际上适用于您的客户。
因此,您可以从sub
声明中提取用户唯一的Google ID,无需将其与客户收到的ID进行匹配。