首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过自检验证IdentityServer4访问令牌

如何通过自检验证IdentityServer4访问令牌
EN

Stack Overflow用户
提问于 2021-07-28 18:24:33
回答 1查看 90关注 0票数 0

我正在通过IdentityServer4发布的AccessToken实现一个受保护的api。现在我的问题是,当我从我的客户机调用头中有Bearer令牌的API时,是否有可能恢复这个值并通过调用内省endopint来验证它?没有像这样的key的自我验证:

代码语言:javascript
复制
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" };
        });

有没有库可以通过依赖注入在授权中间件中做所有的事情,或者我必须手工做所有的事情?我试着四处看看,但似乎只有库引用引用令牌,而不是作为持有者传递的访问令牌。谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-07-28 18:33:07

您可以挂接到OnMessageReceived事件并自己验证令牌:

代码语言:javascript
复制
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");
                }
            };
        }
    );
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68558633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档