Sign in with Google按钮data-login_uri属性取值及后端对接要求问询
data-login_uri对应后端接口的规范要求 你对data-login_uri的定位推测是正确的,这就是谷歌一键登录流程中,用来接收谷歌下发的用户登录凭证的后端接口地址,后端开发需要按以下要求实现该接口:
- 接收请求格式:谷歌向该地址发起的是
application/x-www-form-urlencoded格式的POST请求,核心参数为credential(JWT格式的谷歌ID凭证)和可选参数g_csrf_token(CSRF校验令牌) - 必做安全校验:
- 先校验请求中的
g_csrf_token值和用户当前浏览器Cookie中存储的同名CSRF令牌是否一致,避免跨站请求伪造攻击 - 校验
credential字段的JWT有效性:验证JWT签名(用谷歌公开的JWKS密钥)、签发主体必须为谷歌官方域名、受众字段必须和你申请的YOUR_GOOGLE_CLIENT_ID完全一致、令牌未超出有效期,按需可校验域名限制字段
- 先校验请求中的
- 业务逻辑处理:校验通过后,可从JWT中解析到受信任的用户唯一标识(sub字段)、邮箱、姓名、头像地址等信息,以此匹配你方系统的已有用户,没有匹配结果可走新用户注册流程,最终生成你方系统的登录态(如Session、自有JWT等)
- 返回要求:同域部署的接口可直接返回登录成功状态/跳转登录后页面,跨域场景可配合谷歌登录参数配置跳转逻辑,返回符合前端交互要求的响应即可
补充注意:该接口所属域名必须为HTTPS协议,且需要提前添加到Google Cloud控制台OAuth配置的授权域名列表中,否则谷歌会拒绝向该地址发送请求。
内容的提问来源于stack exchange,提问作者jszpila
相关产品推荐
相关产品推荐

