Asp.net core IdentityServer4中的签名凭据是什么?

Asp.net core IdentityServer4中的签名凭据是什么?,asp.net-core,asp.net-identity,identity,identityserver4,Asp.net Core,Asp.net Identity,Identity,Identityserver4,我们正在使用.NET核心web应用程序实现Identity Server 4 我浏览了Identity Server文档。配置Identity server(使用DI)时,有以下行: .AddTemporarySigningCredential 我正在试图理解此签名凭据是什么,但无法理解。因此,我不知道是否可以使用内置的临时文件,或者是否应该提供一个不同的文件 我的问题是,什么是签名凭证,我应该如何使用它 在Identity server文档中,定义如下: 添加一个签名密钥服务,该服务向用户提

我们正在使用.NET核心web应用程序实现Identity Server 4

我浏览了Identity Server文档。配置Identity server(使用DI)时,有以下行:

.AddTemporarySigningCredential
我正在试图理解此签名凭据是什么,但无法理解。因此,我不知道是否可以使用内置的临时文件,或者是否应该提供一个不同的文件

我的问题是,什么是签名凭证,我应该如何使用它

在Identity server文档中,定义如下:

添加一个签名密钥服务,该服务向用户提供指定的密钥材料 各种令牌创建/验证服务。你可以通过任何一个 X509Certificate2、签名凭证或对 来自证书存储的证书


因此,这似乎很重要:)

授权服务器将使用密钥对令牌进行签名。资源服务器应使用密钥验证令牌的完整性。它们一起构成一个(通常是不对称的,例如公共/私有)密钥(对)。默认情况下,IdentityServer将通过
/.众所周知的/openid配置
端点发布用于验证令牌的公钥

对于开发场景,您通常希望跳过正确管理所述密钥之类的机密的麻烦(这对于在生产中正确执行非常重要!)。对于这些开发场景,您可以选择使用专门的解决方案,如
AddTemporarySigningCredential
,该解决方案用于.NET Core 1.x

使用.NETCore2.x这将需要
添加developerSigningCredential()
扩展方法

这就回答了它是什么的问题。关于如何使用它:您只需根据应用程序的
Startup
类的
ConfigureServices(…)
方法中的.NET核心版本调用所需的方法

除此之外,您不需要做任何特殊的事情,当然要注意在生产中使用合适的密钥对

另请参见和上的文档。从后一个文档中,有一个与生产案例相关的替代方案:

  • AddSigningCredential

    添加向各种令牌创建/验证服务提供指定密钥材料的签名密钥服务。您可以传入
    X509Certificate2
    签名凭证
    或证书存储中的证书引用


谢谢我读了《破坏性改变》的文件。我不明白我应该在生产中使用什么?哦,对了!您可以使用添加签名凭据(…),请参阅。更新了我的答案。可能是因为我没有完全理解我应该理解的。如何为AddSigningCredential创建密钥?创建和管理证书(尤其是x509证书)本身就是一个完整的主题。IdentityServer文档在这个主题上似乎含糊不清,可能是有意的(因为它被视为一个单独的关注点)。我也不是专家,但我认为您可以使用自己选择的工具创建一个自签名的x509证书,因为重要的是您要获得一个具有足够熵的好的公钥/私钥对。@CassioFariasMachado Hmmm。我说的是,默认情况下应该启用哪个IIRC。反应应该类似于。如果你没有达到这个终点,我建议你问一个新问题,并采取步骤重现你的情景。