Я создал пример приложения, в котором пользователь может проходить проверку подлинности с помощью Azure B2C, который работает нормально. Я получаю токен и AuthenticationResult. Оба в порядке. Но я хочу вернуть ClaimPrincipal из токена. Для этого я добавил в проект пакет nuget System.IdentityModel.Tokens.Jwt (5.4.0).
С помощью следующего кода я пытаюсь добиться:
string Token = "eyJ0eXAiOiJKV1QiLCJhbGciO*****"; //long token
JwtSecurityTokenHandler jwt = new JwtSecurityTokenHandler();
var validateParams = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
{
ValidIssuer = Authority, //https://login.microsoftonline.com/tfp/MYTEANANTNAME.onmicrosoft.com/MYPOLICYNAME/v2.0/"
ValidAudience = clientId, //CLIENTID: Like: b430xxxx-xxxx-xxxx-xxxx-f5c33cxxxxxx
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuer = true,
};
SecurityToken secToken;
var claimPrincipal = jwt.ValidateToken(Token, validateParams , out secToken);
Но при каждом нажатии ValidateToken выдается следующее исключение:
IDX10501: Signature validation failed. Unable to match keys:
kid: '[PII is hidden]',
token: '[PII is hidden]'.
Есть ли у вас какие-либо советы, как мне решить эту проблему?
В этом случае приложение является консольным приложением ядра .net, но, в конце концов, этот код будет в приложении WPF.