如何使用 IdentityServer4 创建 RsaSecurityKey.KeyId
How to create RsaSecurityKey.KeyId with IdentityServer4
我正在使用 IdentiyServer4 生成令牌,我正在使用 AddDeveloperSigningCredential()
方法生成带有 KeyId 的 RSA 密钥。
但是,在生产中,我使用 AddSigningCredential(CreateSigningCredential())
来生成这样的密钥:
private SigningCredentials CreateSigningCredential()
{
var signinkey = new RsaSecurityKey(RSA.Create());
signinkey.KeyId = "abcdefghijklmnopqrstuvwxyz";//How to generate KeyId ??
var credentials = new SigningCredentials(signinkey,
SecurityAlgorithms.RsaSha256);
return credentials;
}
如何生成KeyId?我可以将它设置为任意值吗?
您不需要设置 keyId 也不需要自己在代码中创建 RSA 密钥,这听起来是不好的做法。那么您也可以使用 AddDeveloperSigningCredential 方法。
您实际上可以在此处查看该方法的源代码,了解它们是如何在代码中实现的:
https://github.com/DuendeSoftware/IdentityServer/blob/main/src/IdentityServer/Configuration/DependencyInjection/BuilderExtensions/Crypto.cs
但是,在生产中,您应该在外部生成密钥并将其传递给 IdentityServer,因此密钥在 redeployment/restarts 中是相同的。否则之前发行的代币将不再有效。
例如,您可以将密钥存储在 Azure Key Vault 中,或使用其他一些 configuration/secret 系统。或者在数据库中或某处的文件中。
如果您想使用 OpenSSL 手动创建一个,那么您可以编写
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -aes256 -out rsa-private-key.pem
我正在使用 IdentiyServer4 生成令牌,我正在使用 AddDeveloperSigningCredential()
方法生成带有 KeyId 的 RSA 密钥。
但是,在生产中,我使用 AddSigningCredential(CreateSigningCredential())
来生成这样的密钥:
private SigningCredentials CreateSigningCredential()
{
var signinkey = new RsaSecurityKey(RSA.Create());
signinkey.KeyId = "abcdefghijklmnopqrstuvwxyz";//How to generate KeyId ??
var credentials = new SigningCredentials(signinkey,
SecurityAlgorithms.RsaSha256);
return credentials;
}
如何生成KeyId?我可以将它设置为任意值吗?
您不需要设置 keyId 也不需要自己在代码中创建 RSA 密钥,这听起来是不好的做法。那么您也可以使用 AddDeveloperSigningCredential 方法。
您实际上可以在此处查看该方法的源代码,了解它们是如何在代码中实现的: https://github.com/DuendeSoftware/IdentityServer/blob/main/src/IdentityServer/Configuration/DependencyInjection/BuilderExtensions/Crypto.cs
但是,在生产中,您应该在外部生成密钥并将其传递给 IdentityServer,因此密钥在 redeployment/restarts 中是相同的。否则之前发行的代币将不再有效。
例如,您可以将密钥存储在 Azure Key Vault 中,或使用其他一些 configuration/secret 系统。或者在数据库中或某处的文件中。
如果您想使用 OpenSSL 手动创建一个,那么您可以编写
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -aes256 -out rsa-private-key.pem