更改签名密钥不会使现有令牌失效
Changing the signing key doesn't invalidate existing tokens
我在我的网络应用程序中使用 OpenIddict 并且刚刚替换了
.AddEphemeralSigningKey()
与
.AddSigningCertificate("my thumbprint")
我现在想确认新证书确实在使用中,但是当我提交一个 access_token 时,它是在使用旧的(临时的)时创建的钥匙,它被接受没有问题。我预计它会被拒绝,因为网络应用程序正在使用不同的签名密钥!
或者,我是否误解了签名密钥的用途?
我发现 post 表示签名密钥未用于签署使用 ASP.Net 核心数据保护堆栈时创建的访问令牌,我认为这适合我的情况,因为我没有使用 JWT 令牌或自定义令牌格式。
在这种情况下,用于and/or的签名密钥是什么?
In this case, what is the signing key used for and/or why is it required?
如您提到的 post 中所述,签名密钥仅用于签署由 OpenIddict 颁发的 JWT 令牌(如果您选择了 JWT,则包括身份令牌 + 访问令牌)。
如果您想使用默认令牌格式复制 "ephemeral encryption/validation 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();
}
}
值得注意的是,最近 放宽了 签名密钥要求:不再需要注册证书或临时密钥,除非您决定使用 JWT 访问令牌或启用隐式流。因此,如果您使用的是密码流程,则不再必须添加密钥。
我在我的网络应用程序中使用 OpenIddict 并且刚刚替换了
.AddEphemeralSigningKey()
与
.AddSigningCertificate("my thumbprint")
我现在想确认新证书确实在使用中,但是当我提交一个 access_token 时,它是在使用旧的(临时的)时创建的钥匙,它被接受没有问题。我预计它会被拒绝,因为网络应用程序正在使用不同的签名密钥!
或者,我是否误解了签名密钥的用途?
我发现
在这种情况下,用于and/or的签名密钥是什么?
In this case, what is the signing key used for and/or why is it required?
如您提到的 post 中所述,签名密钥仅用于签署由 OpenIddict 颁发的 JWT 令牌(如果您选择了 JWT,则包括身份令牌 + 访问令牌)。
如果您想使用默认令牌格式复制 "ephemeral encryption/validation 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();
}
}
值得注意的是,最近 放宽了 签名密钥要求:不再需要注册证书或临时密钥,除非您决定使用 JWT 访问令牌或启用隐式流。因此,如果您使用的是密码流程,则不再必须添加密钥。