首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >身份服务器4-在非开发环境中使用带有AddDeveloperSigningCredential的自签名RSA密钥

身份服务器4-在非开发环境中使用带有AddDeveloperSigningCredential的自签名RSA密钥
EN

Stack Overflow用户
提问于 2022-01-19 06:38:33
回答 1查看 659关注 0票数 0

我在我们所有的环境(开发、测试、生产)中使用标识服务器4 (.Net Core2.2),我们有一个启动程序如下

代码语言:javascript
复制
services.AddIdentityServer()
            .AddDeveloperSigningCredential()
            .AddAspNetIdentity<ApplicationUser>()
            .AddInMemoryClients(Configuration.GetSection("IdentityServer:Clients"))
            .AddConfigurationStore(Configuration.GetSection("CosmosDB"))
            .AddOperationalStore(Configuration.GetSection("CosmosDB"))
            .AddProfileService<ProfileService>();

使用在调试/开发环境(tempkey.rsa).中生成的临时密钥文件

这是目前正在运行的用户身份验证和索赔处理。

我意识到,除了本地/开发之外,在任何其他环境中都不推荐这样做,但是我们即将从ADFS-3迁移到ADFS-4,这将改变体系结构,因此我们将不再需要上面的代码(并且可能不需要Identity 4的实例)。

我还意识到,在解决方案中,对于

  • single/multiple实例(如果是这样的话,相同的RSA密钥需要跨多个实例同步)。

但是,对于如果在ADFS端的证书被更新(这可能发生在迁移之前)会发生什么,我有几个问题--如果发生这种情况

  • 会使现有的用户JWT失效吗?
  • --我没有看到任何地方持有旧的(或可能是新的) ADFS证书的指纹--应该在某个地方注册吗?据我理解,
  • 的RSA密钥不会过期吗?对吗?
EN

回答 1

Stack Overflow用户

发布于 2022-01-19 11:04:25

您不应该在生产中使用AddDeveloperSigningCredential,因为您可能(取决于您的设置)在重新部署时松开密钥,如果发生这种情况,将生成一个新的签名密钥。这反过来意味着所有已经发行的令牌都将失效。

更好的方法是使用AddSigningCredential方法并将密钥存储在IdentityServer之外。

当您执行密钥旋转时,您可以保留旧密钥,以验证已经发出的令牌,然后使用AddValidationKey添加已分发的旧签名密钥。

请参阅https://docs.duendesoftware.com/identityserver/v5/fundamentals/keys/

是的,RSA签名密钥没有任何过期时间,但是,有时您在证书中包装和传输RSA密钥,然后添加日期/时间组件。

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

https://stackoverflow.com/questions/70766236

复制
相关文章

相似问题

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