测验:授权类型
为什么 SPA 和移动应用要使用 authorization code + PKCE?
- 因为这类客户端无法安全保存 secret
- 因为往返次数更少,登录更快
- 因为 OAuth 规范就是这样规定的
- 因为签发的 token 更小
在 PKCE 中,code_verifier 与 code_challenge 是什么关系?
- challenge = 对 verifier 加密得到的值
- 两者没有关系
- challenge = 将 SHA256(verifier) 的结果进行 Base64URL 编码得到的值
- verifier = SHA256(challenge)
Implicit 流程为什么被弃用?
- 因为往返次数多,导致登录缓慢
- 因为规范修订时更改了流程名称
- 因为 access token 通过 URL 传递,会留在历史记录和 Referer 中
- 因为它无法与 PKCE 一起使用
Client Credentials 授权模式适用于什么场景?
- 浏览器中的用户登录
- 移动应用中的用户登录
- 跨多个服务的 SSO 登录
- 无需用户参与的服务器间通信、批处理任务和服务账户
为什么不能把 refresh token 存入 localStorage?
- 因为会受到存储容量限制
- 因为无法在标签页之间同步
- 因为会被 CORS 策略阻止
- 因为 JavaScript 可以通过 XSS 读取它,而且它长期有效
省略 state 参数会使哪种攻击成为可能?
- 不掌握签名密钥就伪造 token
- 更改算法以绕过签名验证
- 使用攻击者的授权码,让受害者登录到攻击者账户的 CSRF 攻击
- 再次使用截获的授权码的重放攻击