我正在通过IdentityServer4发布的AccessToken实现一个受保护的api。现在我的问题是,当我从我的客户机调用头中有Bearer令牌的API时,是否有可能恢复这个值并通过调用内省endopint来验证它?没有像这样的key的自我验证:
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" };
});有没有库可以通过依赖注入在授权中间件中做所有的事情,或者我必须手工做所有的事情?我试着四处看看,但似乎只有库引用引用令牌,而不是作为持有者传递的访问令牌。谢谢
发布于 2021-07-28 18:33:07
您可以挂接到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");
}
};
}
);https://stackoverflow.com/questions/68558633
复制相似问题