暗号化トークンとrsaトークンを使用するのはかなり新しいので、IDentityServer4にdevelopersigningを使用せず、自分の署名を使用させようとしています。ここに私がこれまで試したものがあります:
var keyInfo = new RSACryptoServiceProvider().ExportParameters(true);
var rsaSecurityKey = new RsaSecurityKey(new RSAParameters
{
D = keyInfo.D,
DP = keyInfo.DP,
DQ = keyInfo.DQ,
Exponent = keyInfo.Exponent,
InverseQ = keyInfo.InverseQ,
Modulus = keyInfo.Modulus,
P = keyInfo.P,
Q = keyInfo.Q
});
services.AddIdentityServer()
.AddSigningCredential(rsaSecurityKey)
.AddInMemoryPersistedGrants()
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients())
.AddAspNetIdentity<User>();
ただし、Identity Server4を実行し、別のWebサイトからサインインページにリダイレクトされると、次のエラーが表示されます。
IDX10630:署名の「[PII is hidden]」は「[PII is hidden]」ビットより小さくすることはできません。 KeySize: '[PII is hidden]'。パラメーター名:key.KeySize
私はこの週末にずっとSigningCredentialsを使用する方法を見つけようとしていたことを認めなければなりません、そして私は上記で間違ったことを本当に知りません。
StartupクラスのConfigure()に次を追加すると、開発の詳細を確認できます。
if (env.IsDevelopment())
{
IdentityModelEventSource.ShowPII = true;
}