我希望在我的网站上实施“使用google登录”。 OpenId connect建议使用其登录客户端库的Google登录。但是在Google登录页面
https://developers.google.com/identity/sign-in/web/backend-auth
中的
部分
“调用tokeninfo端点”
提到
“验证ID令牌的最简单方法是使用tokeninfo端点。调用此端点涉及额外的网络请求,为您执行大部分验证,但会引入一些延迟并可能导致网络错误。 由于这些原因,它仅适用于每月活跃用户少于100个的部署,以及用于调试和信息目的。 “
我正在处理的网站预计每月有10,000多名活跃用户。那么我如何实现一个协议来识别来自Google登录我的网站的令牌。
答案 0 :(得分:2)
正如您所确定的,可以使用OAuth v2的客户端库或使用对Google服务器的单个API调用来离线执行令牌验证。由于脱机客户端是特定于编程语言的,因此您需要找到您正在使用的特定语言的客户端/示例。来自Google+ GitHub页面的一些令牌验证示例:
或者,您可以通过客户端库使用tokeninfo端点,也可以直接使用Google API端点,如Google API Explorer here所示。使用ID令牌的curl示例:
curl https://www.googleapis.com/oauth2/v2/tokeninfo?id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6IjkyNGE0NjA2NDgxM2I5YTA5ZmFjZGJiNzYwZGI5OTMwMWU0ZjBkZjAifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwic3ViIjoiMTEwNTcwOTc3MjI2ODMwNTc3MjMwIiwiYXpwIjoiMzY0MzgxNDQxMzEwLXRuOGw2ZnY2OWdnOGY3a3VjanJhYTFyZWpmaXRxbGpuLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXRfaGFzaCI6IlAzLU1HZTdocWZhUkZ5Si1qcWRidHciLCJhdWQiOiIzNjQzODE0NDEzMTAtdG44bDZmdjY5Z2c4ZjdrdWNqcmFhMXJlamZpdHFsam4uYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJjX2hhc2giOiJjd3hsdXBUSkc4N2FnbU1pb0tSYUV3IiwiaWF0IjoxNDM0NDcyODc2LCJleHAiOjE0MzQ0NzY0NzZ9.Gz_WljZOV9NphDdClakLstutEKk65PNpEof7mxM2j-AOfVwh-SS0L5uxIaknFOk4-nDGmip42vrPYgNvbQWKZY63XuCs94YQgVVmTNCTJnao1IavtrhYvpDqGuGKdEB3Wemg5sS81pEthdvHwyxfwLPYukIhT8-u4ESfbFacsRtR77QRIOk-iLJAVYWTROJ05Gpa-EkTunEBVmZyYetbMfSoYkbwFKxYOlHLY-ENz_XfHTGhYhb-GyGrrw0r4FyHb81IWJ6Jf-7w6y3RiUJik7kYRkvnFouXUFSm8GBwxsioi9AAkavUWUk27s15Kcv-_hkPXzVrW5SvR1zoTI_IMw
如文档中所述,网络调用确实会引入一些延迟,如果您在每个请求上验证令牌(例如,使用ID令牌作为承载令牌),那么最好使用库验证令牌脱机为您的首选语言。