单页应用接入第三方登录时,怎样验证回调属于最初发起登录的浏览器?
简答题困难345 次浏览
参考答案与解析
# 核心结论
单页应用接入第三方登录时,回调中出现授权码并不能证明它属于当前浏览器最初发起的登录。系统必须同时证明登录事务与浏览器相关联、授权码只能由原发起者兑换、回调地址没有被替换,并在建立本地会话前验证提供方签发的令牌及账号绑定关系。实践中应组合使用高熵、短期、一次性的 state,采用 PKCE 的 code_verifier 与 code_challenge,使用预注册且精确匹配的 redirect_uri,并优先由可信后端兑换授权码和建立本地会话,避免将长期客户端秘密暴露在前端。
# 底层机制
state 用于把授权响应与此前发起的事务关联,主要防止登录请求伪造、回调串号和提供方混淆。
