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
1
A
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()
});
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! –