我从Azure AD登录获取Access令牌。 但我不想使用JWT dll从Access Token中提取数据。 所以我需要一个替代解决方案。 这是我在JWT中的示例代码
var handler = new JwtSecurityTokenHandler();
JwtSecurityToken tokenS = handler.ReadToken(data.AccessToken) as JwtSecurityToken;
var claims = tokenS.Claims;
var username = claims.FirstOrDefault(s => s.Type == "email").Value;
使用dll:使用System.IdentityModel.Tokens.Jwt; 我不希望这个dll用于提取数据。我不需要使用dll就需要另一种解决方案。
答案 0 :(得分:1)
我不会问为什么你不想使用你所拥有的库来达到其预期的目的。无论如何,JWT只是3个base 64编码的字符串与'连接。(假设它已签名但未加密)
所以:
var split = jwt.Split('.')
var token = Convert.FromBase64String(split([1]))
中间位是json中的标记,使用newtonsoft来读取它