【发布时间】:2020-04-13 20:40:33
【问题描述】:
我正在使用 Spring Security 和 JWT 为我的移动应用程序实现身份验证/授权系统,我对系统的实际设计有一些疑问。 这是允许用户访问安全 REST API 的身份验证/授权流程:
移动应用程序向 /auth/token 端点发送一个请求,以及使用 basic 身份验证方案的用户的用户名和密码。 服务器对返回 JWT 访问和刷新令牌的用户进行身份验证。
对端点 /api/** 表示的受保护资源的所有后续请求都是通过访问令牌执行的,该令牌由服务器验证和信任。验证和信任令牌的逻辑由在 spring 的 BasicAuthenticationFilter 之前执行的令牌过滤器执行。
如果令牌不再有效,则客户端将刷新令牌 (JWT) 发送到 /auth/refresh 端点,该端点会验证此令牌,如果可信则返回一个新的访问令牌。 /auth/refresh 端点是公开的,但它依赖于 JWT 签名必须有效且受信任的事实。
我也在考虑使用 OAuth,但我想知道这种架构设计是否可以使用,或者它是否存在漏洞或可扩展性问题。 我对身份验证系统还很陌生,我正在尝试了解无需使用 OAuth 即可实施的正确方法。
【问题讨论】:
标签: java spring authentication jwt