【问题标题】:How to set HttpAuthenticationContext.Errorcontext to Unauthorized如何将 HttpAuthenticationContext.Errorcontext 设置为未经授权
【发布时间】:2017-04-15 07:44:23
【问题描述】:

我正在尝试学习本教程:http://bitoftech.net/2014/12/15/secure-asp-net-web-api-using-api-key-authentication-hmac-authentication/

关于如何使用 HMAC 保护 webapi。它在教程代码中的某处提供:

  public Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken)
    {
        var req = context.Request;

        if (req.Headers.Authorization != null && authenticationScheme.Equals(req.Headers.Authorization.Scheme, StringComparison.OrdinalIgnoreCase))
        {
            var rawAuthzHeader = req.Headers.Authorization.Parameter;

            var autherizationHeaderArray = GetAutherizationHeaderValues(rawAuthzHeader);

            if (autherizationHeaderArray != null)
            {
                var APPId = autherizationHeaderArray[0];
                var incomingBase64Signature = autherizationHeaderArray[1];
                var nonce = autherizationHeaderArray[2];
                var requestTimeStamp = autherizationHeaderArray[3];

                var isValid = isValidRequest(req, APPId, incomingBase64Signature, nonce, requestTimeStamp);

                if (isValid.Result)
                {
                    var currentPrincipal = new GenericPrincipal(new GenericIdentity(APPId), null);
                    context.Principal = currentPrincipal;
                }
                else
                {
                    context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[0], context.Request);
                }
            }
            else
            {
                context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[0], context.Request);
            }
        }
        else
        {
            context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[0], context.Request);
        }

        return Task.FromResult(0);
    }

我当然复制了它,但是 mvc 不知道这些参数的任何未经授权的结果。所以这一行给出了一个错误:context.ErrorResult = new UnauthorizedResult(new AuthenticationHeaderValue[0], context.Request);

我不知道如何返回正确的结果。有人知道吗?

【问题讨论】:

标签: c# asp.net asp.net-web-api


【解决方案1】:

我使用了错误的命名空间。应该是using System.Web.Http.Results;

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2015-10-16
    • 2014-05-29
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多