如何在asp.net core 2.0 webapi中使用identityserver3来验证来自Identityserver3服务器的令牌

时间:2017-12-19 16:27:30

标签: identityserver3 asp.net-core-webapi

我有一个使用IdentityServer3发出令牌的身份服务器。

我正在创建一个asp.net core 2.0 api客户端。

如何在ASP.Net Core 2.0 api应用程序中验证Identityserver3发出的令牌?

我尝试安装Identityserver3.AccessTokenValidation.AspNetCore,但收到错误消息称它与核心不兼容。

任何人都可以帮我解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:2)

通过.Net Core 2,您可以使用IdentityServer4.AccessTokenValidation来验证IdentityServer3令牌,只需确保在ConfigureServices方法中添加此行

options.LegacyAudienceValidation = true;

ConfigureServices应该看起来像这样:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvcCore(options =>
            {
                // IS3 does not include the api name/audience - hence the extra scope check
                options.Filters.Add(new AuthorizeFilter(ScopePolicy.Create("api")));
            })
                .AddAuthorization();

            services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme)
                .AddIdentityServerAuthentication(options =>
                {
                    options.Authority = "http://localhost:5002";
                    options.RequireHttpsMetadata = false;

                    options.ApiName = "api";
                    options.ApiSecret = "secret";

                    // this is only needed because IS3 does not include the API name in the JWT audience list
                    // so we disable UseIdentityServerAuthentication JWT audience check and rely upon
                    // scope validation to ensure we're only accepting tokens for the right API
                    options.LegacyAudienceValidation = true;
                });
        }

有关更多信息,您可以参考此link