I have a controller that receives a JWT token and I need to get the custom claims from it. The claim is of type "custom" as defined by http://www.imsglobal.org/spec/lti/v1p3/#custom-properties-and-variable-substitution (unfortunately, their link to the spec is a 404).
What this looks like in a decoded token is
Doing this
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.ReadJwtToken(authorizedRequest.id_token);
// TODO this is way too vague and _can't_ be the correct way that we can get this information from all platforms, can it?
var claim = token.Claims.First(c => c.Type == "https://purl.imsglobal.org/spec/lti/claim/custom");
var data = JsonConvert.DeserializeObject(claim.Value);
data is:
I expected to see an object such as
{
name = "Chris",
email = "c@ex.com",
userId = "123"
}
with the goal of being able to get these values with a data.name. What is the right way to access these?

