use*_*948 4 c# token claims-based-identity claims access-token
我一直在寻找一个确切的答案,但似乎大多数答案都是客户端调用并且超出了范围。
问题:我已经有一个访问令牌访问令牌。仅在给定访问令牌的情况下,如何使用 c# 代码获得声明?
我认为:以下是相同的问题,但没有我认为合适的答案。
安装包 Newtonsoft.Json
访问令牌只是 base64 编码的 JSON。您可以按如下方式解析令牌
string token =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ";
var parts = token.Split('.');
var decoded = Convert.FromBase64String(parts[1]);
var part = Encoding.UTF8.GetString(decoded);
var jwt = JObject.Parse(part);
var name = jwt["name"].Value<string>();
Run Code Online (Sandbox Code Playgroud)
更新
大多数情况下,您不需要像上面那样解析令牌,只需使用推荐的 JWT 库即可进行验证和解析。例如
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());