验证基于identityserver4授权的token

问题:

  aspnetcore  services 注入一把梭,为什么会有这种需求?

  因为有的程序不是aspnetcore,asp.net web api 也想接入。

实现:

  // 需要引用的包,最低支持4.5

  System.IdentityModel.Tokens.Jwt 5.6.0

  主要代码

  // 获取公钥

     var json = httpclient 获取 jwks;

  var jwk = Microsoft.IdentityModel.Tokens.JsonWebKeySet.Create(json);

  // 构建parameter

       var parameter = new Microsoft.IdentityModel.Tokens.TokenValidationParameters();
       parameter.IssuerSigningKeys = jwk.GetSigningKeys();

  // 验证颁布者
       parameter.ValidIssuer = "http://localhost:5000";

  // 验证资源
       parameter.ValidAudience = "api1";

       // 验证token

  var claimsPrincipal = new System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler().ValidateToken(tokenString, parameter, out Microsoft.IdentityModel.Tokens.SecurityToken token);

posted @ 2019-11-12 17:08  whyfate  阅读(636)  评论(0编辑  收藏  举报