我在本地主机上设置了IdentityServer4实例。 我从ui示例屏幕登录,没有检查记住我的登录信息。 然后,我重新启动服务器,但我仍然登录。 IS4依靠什么来检索会话/用户数据?会话不会持久存在,因此我认为它确实从cookie中获取了数据?
答案 0 :(得分:0)
IdentityServer4使用cookie authentication。
由于浏览器和IdentityServer4在同一台计算机上,因此这意味着您的浏览器已配置为保留cookie。如果将其更改为“关闭时删除Cookie”,则表示您在重新启动时注销。
关于令牌:登录时,IdentityServer4发送存储在(https)cookie中的访问令牌。访问令牌可以有两种类型,refence and self-contained (JWT)。尽管参考令牌的行为可能相同,但很可能您正在使用JWT令牌。
JWT令牌具有某些特征:
自成体系(独立生活)
根据令牌中存储的信息来识别用户
不能更改
生存直到过期
一旦发布,就很难被撤销
服务器使用签名凭证对JWT令牌进行编码。它还需要这些凭证来解码和验证令牌。只要什么都没有改变,令牌就可以被验证。
在您的情况下,登录凭据似乎是固定的(证书?),因为重新启动IdentityServer4不会影响令牌的验证。另一方面,浏览器仍将令牌存储在cookie中。因此,重启后实际上没有任何改变。 IdentityServer4处于相同状态,访问令牌只是从cookie中读取。
如果要改用DeveloperSigningCredentials(AddDeveloperSigningCredential
),则行为是访问令牌无效。作为解码和验证令牌的密钥,重新启动时已更改。并且当访问令牌丢失(cookie被删除)时,您将不得不再次登录。