public string Authenticate(Credentials creds)
 {
     if (creds == null && WebOperationContext.Current != null)
     {
         var basicAuthHeader = WebOperationContext.Current.IncomingRequest.Headers["Authorization"];
         if (!string.IsNullOrWhiteSpace(basicAuthHeader))
             creds = new BasicAuth(basicAuthHeader).Creds;
     }
     using (var dbContext = new BasicTokenDbContext())
     {
         return new DatabaseTokenBuilder(dbContext).Build(creds);
     }
 }
 private static void ValidateToken(string token)
 {
     using (var dbContext = new BasicTokenDbContext())
     {
         ITokenValidator validator = new DatabaseTokenValidator(dbContext);
         if (!validator.IsValid(token))
         {
             throw new WebFaultException(HttpStatusCode.Forbidden);
         }
         // Add User ids to the header so the service has them if needed
         WebOperationContext.Current?.IncomingRequest.Headers.Add("User", validator.Token.User.Username);
         WebOperationContext.Current?.IncomingRequest.Headers.Add("UserId", validator.Token.User.Id.ToString());
     }
 }
 public DatabaseTokenBuilder(BasicTokenDbContext dbContext)
 {
     _DbContext = dbContext;
 }
 public DatabaseCredentialsValidator(BasicTokenDbContext dbContext)
 {
     _DbContext = dbContext;
 }
 public DatabaseTokenValidator(BasicTokenDbContext dbContext)
 {
     _DbContext = dbContext;
 }