JWT C# Token - 如何处理或设置无限到期时间

Posted

技术标签:

【中文标题】JWT C# Token - 如何处理或设置无限到期时间【英文标题】:JWT C# Token - How to handle or set unlimited expiry time 【发布时间】:2019-12-21 01:55:14 【问题描述】:

由于我计划使用 OAuth 或 OWIN JWT Bearer 令牌进行身份验证,因此我有以下要求,我不知道要建议的解决方案或授权类型。我会很感激一个小的示例代码,尤其是有效负载的外观和声明的外观以及我应该在下面拥有的授权类型:

    我有 Angular 8 UI,要求输入用户名/密码(Azure AD Authenticated) 用户登录,然后应该可以将 URL(在会话中)复制粘贴到另一个选项卡或新浏览器。 用户在工作时(它是呼叫中心案例经理,因此长时间使用会话),令牌不应在他/她工作时过期。我研究了令牌将按我们设置的时间过期,并且无法控制。现在,除非我们有“刷新”令牌,否则我们无法实现这一点,即即使令牌过期,用户也应该有无缝体验来继续任务,因为应该使用刷新令牌(或任何机制)。

如果我使用刷新令牌,那么只有在用户 ID/密码不安全的情况下,授权码授予类型是可能的。如果我选择“隐式”授权类型,则此处没有可用的刷新令牌。

我不确定如何实现上述所有要点。请指导

【问题讨论】:

【参考方案1】:

在隐式授权流的情况下,SPA 必须在隐藏 iframe 中发送请求以刷新令牌。基于有效的浏览器会话,应用程序请求刷新令牌访问。

对于 Azure AD,您应该使用 microsoft-authentication-library-for-js ,并且此库使用 acquireTokenSilent 方法提供此功能。

我强烈建议您阅读隐式授权流程文档,您将获得很好的理解。 Implicit Grant Flow

我不确定您是否能找到完整的示例,但我可以为您提供一些带有代码示例的链接,所有这些链接都将构成完整的示例。我也看不到任何 Angular 8 库,给定的库适用于 Angular 6,7,但可能同样适用于 Angular 8。

对于 Angular,您可能必须使用这个库 microsoft-adal-angular 和 Example How to use microsoft-adal-angular

在给定的链接中,您可以找到如何刷新令牌,因为上面的示例缺少该部分。 Refresh Token Code

【讨论】:

嗨,Imran,感谢您的 cmets,非常感谢,但恐怕我什么都不懂,因为我是一个业务分析师的心态,而是一个设计师 能否请您在这里提供代码示例,我可以接受您的回答。它也会帮助我。而且,我们不能将 MAL 用于 JS,因为我们的不是 JS,而是高级版本(Angular 8),所以 ts(Typescript)。我们不同意使用此类库,而是使用 OWIN 或 OAuth 2.0。您能否在 oauth 2 和 OWIN 的边界内构建您的答案和示例代码 我已经更新了我的答案。不确定是否有帮助,但它可能包含您正在寻找的信息。

以上是关于JWT C# Token - 如何处理或设置无限到期时间的主要内容,如果未能解决你的问题,请参考以下文章

jwt需要存redis吗

如何处理嵌套的属性列表

C#里面的第三方Devexpress插件 lookupedit 键入值的问题

在我的 Angular 2 应用程序中使用 JWT 并将其存储在 localStorage 中。但是,当该项目不存在时,我该如何处理?

JWT:当用户打开新标签时如何处理 GET 请求?

JWT:当用户打开新标签时如何处理 GET 请求?