authentication - 在 IdentityServer4 中生成永不过期的令牌
问题描述
我有一个运行良好的应用程序(ASP.Net Core 2.2,IdentityServer4)。现在我需要对我的应用程序中的一些设备或应用程序进行身份验证,以让它们调用我的 API。
我已经阅读了这些链接:
但这些不是我需要的。
我需要进行某种永不过期的身份验证,而我只是手动将其过期。什么是正确的解决方案?任何想法,将不胜感激。
解决方案
也许您可以使用Reference Tokens,不要被 Refresh Tokens 弄错了。
从文档中:
使用引用令牌时 - IdentityServer 会将令牌的内容存储在数据存储中,并且只会将此令牌的唯一标识符发回给客户端。然后,接收此引用的 API 必须打开与 IdentityServer 的反向通道通信以验证令牌。
所以参考只是参考。它不包含有关安全性或过期的信息。引用的信息存储在数据存储中,并且只能由接收引用令牌的资源使用反向通道通信访问。引用保持有效,直到它从数据存储中删除(令牌被撤销)。
为了完成这项工作,您应该在客户端和 api 中使用AddIdentityServerAuthentication来处理和验证引用令牌。您可以将客户端配置为使用引用令牌,如下所示(如文档所述):
client.AccessTokenType = AccessTokenType.Reference;
该文档还提到了 api 的一个秘密。
推荐阅读
- java - 下一个活动完成后导航抽屉未打开
- oauth-2.0 - IBM API Connect 中 X-IBM-Client-Id 标头的用途是什么?如果我们在访问 API 时不使用 X-IBM-Client-Id 标头,我们会失去什么?
- perl - 使用 Perl Net::MAC 模块处理无效 MAC 条目的错误
- wpf - TextChanged 和 PreviewTextInput 之间的 C# Wpf 文本框区别
- html - 在访问数据库中通过 html 修复单元格填充
- c++ - 如何使用查询在 Visual Studio 上运行 exe
- java - Java程序未编译
- python - 代码有效,但插入方法内部时无效
- c++ - 使用 C++ 模板更改操作
- symfony - 在 Doctrine ORM 中保留实体的两个不同版本