asp.net-core - 更改签名 key 不会使现有 token 失效

标签 asp.net-core openid-connect openiddict

我在我的网络应用程序中使用 OpenIddict,并且刚刚替换了

.AddEphemeralSigningKey()

.AddSigningCertificate("my thumbprint")

我现在想确认新证书确实正在使用,但是当我提交使用旧(临时) key 创建的access_token时,它会被毫无问题地接受。我希望它会被拒绝,因为网络应用程序正在使用不同的签名 key !

或者,我是否误解了签名 key 的用途?

我找到了this帖子指出签名 key 不用于签署使用 ASP.Net Core 数据保护堆栈时创建的访问 token ,我认为这适合我的场景,因为我没有使用 JWT token 或自定义 token 格式。

在这种情况下,签名 key 的用途是什么和/或为什么需要它?

最佳答案

In this case, what is the signing key used for and/or why is it required?

正如您提到的帖子中所解释的,签名 key 仅用于签署 OpenIddict 颁发的 JWT token (如果您选择 JWT,则包括身份 token + 访问 token )。

如果您想使用默认 token 格式复制“临时加密/验证 key ”场景,您可以要求 OpenIddict 使用临时数据保护器:

public class Startup
{
    private readonly IDataProtectionProvider _provider =
        new EphemeralDataProtectionProvider();

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddOpenIddict(options =>
        {
            // ...

            options.UseDataProtectionProvider(_provider);
        });
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseOAuthValidation(options =>
        {
            options.DataProtectionProvider = _provider;
        });

        app.UseOpenIddict();
    }
}

您还可以覆盖数据保护选项,为整个应用程序使用临时数据保护器:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDataProtection()
            .UseEphemeralDataProtectionProvider();

        services.AddOpenIddict();
    }

    public void Configure(IApplicationBuilder app)
    {
        app.UseOAuthValidation();

        app.UseOpenIddict();
    }
}

值得注意的是,签名 key 要求在最近的时间里放宽了:不再需要注册证书或临时 key ,除非您决定使用 JWT 访问 token 或启用隐式流动。因此,如果您使用密码流程,则不再强制添加 key 。

关于asp.net-core - 更改签名 key 不会使现有 token 失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42218864/

相关文章:

asp.net-core - 更改 Entity Framework Core 记录的 SQL 查询的日志记录级别

node.js - Microsoft.AspNetCore.SpaServices由于 Node 模块map.d.ts而失败

azure - 如何修复 Azure WebApp 的 'The Azure-Ressource is not reachable'

authentication - 依赖方与身份提供者

asp.net-core - openid connect - 登录期间识别租户

c# - 为什么 StringValues 用于 Request.Query 值?

authentication - OAuth2.0中Refresh Token的使用

c# - 包含访问 token 时如何从客户端应用程序中的 IdentityServer 获取用户 ID?

openiddict asp.net core OpenIdConnectRequest 参数

asp.net-core - 如何解决 AspNet Core 缺少依赖项的问题?