Azure函数中的自定义JWTToken授权

时间:2018-11-23 12:04:51

标签: jwt azure-functions

我正在尝试使用JWTToken进行Azure Function中的自定义授权(我都是新手)。我有基本的JWTToken工作,现在我问是否有更好的方法

生成jwttoken时,我使用ClaimsIdentity添加自定义声明“ TestAllowAccess”

 ClaimsIdentity claimsIdentity = new ClaimsIdentity (new List<Claim> ()
 {
      new Claim (ClaimTypes.NameIdentifier,    "myemail@myprovider.com"),
      new Claim (ClaimTypes.Role,              "Administrator"),

      new Claim ("TestAllowAccess",             ""),
  }, "Custom");

在azure函数中,验证令牌后,我将不得不读取令牌并比较有效载荷

  [FunctionName ("Function1")]
  public static IActionResult Run ([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)]HttpRequest req, ILogger log, ExecutionContext context)
  {
      // no error checking
      string jwtToken = req.Headers ["Authorization"][0].Substring ("Bearer ".Length);

      // validate token with validation parameters...

      JwtSecurityTokenHandler  tokenHandlerVerify = new JwtSecurityTokenHandler ();

      tokenHandlerVerify.ValidateToken (jwtToken, tokenValidationParameters, out SecurityToken validatedToken);

      // read for further validate authentication
      JwtSecurityToken token = tokenHandlerVerify.ReadJwtToken (jwtToken);

      if (!token.Payload.ContainsKey ("TestAllowAccess"))
         throw new SecurityTokenException ("TestAllowAccess Fail");
  }

我的问题是

  1. 这是进行自定义授权的正确方法吗?有没有更好的方法可以做到这一点,也许无需读取有效载荷

  2. 似乎所有功能中都有很多代码可以重复,我看到有EasyAuth,但我没有使用AD,这是我的自定义授权。 (我也会做黑名单并请求令牌)。有图书馆还是更简单的方法?

0 个答案:

没有答案