Beispiel #1
0
        public RequestMessageContext GetApiKeyFromAuthorizationHeader()
        {
            this.Logger.LogDebug($"Attempting to retrieve API key value from Authorization header.");

            var message = new RequestMessageContext();

            if (!this.Request.Headers.TryGetValue(AuthorizationHeader, out Microsoft.Extensions.Primitives.StringValues headerValue))
            {
                message.Result = AuthenticateResult.NoResult();
                return(message);
            }

            if (!AuthorizationHeaderValue.TryParse(headerValue, out AuthorizationHeaderValue auth_header))
            {
                message.Result = AuthenticateResult.NoResult();
                return(message);
            }

            if (!auth_header.AuthenticationType.Equals(this.Options.AuthenticationType, StringComparison.OrdinalIgnoreCase))
            {
                message.Result = AuthenticateResult.NoResult();
                return(message);
            }

            string[] valueParts = auth_header.Value.Split(':');

            if (valueParts.Length != 2)
            {
                message.Result = AuthenticateResult.Fail("Invalid API Key format.");
                return(message);
            }

            message.Key = new ApiKey()
            {
                ClientID = valueParts[0],
                Secret   = valueParts[1]
            };

            return(message);
        }