我在我的客户端使用oidc-客户端js作为我的SPA项目之一。我有一个用IdentityServer4编写的身份服务器。
如果手动更改服务器的日期-时间,oidc-客户端js无法在登录用户中验证服务器的响应,因为日期时间不一样。
另外,如果我手动更改客户端的日期-时间,并使用自动日期时间选项保留服务器,则来自服务器的响应同样无效。
我认为任何使用日期时间的JavaScript解决方案都是不可靠的,所有的日期时间都必须在服务器中验证。
如何在服务器而不是客户端中验证令牌?
我的假设正确吗?如果它不正确,oidc-客户端js是否有任何解决方案来使用服务器时间而不是浏览器时间?
这是我的客户端配置
const userManagerConfig = {
client_id: '58bdb6b3dd264200a1186573a8abf884',
redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}/authentication/callback`,
response_type: 'code',
post_logout_redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}`,
scope: 'openid profile phone tes.api',
authority: `http://localhost:5016`,
silent_redirect_uri: `${window.location.protocol}//${window.location.hostname}${window.location.port ? `:${window.location.port}` : ''}/authentication/silent_callback`,
automaticSilentRenew: true,
filterProtocolClaims: true,
loadUserInfo: true,
triggerAuthFlow : true
};发布于 2020-01-15 10:19:08
时间必须是正确的。在服务器或客户端上,这并不重要,但必须是实际时间。如果你随着时间的推移而调整,那么你对令牌的要求(iat,nbf,等等)可能代表了过去或未来的一个时刻,所以它不会起作用。
为什么要将服务器或客户端的日期/时间更改为无效的日期/时间?
如何在服务器而不是客户端中验证令牌?
在SPAs上,所有与oidc相关的事情都发生在客户端代码中,包括令牌的验证。
这不是客户端在令牌上进行的唯一、也不是最重要的验证,主要验证是检查由授权机构公开的一对公钥签名的验证。
我认为任何使用日期时间的JavaScript解决方案都是不可靠的,所有的日期时间都必须在服务器中验证。
为什么信任服务器上的时钟多于客户端机器上的时钟,桌面应用程序呢,离线的呢?
https://stackoverflow.com/questions/59717716
复制相似问题