主题
身份认证与授权
身份认证与授权的区别
认证确认调用者身份,授权判断该主体能否对特定资源执行操作。授权决策可结合角色、资源归属和上下文。
已登录用户仍可能越权。资源访问权限应由服务器按请求校验。
Session、Token 与 JWT 的关系
Session 常将状态保存在服务端,客户端携带会话标识。Token 是凭证的通称,可为不透明值或结构化格式。JWT 是声明格式,可签名或加密。
签名 JWT 的负载通常可读。Cookie 是传递凭证的一种方式,也可承载 JWT。
凭证存储、有效期与撤销
短有效期限制泄漏后的使用窗口。服务端会话可通过移除状态撤销。自包含令牌通常需要短有效期或额外的撤销查询。
浏览器存储方案要同时考虑 XSS、CSRF 和刷新流程。Bearer 凭证泄漏后持有者通常可直接使用。
OAuth 2.0 与 OpenID Connect
OAuth 2.0 提供委托授权框架,让客户端获得访问受保护资源的权限。OpenID Connect 在此基础上提供身份层和 ID Token。
现代交互式客户端常用授权码与 PKCE。登录流程应验证发行者、受众及适用的 nonce 和 state。
Access Token、Refresh Token 与 ID Token
Access Token 提交给资源服务。Refresh Token 提交给授权服务器换取新令牌。ID Token 供 OIDC 客户端验证用户身份。
三者的受众与用途不同。资源 API 应按自己的令牌要求验证 Access Token。
