Não entendo como funciona esta biblioteca. Você poderia me ajudar por favor ?
Aqui está meu código simples:
public void TestJwtSecurityTokenHandler()
{
var stream =
"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJU1MiLCJzY29wZSI6Imh0dHBzOi8vbGFyaW0uZG5zY2UuZG91YW5lL2NpZWxzZXJ2aWNlL3dzIiwiYXVkIjoiaHR0cHM6Ly9kb3VhbmUuZmluYW5jZXMuZ291di5mci9vYXV0aDIvdjEiLCJpYXQiOiJcL0RhdGUoMTQ2ODM2MjU5Mzc4NClcLyJ9";
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(stream);
}
Este é o erro:
A string precisa estar no formato JSON compacto, que tem o formato: Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL, Base64UrlEncodedSignature '.
Se você copiar o stream no site jwt.io , funciona bem :)
Respostas:
Eu encontrei a solução, só esqueci de lançar o resultado:
Posso obter reivindicações usando:
fonte
((List<Claim>)tokenS.Claims).ForEach(a => Console.WriteLine(a.Type.ToString() + " " + a.Value));
tokenJwtReponse.access_token
vindo?new JwtSecurityTokenHandler().ReadToken("")
retornará umSecurityToken
new JwtSecurityTokenHandler().ReadJwtToken("")
retornará umJwtSecurityToken
Se você apenas mudar o método que está usando, você pode evitar o elenco na resposta acima
fonte
Você precisa da string secreta que foi usada para gerar o token de criptografia. Este código funciona para mim:
fonte
handler.ReadToken(token) as SecurityToken
quando está reatribuindo-o como seuout
parâmetro posteriormente? Existe a possibilidade de queValidateToken
falhe e o valor original seja mantido?Usando pacotes .net core jwt, as reivindicações estão disponíveis:
fonte
Em seguida, extraia o conteúdo
fonte
Estendendo a resposta cooxkie e a resposta dpix , ao ler um token jwt (como um access_token recebido do AD FS), você pode mesclar as declarações no token jwt com as declarações de "context.AuthenticationTicket.Identity" que podem não têm o mesmo conjunto de declarações que o token jwt.
Para ilustrar, em um fluxo de código de autenticação usando OpenID Connect, depois que um usuário é autenticado, você pode manipular o evento SecurityTokenValidated que fornece um contexto de autenticação, então você pode usá-lo para ler o access_token como um token jwt, então você pode " mesclar "tokens que estão no access_token com a lista padrão de declarações recebidas como parte da identidade do usuário:
fonte