Пользовательская авторизация JWTToken в функциях Azure - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь использовать JWTToken для пользовательской авторизации в функции Azure (я новичок в обоих).У меня работает базовый 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");

В лазурной функции после проверки токена мне нужно будет прочитать токен и сравнить полезную нагрузку

  [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, это моя пользовательская авторизация.(Я сделаю черный список и запросить токен тоже).Есть ли библиотека или более простой способ?

...