ASP.NET Web-API Basic Authentication Authorisation-Header

Ich habe eine BasicAuthenticationAttribute, die Prüfung der Zulassung-header in die Anfrage, aber obwohl es vorhanden ist, es glaubt immer noch, dass die Zulassung header null ist:

public class BasicAuthenticationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (actionContext.Request.Headers.Authorization == null)
        {
            actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
        }

        ...

Wenn ich überprüfen actionContext.Request.Headers ich sehen kann Authorization aufgeführt:

{Connection: Keep-Alive
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-gb
Authorization: REDACTED_BUT_PRESENT==
Host: localhost:44300
Referer: https://localhost:44300/
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)
}

Update

Ich habe gerade überprüft den vollständigen request-Header und so sehen Sie aus... ich sehe einen Authorization-header in dem ersten Abschnitt, aber der Authorization-header in der zweiten Sektion ist eindeutig null.

Anfrage.Header

{Connection: Keep-Alive
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-gb
Authorization: REDACTED_BUT_PRESENT==
Host: localhost:1734
Referer: http://localhost:1734/
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)
}
    base {System.Net.Http.Headers.HttpHeaders}: {Connection: Keep-Alive
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-gb
Authorization: VXNlcjpQYXNzd29yZA==
Host: localhost:1734
Referer: http://localhost:1734/
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; .NET4.0E)
}
    Accept: {*/*}
    AcceptCharset: {}
    AcceptEncoding: {gzip, deflate}
    AcceptLanguage: {en-gb}
    Authorization: null
    CacheControl: null
    ... removed for brevity ...
    Warning: {}
  • sind Sie versuchen, die Basic-Authentifizierung.
  • ja - also ich werde die Genehmigung header und untersuchen es dann mit meinem Action Filter.
  • Ich habe eine Message-handler, und es scheint gut zu funktionieren. Ich werde versuchen, mit der Aktion auch filter. Können Sie überprüfen, ob dies hilft gist.github.com/3872727 -Handler ,gist.github.com/3872715 - Unit-Test
  • Dies ist im wesentlichen das gleiche für mich - ich kann sehen, dass der Authorization-header nur als gebucht, aber in der Message-Handler und denkt, dass request.Headers.Authorization null ist. Lassen Sie mich überprüfen Sie die Kopfzeilen generiert, der unit-tests und sehen, ob es anders aussieht.
InformationsquelleAutor Fenton | 2012-10-11
Schreibe einen Kommentar