Я не понимаю, как работает эта библиотека. Не могли бы вы мне помочь, пожалуйста ?
Вот мой простой код:
public void TestJwtSecurityTokenHandler()
{
var stream =
"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJU1MiLCJzY29wZSI6Imh0dHBzOi8vbGFyaW0uZG5zY2UuZG91YW5lL2NpZWxzZXJ2aWNlL3dzIiwiYXVkIjoiaHR0cHM6Ly9kb3VhbmUuZmluYW5jZXMuZ291di5mci9vYXV0aDIvdjEiLCJpYXQiOiJcL0RhdGUoMTQ2ODM2MjU5Mzc4NClcLyJ9";
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(stream);
}
Это ошибка:
Строка должна быть в компактном формате JSON, который имеет вид: Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL, Base64UrlEncodedSignature '.
Если скопировать поток на сайт jwt.io , все работает нормально :)
Ответы:
Я нашел решение, просто забыл передать результат:
Я могу получать претензии, используя:
источник
((List<Claim>)tokenS.Claims).ForEach(a => Console.WriteLine(a.Type.ToString() + " " + a.Value));
tokenJwtReponse.access_token
взялось?new JwtSecurityTokenHandler().ReadToken("")
вернетSecurityToken
new JwtSecurityTokenHandler().ReadJwtToken("")
вернетJwtSecurityToken
Если вы просто измените метод, который вы используете, вы можете избежать приведенного выше ответа
источник
Вам нужна секретная строка, которая использовалась для генерации токена шифрования. У меня работает этот код:
источник
handler.ReadToken(token) as SecurityToken
когдаout
позже переназначаете его в качестве параметра? Есть ли вероятность, чтоValidateToken
произойдет сбой, и исходное значение будет сохранено?При использовании пакетов .net core jwt доступны следующие претензии:
источник
Затем извлеките содержимое
источник
Расширение на cooxkie ответ, и DPix ответ, когда вы читаете JWT маркер (например, access_token получил от AD FS), вы можете объединить требования в JWT маркер с претензий от «context.AuthenticationTicket.Identity» , что не может имеют тот же набор требований, что и токен jwt.
Чтобы проиллюстрировать, в потоке кода аутентификации с использованием OpenID Connect после аутентификации пользователя вы можете обработать событие SecurityTokenValidated, которое предоставляет вам контекст аутентификации, затем вы можете использовать его для чтения access_token как токена jwt, тогда вы можете " объединить токены, которые находятся в access_token, со стандартным списком утверждений, полученных как часть удостоверения пользователя:
источник