protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        var authHeader = request.Headers.Authorization;

        if (authHeader == null)
            return base.SendAsync(request, cancellationToken);

        if (authHeader.Scheme != "Basic")
            return base.SendAsync(request, cancellationToken);

        if (String.IsNullOrEmpty(authHeader.Parameter))
            return base.SendAsync(request, cancellationToken);

        var encodedUserPass = authHeader.Parameter.Trim();
        var userPass = Encoding.ASCII.GetString(Convert.FromBase64String(encodedUserPass));
        var parts = userPass.Split(":".ToCharArray());
        var email = parts[0];
        var password = parts[1];
        var mem = new UserMembershipProvider();
        if (!mem.ValidateUserEncoded(email, password))
            return base.SendAsync(request, cancellationToken);

        var i = new RadarIdentity(email, "Basic");
        //var identity = new GenericIdentity(username, "Basic");

        //string[] roles = RadarRoleProvider.GetRolesForUser(email);
        var p = new RadarPrincipal(i);
        //var principal = new GenericPrincipal(i, roles);
        Thread.CurrentPrincipal = p;

        if (HttpContext.Current != null)
            HttpContext.Current.User = p;

        return base.SendAsync(request, cancellationToken);
    }
 /// <summary>
 /// Implement to include authentication logic and create IPrincipal
 /// </summary>
 protected abstract bool TryCreatePrincipal(string email, string password, out RadarPrincipal principal);
 private bool CheckUsers(RadarPrincipal principal)
 {
     string[] users = UsersSplit;
     if (users.Length == 0) return true;
     //NOTE: This is a case sensitive comparison
     return users.Any(u=> principal.Identity.Name == u);
 }
 /// <summary>
 /// Implement to include authentication logic and create IPrincipal
 /// </summary>
 protected override bool TryCreatePrincipal(string email, string password, out RadarPrincipal principal)
 {
     principal = null;
     var mem = new UserMembershipProvider();
     if (!mem.ValidateUserEncoded(email, password))
         return false;
     principal = new RadarPrincipal(new RadarIdentity(email, "Basic"));
     return true;
 }
 private bool CheckRoles(RadarPrincipal principal)
 {
     string[] roles = RolesSplit;
     if(roles.Length == 0) return true;
     return roles.Any(principal.IsInRole);
 }