[英]How to validate IdentityServer4 access tokens through introspection
我正在通过 IdentityServer4 发布的 AccessToken 实现受保护的 api。 现在我的问题是,当我从我的客户端调用带有标头中的 Bearer 令牌的 API 时,是否有可能通过调用内省端点来恢复该值并验证它? 像这样的密钥没有自我验证:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
// base-address of your identityserver
options.Authority = "https://demo.identityserver.io";
// if you are using API resources, you can specify the name here
options.Audience = "resource1";
// IdentityServer emits a typ header by default, recommended extra check
options.TokenValidationParameters.ValidTypes = new[] { "at+jwt" };
});
是否有任何库可以通过依赖注入完成授权中间件中的所有操作,还是我必须手动完成所有操作? 我试图环顾四周,但似乎唯一的库引用了引用令牌,而不是作为 Bearer 传递的访问令牌。 谢谢
您可以挂钩OnMessageReceived
事件并自己验证令牌:
services.AddAuthentication(...)
.AddJwtBearer(
options => {
options.Events.OnMessageReceived = async context => {
var accessToken = context.Token;
// inject a custom token validator
var tokenValidator =
context.HttpContext.RequestServices.GetRequiredService<ITokenValidator>();
var ok = await tokenValidator.ValidateTokenAsync(accessToken);
if (!ok) {
context.Fail("Invalid token");
}
};
}
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.