【问题标题】:What is the Signing Credential in IdentityServer4?IdentityServer4 中的签名凭证是什么?
【发布时间】:2017-09-10 16:32:45
【问题描述】:

我们正在使用我们的 .NET Core Web 应用实施 Identity Server 4。

我浏览了 Identity Server 文档。配置身份服务器(使用 DI)时,有一行:

.AddTemporarySigningCredential

我正在尝试了解此签名凭据是什么,但无法弄清楚。因此,我不知道是否可以使用内置的临时工具,或者我是否应该提供不同的临时工具。

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

在身份服务器文档中,这是定义:

添加提供指定密钥材料的签名密钥服务 各种令牌创建/验证服务。你可以传入任何一个 X509Certificate2、SigningCredential 或对 来自证书存储的证书。

所以这似乎很重要:)

【问题讨论】:

    标签: asp.net-core asp.net-identity identity identityserver4


    【解决方案1】:

    授权服务器将使用密钥对令牌进行签名。资源服务器应使用密钥验证令牌的完整性。它们一起形成一个(通常是非对称的,例如公钥/私钥)密钥(对)。默认情况下,IdentityServer 将通过/.well-known/openid-configuration 端点发布用于验证令牌的公钥。

    对于开发场景,您通常希望跳过正确管理密钥之类的秘密(这对于在生产中正确执行真的很重要!)。对于这些开发方案,您可以选择使用诸如 AddTemporarySigningCredential 之类的临时解决方案,该解决方案用于 .NET Core 1.x

    对于 .NET Core 2.x,这将是 change,您将需要 AddDeveloperSigningCredential() 扩展方法。

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

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

    另请参阅 Cryptography, Keys and HTTPSthe bit on Configuring Services for Keys 上的文档。从后一个文档中,这是生产案例的相关替代方案:

    • AddSigningCredential

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

    【讨论】:

    • 谢谢。我阅读了重大更改文档。我不明白我应该在生产中使用什么?
    • 哦,对了!您可以使用AddSigningCredential(...),请参阅these docs。稍微更新了我的答案。
    • 这可能是因为我没有完全理解我应该理解的一切。如何为 AddSigningCredential 创建密钥?
    • 创建和管理证书(尤其是像 x509 证书这样的证书)本身就是一个完整的主题。 IdentityServer 文档似乎对该主题含糊不清,也许是故意的(因为它被视为一个单独的问题)。我也不是专家,但我认为您可以使用您选择的工具来创建自签名 x509 证书,因为重要的是您获得具有足够熵的良好公钥/私钥对。
    • @CassioFariasMachado 嗯,很奇怪。我说的是the Discovery Endpoint,默认情况下应该启用哪个 IIRC。响应应该类似于the demo server response。如果您没有获得该端点,我建议您提出一个新问题,并提供重现您的场景的步骤。
    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 2017-09-03
    • 2017-11-19
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多