我们正在使用我们的.NET Core Web应用程序实现Identity Server 4。
我通过了Identity Server文档。配置身份服务器(使用DI)时,有一行:
.AddTemporarySigningCredential
我正在努力了解这个签名凭据是什么,但无法理解。因此,我不知道是否可以使用内置临时,或者我应该提供不同的临时。
我的问题是,什么是签名凭证以及我应该如何使用它?
在Identity Server文档中,这是定义:
添加提供指定密钥材料的签名密钥服务 各种令牌创建/验证服务。你也可以通过 X509Certificate2,SigningCredential或对a的引用 来自证书商店的证书。
所以看起来很重要:)
答案 0 :(得分:21)
授权服务器将使用密钥签署令牌。资源服务器应使用密钥验证令牌的完整性。它们一起形成不对称(例如公共/私人)密钥对。默认情况下,IdentityServer将发布用于在/.well-known/openid-configuration
端点上验证令牌的公钥。
对于开发方案,您通常希望跳过正确管理秘密的大惊小怪(例如 非常重要,以便在生产中正确执行!)。对于这些开发方案,您可以选择使用AddTemporarySigningCredential
等adhoc解决方案,该解决方案用于 .NET Core 1.x 。
使用 .NET Core 2.x ,这将change,您将需要AddDeveloperSigningCredential()
扩展方法。
这回答了它是什么的问题。关于如何使用它:您只需根据应用程序ConfigureServices(...)
类的Startup
方法中的.NET Core版本调用所需的方法。
除此之外,您不需要做任何特别的事情,当然除非您在生产中使用正确的密钥对。
另请参阅Cryptography, Keys and HTTPS和the bit on Configuring Services for Keys上的文档。从后一个文档中,这是生产案例的相关替代方案:
AddSigningCredential
添加签名密钥服务,该服务为各种令牌创建/验证服务提供指定的密钥材料。您可以从证书存储中传入
X509Certificate2
,SigningCredential
或对证书的引用。