2017-09-19 70 views
0

我已经使用具有IdentityServer4 netstandard2.0工作原型Visual Studio解决方案:DX10223:终身验证失败

  • IdentityServer(asp.net核心MVC)
    • AllowedGrantTypes = GrantTypes.HybridAndClientCredentials
    • RefreshTokenUsage = TokenUsage.ReUse
    • RefreshTokenExpiration = TokenExpiration.Sliding
  • Web项目(asp.net核心MVC)
  • API项目(asp.net核心MVC)

有时候,加入API项目时,我得到了以下错误:

DX10223:生命周期验证失败。令牌已过期。

如何以及在哪里可以刷新令牌?

是否可以刷新API项目上的标记?

+0

尝试检查服务器的时区和当前的时间设定。使用错误的时间设置可用的令牌1小时可能会使令牌过期超出预期。 –

+0

如果我想在用户断开连接之前没有到期? – ZeBobo5

+0

您可以考虑使用'AspNet.Security.OpenIdConnect.Server'而不是'Microsoft.Owin.Security.OpenIdConnect'。此问题与OAuth令牌有效性相关,请检查令牌是否有适当的到期时间(我不太了解OAuth令牌过期的工作原理)。 –

回答

0

作为@Tetsuya山本说 - 首先检查时区和时间设置。无论如何,你设置身份服务器客户端令牌的生命周期,例如像“AccessTokenLifetime”这样的配置:86400

1

令牌具有有限的生存期。他们会在某个时候到期。

刷新令牌是某些应用程序类型在没有直接用户交互的情况下请求新访问令牌的机制。

刷新令牌相关的设置描述如下: https://identityserver4.readthedocs.io/en/release/topics/refresh_tokens.html

您通过发送刷新令牌到令牌端点刷新令牌。这将返回一个新的访问令牌。

https://tools.ietf.org/html/rfc6749#section-6

的IdentityModel库有TokenClient类封装了令牌端点的相互作用在C#

https://github.com/IdentityModel/IdentityModel2

+0

非常感谢。 但是你有没有更新我的Web项目和我的API项目的声明样本? – ZeBobo5

+0

这句话没有意义。 – leastprivilege

+0

是的,对不起,我迷路了。 我找到了解决方案,通过添加隐藏的iframe在我的Web项目中调用间隔刷新。所以令牌在到期前被续订。现在,我的网络用户可以使用自动化技术在同一页面停留几天,以调用ajax Api项目。 感谢您的帮助和安全生命! – ZeBobo5