我当前的设置是我在 Angular(前端)和 .NET Core MVC(后端)之间使用 Cookie 身份验证,在后端和我们由另一个团队维护的身份服务器之间使用 JWT 令牌。后端正在使用 client_id / client_secret 并针对证书验证 JWT 令牌,以确保 id 令牌有效并由批准的颁发者颁发。
------------------ -----------------------
|Angular Frontend| <---------> |.Net Core MVC Backend|
------------------ Cookie ----------------------
|
| JWT
|
-----------------
|Identity Server|
-----------------
我现在有一个要求,如果用户在 30 分钟内处于非活动状态,就应该退出,这导致的问题比我想象的要多。 我首先尝试在前端和后端之间保留一个滑动 cookie,但问题是如果 cookie 已过期,用户将被重定向到身份服务器登录页面,然后再次自动登录,因为身份服务器还存储了一个 cookie与其他应用程序单点登录。现在已经解决了这个问题,但将令牌生命周期缩短到 30 分钟。
现在我发现我在使用刷新令牌延长令牌寿命时遇到了问题。问题是前端有时会发出多个 API 请求,如果需要刷新令牌,后端会尝试使用身份服务器为每个 API 请求刷新令牌。
因此,我希望通过公开访问令牌或 id 令牌和刷新令牌来完全删除 cookie 并在前端和后端之间使用令牌身份验证。
这就是我想要的方式:
------------------ -----------------------
|Angular Frontend| <---------------> |.Net Core MVC Backend|
------------------ Access token ----------------------
or |
id token, refresh token | Renew tokens with client id
Renew tokens by calling | client secret stored in backend
backend endpoints without |
any client id |
client secret. -----------------
|Identity Server|
-----------------
问题: