我正在使用 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?我可以將它設定為任意值嗎?
uj5u.com熱心網友回復:
您不需要在代碼中設定 keyId 并自己創建 RSA 密鑰,這聽起來很糟糕。然后您也可以使用 AddDeveloperSigningCredential 方法。
您實際上可以在此處查看該方法的源代碼,以了解它們是如何在代碼中執行的:https : //github.com/DuendeSoftware/IdentityServer/blob/main/src/IdentityServer/Configuration/DependencyInjection/BuilderExtensions/Crypto.cs
但是,在生產中,您應該在外部生成密鑰并將其傳遞給 IdentityServer,因此在重新部署/重新啟動時密鑰是相同的。否則之前發行的代幣將不再有效。
例如,您可以將密鑰存盤在 Azure Key Vault 中,或使用其他一些配置/秘密系統。或者在資料庫中或作為某個地方的檔案。
如果你想手動創建一個,使用 OpenSSL,那么你可以寫
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -aes256 -out rsa-private-key.pem
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/384704.html
標籤:asp.net核心 jwt rsa openid 连接
