コード例 #1
0
        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;
        }
コード例 #2
0
 private static bool TryRetrieveApiCredentials(
     HttpRequestMessage request,
     out AclClientCredentials credentials)
 {
     return new AclClientCredentialsRetriever()
         .TryParse(request, out credentials);
 }
コード例 #3
0
ファイル: Subscriber.cs プロジェクト: c4rm4x/C4rm4x.WebApi
 private IPrincipal GetPrincipal(
     AclClientCredentials credentials)
 {
     return new ClaimsPrincipal(
         new ClaimsIdentity(
             GetClaims(credentials).ToList(),
             AuthenticationTypes.Basic));
 }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
ファイル: Subscriber.cs プロジェクト: c4rm4x/C4rm4x.WebApi
        internal bool ValidateCredentials(
            AclClientCredentials credentials, 
            out IPrincipal principal)
        {
            principal = null;

            if (ValidateSecret(credentials.Secret))
                principal = GetPrincipal(credentials);

            return principal.IsNotNull();
        }
コード例 #6
0
        /// <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;
        }
コード例 #7
0
ファイル: Subscriber.cs プロジェクト: c4rm4x/C4rm4x.WebApi
 private IEnumerable<Claim> GetClaims(
     AclClientCredentials credentials)
 {
     yield return new Claim(ClaimTypes.Name, credentials.Identifier);
 }