Nuestro desarrollador senior escribió el siguiente código, como ejemplo:
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; } }(También hay una clase "Token.cs" que solo tiene una propiedad de nombre como cadena).
Nuestra carga útil JWT decodificada se ve así:
{ "iss": "https://someissuer.com/", "sub": "I want this string, atm I get it manually", "aud": "11543fdsasf23432", "exp": 33244323433, "iat": 23443223434 }El problema con el que me encuentro es que cuando trato de obtener un reclamo por Tipo "sub", no aparece nada (y no está en la lista). PERO "sub" parece ser un reclamo extremadamente común .
¿Qué estoy haciendo mal aquí? ¿Obtengo el asunto ("sub") reclamo?
Editar: para aquellos que recomiendan system.IdentityModel: aparece este error cuando intento usarlo:

Si tiene el token en formato JWT, puede usar System.IdentityModel.Tokens.Jwt.dll, v2.0.0.0 y obtener el asunto como se muestra a continuación
var jwtToken = new JwtSecurityToken(token); jwtToken.Subject