Nasz starszy programista napisał poniższy kod, jako przykład:analizowaniem JWT dostać roszczeń w C#
public class TokenParser
{
private Token token;
public Token Parse(HttpRequestMessage r)
{
IOwinContext context = r.GetOwinContext();
token = new Token();
ParseData(context);
return token;
}
private void ParseData(IOwinContext context)
{
token.Name= context.Authentication.User.Claims.Single(x => x.Type == ClaimTypes.Name).Value;
}
}
(. Jest też klasa „Token.cs”, który właśnie ma właściwość nazwę jako ciąg)
Nasz decoded JWT ładowność wygląda następująco:
{
"iss": "https://someissuer.com/",
"sub": "I want this string, atm I get it manually",
"aud": "11543fdsasf23432",
"exp": 33244323433,
"iat": 23443223434
}
problem napotkasz jest to, że gdy próbuję dostać roszczenia typu „sub”, nic nie wyjdzie (i to nie jest na liście). ALE "sub" wydaje się być extremely common claim.
Co ja tu robię źle? Czy otrzymam roszczenie podmiotu ("sub")?
Edit: Dla tych zalecające system.IdentityModel - otrzymuję ten błąd, gdy próbuje go używać:
Możliwy duplikat [dekodowania i weryfikacji za pomocą tokenu JWT System.IdentityModel.Tokens.Jwt] (https://stackoverflow.com/ pytania/18677 837/dekodowanie-weryfikacja-jwt-token-using-system-identitymodel-tokens-jwt) –