Реализуйте IAuthenticationFilter в WebApi - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть WebAPI, где у меня есть несколько контроллеров.

Теперь я собираюсь реализовать защиту на основе токенов в моем веб-интерфейсе. токен генерируется в нашей базе данных. Я хочу аутентифицировать действия с этим токеном. Я думаю о том, чтобы реализовать это с IAuthenticationFilter. Но я не понимаю, как я могу это сделать.

любая помощь здесь?

1 Ответ

0 голосов
/ 17 апреля 2019

Вы можете перейти к этой теме, чтобы реализовать свой фильтр.

public class TokenAuthenticate : Attribute, IAuthenticationFilter
    {

        public bool AllowMultiple
        {
            get
            {
                return false;
            }
        }

        public async Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
        {
            try
            {
                IAuthService _authService = context.ActionContext.ControllerContext.Configuration
                                  .DependencyResolver.GetService(typeof(IAuthService)) as IAuthService;

                HttpRequestMessage request = context.Request;
                AuthenticationHeaderValue authorization = request.Headers.Authorization;

                if (authorization == null)
                {
                    context.ErrorResult = new AuthenticationFailureResult("Missing autorization header", request);
                    return;
                }
                if (authorization.Scheme != "Bearer")
                {
                    context.ErrorResult = new AuthenticationFailureResult("Invalid autorization scheme", request);
                    return;
                }
                if (String.IsNullOrEmpty(authorization.Parameter))
                {
                    context.ErrorResult = new AuthenticationFailureResult("Missing Token", request);
                    return;
                }

                Boolean correctToken = await _authService.ValidateTokenAsync(authorization.Parameter);
                if(!correctToken)
                    context.ErrorResult = new AuthenticationFailureResult("Invalid Token", request);
            }
            catch (Exception ex)
            {
                context.ErrorResult = new AuthenticationFailureResult("Exception: \n" + ex.Message, context.Request);
            }
        }

    }

https://blog.zaven.co/user-authentication-asp-net-web-api-2-rsa-jwt-tokens-part-4/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...