Я новичок в 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 (на стороне клиента) при вызове?