public Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken) { context.Principal = null; AuthenticationHeaderValue authentication = context.Request.Headers.Authorization; if (authentication != null && authentication.Scheme == "Basic") { string[] authData = Encoding.ASCII.GetString(Convert.FromBase64String(authentication.Parameter)).Split(':'); context.Principal = StaticUserManager.AuthenticateUser(authData[0], authData[1]); } if (context.Principal == null) { context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[] { new AuthenticationHeaderValue("Basic") }, context.Request); } return(Task.FromResult <object>(null)); }
protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { AuthenticationHeaderValue authentication = request.Headers.Authorization; if (authentication != null && authentication.Scheme == "Basic") { string[] authData = Encoding.ASCII.GetString(Convert.FromBase64String(authentication.Parameter)).Split(':'); request.GetRequestContext().Principal = StaticUserManager.AuthenticateUser(authData[0], authData[1]); } HttpResponseMessage response = await base.SendAsync(request, cancellationToken); if (response.StatusCode == HttpStatusCode.Unauthorized) { response.Headers.Add("WWW-Authenticate", "Basic"); } return(response); }