Как правильно проверить асимметричный токен в ядре asp.net SignalR из клиента TypeScript? - PullRequest
0 голосов
/ 05 июня 2019

Я новичок в ASP.NET Core и до сих пор не знаю, как правильно настроить промежуточное ПО в Startup.cs.Мой сервер ожидает клиентов SignalR, и они будут вызывать методы на концентраторе signalR, но перед этим необходима аутентификация токена.(Мне нужно только проверить, правильно ли подписан токен и истек ли срок его действия, и если он действителен для считывания утверждения идентификатора клиента из токена).

В настоящее время у меня есть метод, который проверяет токен, и я вызываю его явно в каждом методе-концентраторе,необходимо авторизоваться, и это выглядит так:

public bool ValidateToken(string token)
{
  var handler = new JwtSecurityTokenHandler();     
  try
  {
    var claimsPrincipal = handler.ValidateToken(
        token,
        new TokenValidationParameters
        {
          ValidAudience = Audience,
          ValidIssuer = Issuer,
          RequireSignedTokens = false,
          TokenDecryptionKey = new X509SecurityKey(new X509Certificate2(PfxPath, Password))
        },
        out SecurityToken securityToken);

  }
  catch (Exception e)
  {
    Debug.WriteLine("token not valid, message: " + e.Message);
    return false;
  }
  return true;
}

И я использую его в Hub следующим образом:

public void RegisterUserClient(string token)
    {
      bool validated = Auth.ValidateTokenAndGetID(token);

      if (validated)
      {
        Debug.Write("Access token validated, user id: " + userID);

      } else
      {
      throw new HubException("Token is not valid");
}

Но я знаю, что ASP.NET Core делает эту авторизацию впромежуточное программное обеспечение, и я хотел бы использовать [Authorize] для методов для проверки токена.

Другой вопрос, когда я правильно настраиваю ядро ​​ASP.NET для использования [Authorize], как правильно отправлять токен в TypeScript (на стороне клиента) при вызове?

...