Я хочу сгенерировать токен JWT в .Net 4.5 с использованием асимметричного ключа, который я предоставляю сам, но я сталкиваюсь с несколькими проблемами с System.IdentityModel.Tokens.Jwt, версия 4.0 0,3.RsaSecurityKey не принимает RSAParameters в качестве аргументов
Желательно, чтобы я создал свои собственные ключи 2048, как поставщик позволяет мне это делать. Конструктор RSA.Create() создает 1024 ключа.
using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider(2048))
{
var publicPrivate = provider.ToXmlString(true);
var publicKeyOnly = provider.ToXmlString(false);
var stuff = provider.ExportParameters(true);
signingCredentials = new SigningCredentials(new RsaSecurityKey(RSA.Create()), SecurityAlgorithms.RsaSha256Signature, SecurityAlgorithms.Sha256Digest); //no idea how to pull the key out of here.
}
Во многих примерах можно опустить RSAParameters в конструктор RsaSecurityKey, но теперь он принимает только конструктор RSA.Create() (с дополнительным параметром строки) Следующий код надрез происходит от https://stackoverflow.com/a/38233644 Обратите внимание, что в этом примере RSAParameters прекрасно вписываются в конструктор RsaSecurityKey, который я не могу сделать с моей версией, я ограничен использованием RSA.Create, это швы.
// NOTE: Replace this with your actual RSA public/private keypair!
var provider = new RSACryptoServiceProvider(2048);
var parameters = provider.ExportParameters(true);
// Build the credentials used to sign the JWT
var signingKey = new RsaSecurityKey(parameters); //not an option for me, unfortunately
Одним из элементов этого является то, что для 4.0.3 один не использует параметры в RsaSecurityKey, вы используете поставщика. поставщик услуг = новый RSACryptoService (2048); var signKey = новый RsaSecurityKey (поставщик); Я нашел его в следующей ссылке. https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/477 – user7101139