我正在构建一个本地用户可以登录的应用程序。因为我是一个初学者,所以我不确定如何建立安全环境的最佳方法。我已经计划了一项策略,但是在继续之前,我需要一些反馈。
策略
成功登录后,服务器将返回一个 auth令牌和一个刷新令牌(均为jwt)。身份验证令牌有效期为30分钟,刷新令牌有效期为6个月。我将两个令牌都存储在钥匙串(ios)或共享首选项(android)中。每当对服务器发出请求(1)时,auth令牌就会随请求一起发送到Authorization标头中。在服务器端,检查auth令牌的有效性(它是否已过期?)。如果令牌已过期,则服务器会将包含“ please_refresh”的响应发送到应用程序。这应该向应用程序发出信号,刷新令牌必须发送到服务器以创建新的身份验证令牌。完成此操作后,应使用新的auth令牌再次执行原始请求(1)。
// valid auth token
+-------------------+ +-------------------+
| CLIENT | | SERVER |
| | ----- auth token to server -----> | |
| auth token: aaa | | auth token OK |
| refresh token: bbb| <---- response to client ------ | |
| | | |
+-------------------+ +-------------------+
// invalid auth token
+-------------------+ +-------------------+
| CLIENT | | SERVER |
| | ----- auth token to server -----> | |
| auth token: aaa | | auth token NOT OK |
| refresh token: bbb| <---- 'please_refresh_token' ---- | |
| | | |
| | ----- refresh token to server --> | create new auth |
| | | token |
| new auth tk: ccc | <---- new auth token to client -- | |
| | | |
| | ---> new auth token to server --- | auth token OK |
| | | |
| | <---- response to client ----- | |
+-------------------+ +-------------------+
这是对用户进行身份验证的好策略吗?另一种方法是在第一个请求中将刷新令牌和auth令牌一起发送,并在过期后立即立即更新auth令牌。
我对这种策略的疑问是:
谢谢!