Exemplo n.º 1
0
        public async Task <bool> IsAuthenticated(HttpRequestMessage request)
        {
            if ((request.Headers.Authorization == null) || (!request.Headers.Contains(HeaderNames.UsernameHeader)))
            {
                return(false);
            }

            var secret = getSecretFromUsername.Secret(request.Headers.GetValues(HeaderNames.UsernameHeader).FirstOrDefault());

            if (secret == null)
            {
                return(false);
            }

            if ((request.Content != null) && (request.Content.Headers.ContentMD5 != null))
            {
                var isValidHash = await hashCalculator.IsValidHash(request);

                if (!isValidHash)
                {
                    return(false);
                }
            }

            var signature = buildRequestSignature.Build(secret, request);

            if (signature != request.Headers.Authorization.Parameter)
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            string signature = buildRequestSignature.Build(secret, request);

            request.Headers.Authorization = new AuthenticationHeaderValue(HeaderNames.AuthenticationScheme, signature);

            return(base.SendAsync(request, cancellationToken));
        }