예제 #1
0
        public async Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
        {
            var request = context.Request;

            var requestScope = context.Request.GetDependencyScope();

            _basicmanager = requestScope.GetService(typeof(IBasicManager)) as IBasicManager;

            var authorization = request.Headers.Authorization;

            if (authorization == null)
            {
                context.ErrorResult = new AuthenticationFailureResult("Missing Authorization Value", request);
                return;
            }

            if (authorization.Scheme != "Basic")
            {
                context.ErrorResult = new AuthenticationFailureResult("Wrong Authorization Scheme", request);
                return;
            }

            if (string.IsNullOrEmpty(authorization.Parameter))
            {
                context.ErrorResult = new AuthenticationFailureResult("Missing Basic Token", request);
                return;
            }

            var token     = authorization.Parameter;
            var principal = await AuthenticateBasicToken(token);

            if (principal == null)
            {
                context.ErrorResult = new AuthenticationFailureResult("Invalid token", request);
            }

            else
            {
                context.Principal = principal;
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="manager"></param>
 public BasicController(IBasicManager manager)
 {
     this.manager = manager;
 }