首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oidc客户端js,不要在客户端使用Date.now

Oidc客户端js,不要在客户端使用Date.now
EN

Stack Overflow用户
提问于 2020-01-13 13:34:43
回答 1查看 979关注 0票数 2

我在我的客户端使用oidc-客户端js作为我的SPA项目之一。我有一个用IdentityServer4编写的身份服务器。

如果手动更改服务器的日期-时间,oidc-客户端js无法在登录用户中验证服务器的响应,因为日期时间不一样。

另外,如果我手动更改客户端的日期-时间,并使用自动日期时间选项保留服务器,则来自服务器的响应同样无效。

我认为任何使用日期时间的JavaScript解决方案都是不可靠的,所有的日期时间都必须在服务器中验证。

如何在服务器而不是客户端中验证令牌?

我的假设正确吗?如果它不正确,oidc-客户端js是否有任何解决方案来使用服务器时间而不是浏览器时间?

这是我的客户端配置

代码语言:javascript
复制
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
};
EN

回答 1

Stack Overflow用户

发布于 2020-01-15 10:19:08

时间必须是正确的。在服务器或客户端上,这并不重要,但必须是实际时间。如果你随着时间的推移而调整,那么你对令牌的要求(iat,nbf,等等)可能代表了过去或未来的一个时刻,所以它不会起作用。

为什么要将服务器或客户端的日期/时间更改为无效的日期/时间?

如何在服务器而不是客户端中验证令牌?

在SPAs上,所有与oidc相关的事情都发生在客户端代码中,包括令牌的验证。

这不是客户端在令牌上进行的唯一、也不是最重要的验证,主要验证是检查由授权机构公开的一对公钥签名的验证。

我认为任何使用日期时间的JavaScript解决方案都是不可靠的,所有的日期时间都必须在服务器中验证。

为什么信任服务器上的时钟多于客户端机器上的时钟,桌面应用程序呢,离线的呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59717716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档