1

In meiner Web-API möchte ich das Zugriffstoken aus dem Header Cookies in der Anforderung abrufen und dann die Validierung für das Token durchführen. Momentan wird das IdentityServer3.AccessTokenValidation-Paket zur Überprüfung des Bearer-Tokens verwendet, und es wird nur nach dem Token aus dem Autorisierungsheader gesucht. Vorzugsweise würde ich gerne den gleichen Bearer-Token-Validierungsprozess verwenden, aber den Token aus der Cookies-Kopfzeile holen, ist dieser Ton mit handlichen Codes machbar? DankZugriffstoken von einem benutzerdefinierten Header abrufen

Antwort

2

einfach Ihre eigenen TokenProvider implementieren und liefern sie an die AccessTokenValidationMiddleware:

public class MyCustomTokenProvider : IOAuthBearerAuthenticationProvider 
{ 
    public Task RequestToken(OAuthRequestTokenContext context) 
    { 
     if (context.Token == null) 
     { 
      //try get from cookie 
      var tokenCookie = context.Request.Cookies["myCookieName"]; 

      if (tokenCookie != null) 
      { 
       context.Token = tokenCookie; 
      } 
     } 

     return Task.FromResult(0); 
    } 

    public Task ValidateIdentity(OAuthValidateIdentityContext context) 
    { 
     throw new NotImplementedException(); 
    } 

    public Task ApplyChallenge(OAuthChallengeContext context) 
    { 
     throw new NotImplementedException(); 
    } 
} 

In Ihrem Startup.cs:

app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions 
{ 
    Authority = "http://myhost", 
    RequiredScopes = new[] { "my-scope" }, 
    TokenProvider = new MyCustomTokenProvider() 
}); 
+0

Dank Federico! Das habe ich mir auch gedacht, aber ich habe die Methode RequestToken falsch interpretiert. Ich dachte, sie würde verwendet, um ein neues Token von einem Token-Endpunkt anzufordern. Das ist hilfreich! –