首页 文章

从持有人令牌web api获取用户数据

提问于
浏览
0

我正在使用C#实现.NET Web API 2 . 这工作正常,我发送用户名和密码,并返回一个持票人令牌 .

现在令牌用于其他API调用,但在每次调用中我想知道用户数据 . 这是因为任何应用程序都可以调用Web API,例如来自python代码等,在这种情况下,它只会发送不记名令牌但不会发送用户名 .

我试图挖掘代码但无法找到它 .

任何想法都会在这里得到最多的赞赏

1 回答

  • 0

    这个问题的答案取决于你需要什么类型的承载令牌来解码有效载荷并获取"sub"属性 . 'sub'被称为'claim' . 令牌包含许多声明,但'sub'通常存储用户ID . 有关详细信息,请参阅此处:https://jwt.io/introduction/

    在C#中,您可以使用String.Split()解析令牌的有效负载,然后base 64解码有效负载,如下所示:

    var payload = Encoding.UTF8.GetString(TextEncodings.Base64Url.Decode(b64Payload));
    

    从那里,您只需要将有效负载反序列化为与您期望的格式匹配的对象:

    var tokenPayloadObj = JsonConvert.DeserializeObject<YourJwtObjectHere>(payload);
    

    最后,您的用户标识应该是您的jwt标记对象的属性:

    var userId = tokenPayloadObj.UserId;
    

相关问题