我一直在寻找一个确切的答案,但似乎大多数答案都是客户电话而且超出了范围。
问题:我已经拥有访问令牌访问令牌。如何仅使用访问令牌使用c#代码获取声明?
我认为:以下是相同的问题,但我认为没有答案。
答案 0 :(得分:1)
Install-Package 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>();
<强> 更新 强>
大多数时候你不需要像上面那样解析令牌,只需使用一个 建议进行验证和解析的JWT库。 e.g。
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());