private bool ValidateApiCredentials( HttpRequestMessage request, AclClientCredentials credentials) { var subscribers = GetSubscribers(request); if (subscribers.IsNullOrEmpty()) return false; var thisSubscriber = subscribers.FirstOrDefault( s => s.Identifier.Equals(credentials.Identifier, StringComparison.InvariantCultureIgnoreCase)); if (thisSubscriber.IsNull()) return false; IPrincipal principal; var result = thisSubscriber .ValidateCredentials(credentials, out principal); if (result) { Thread.CurrentPrincipal = principal; _assignPrincipalFactory(request, principal); } return result; }
private static bool TryRetrieveApiCredentials( HttpRequestMessage request, out AclClientCredentials credentials) { return new AclClientCredentialsRetriever() .TryParse(request, out credentials); }
private IPrincipal GetPrincipal( AclClientCredentials credentials) { return new ClaimsPrincipal( new ClaimsIdentity( GetClaims(credentials).ToList(), AuthenticationTypes.Basic)); }
/// <summary> /// Generates a valid base-64 basic authorization token /// </summary> /// <param name="credentials">The credentials (with secret as clear text)</param> /// <returns></returns> public string Generate( AclClientCredentials credentials) { credentials.NotNull(nameof(credentials)); return "Basic {0}".AsFormat( GetBasicAuthorization( credentials.Identifier, credentials.Secret)); }
internal bool ValidateCredentials( AclClientCredentials credentials, out IPrincipal principal) { principal = null; if (ValidateSecret(credentials.Secret)) principal = GetPrincipal(credentials); return principal.IsNotNull(); }
/// <summary> /// Tries to convert the authorization header from the request (if any) /// into an instance of AclClientCredentials /// </summary> /// <param name="request">The request</param> /// <param name="credentials">The credentials</param> /// <returns>True when a valid base-64 basic authorization is found; false, otherwise</returns> public bool TryParse( HttpRequestMessage request, out AclClientCredentials credentials) { request.NotNull(nameof(request)); credentials = null; var authorization = ExtractCredentials(request.Headers.Authorization); if (authorization.Length != 2) return false; credentials = new AclClientCredentials( authorization[0], authorization[1]); return true; }
private IEnumerable<Claim> GetClaims( AclClientCredentials credentials) { yield return new Claim(ClaimTypes.Name, credentials.Identifier); }