如何从令牌中提取并获得声明?

我一直在寻找一个确切的答案,但似乎大多数答案是客户电话和超出范围。

问题:我已经拥有访问令牌访问令牌。 如何仅使用访问令牌使用c#代码获取声明?

我想:以下是相同的问题,但我认为没有答案。

如何从经过身份validation的SecurityToken中获取声明

如何从我的Oauth令牌中读取声明?

安装包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(); 

UPDATE

  1. 建议不要在客户端上解析访问令牌,只应在资源服务器上解析访问令牌。
  2. 您必须validation资源服务器上的访问令牌,以确保令牌在途中未被篡改。
  3. 大多数情况下,您不需要像上面那样解析令牌,只需使用推荐的JWT库来同时进行validation和解析。 例如

    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());