Проверка и расшифровка 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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