Проверка и расшифровка id_token JWE с помощью JwtSecurityTokenHandler ValidateToken с помощью .NET Framework DotnetNukeC#

Место общения программистов C#
Anonymous
Проверка и расшифровка id_token JWE с помощью JwtSecurityTokenHandler ValidateToken с помощью .NET Framework DotnetNuke

Сообщение Anonymous »

От конечной точки /token France Connect Plus для OpenID Connect я получаю JWE id_token, который мне необходимо расшифровать и проверить, однако он не работает

Microsoft.IdentityModel.Tokens.SecurityTokenDecryptionFailedException : 'IDX10609: расшифровка не удалась. Ключи не пробовались: токен: 'System.String'.'

При использовании

Код: Выделить всё

var handler = new JwtSecurityTokenHandler();

handler.ValidateToken(
idToken,
validationParameters,
out SecurityToken validatedToken
);
Я думаю, что проблема связана с TokenDecryptionKeys, используемым в TokenValidationParameters, но я не уверен, и все, что я пробовал до сих пор, не удалось.

Код: Выделить всё

var idToken = Convert.ToString(tokenDictionary["id_token"]);

var decryptionKey = @"-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----";

WebProxy webProxy = new WebProxy("http://proxy", false);

var httpHandler = new System.Net.Http.HttpClientHandler
{
Proxy = webProxy,
UseProxy = true
};

var httpClient = new System.Net.Http.HttpClient(httpHandler);

var documentRetriever = new HttpDocumentRetriever(httpClient)
{
RequireHttps = true
};

var configurationManager =
new ConfigurationManager(
"https://auth.integ01.dev-franceconnect.fr/api/v2/.well-known/openid-configuration",
new OpenIdConnectConfigurationRetriever(),
documentRetriever // ajout du proxy
);

OpenIdConnectConfiguration config =
configurationManager.GetConfigurationAsync(CancellationToken.None).Result;

var key =  new SymmetricSecurityKey(Encoding.Unicode.GetBytes(decryptionKey));

var validationParameters = new TokenValidationParameters
{
ValidIssuer = "https://auth.integ01.dev-franceconnect.fr/api/v2",
ValidAudience = "client_id",

IssuerSigningKeys = config.SigningKeys,

TokenDecryptionKeys = new[] { key },

ValidateIssuer = true,
ValidateAudience = true,
ValidateIssuerSigningKey = true,
ValidateLifetime = true
};

// fails here
handler.ValidateToken(
idToken,
validationParameters,
out SecurityToken validatedToken
);
Спасибо за помощь


Подробнее здесь: https://stackoverflow.com/questions/798 ... atetoken-w

Вернуться в «C#»