如何获得生成了承载令牌的client_id? (.NetCore2.1,IdentityServer4)

时间:2018-11-10 14:36:56

标签: asp.net-core identityserver4

我与Netcore 2.1和Identityserver4一起使用资源所有者密码流

我需要在一个请求中获得生成令牌承载的client_id 存在一种获取client_id的方法吗? 数据库userId,token,client_id中是否存在关系? 问题是我不知道哪个client_id发出请求

1 个答案:

答案 0 :(得分:0)

  
    

我在网络核心,多个数据库和多个客户端中都有一个API,通过client_id的功能我可以获取数据库的信息

  

默认情况下,从身份服务器4发出的访问令牌包括client_id声明: enter image description here

在客户端使用访问令牌将请求发送到您的Web api之后,在Web api端,将身份验证服务添加到DI并将身份验证中间件添加到管道:

1。将IdentityServer4.AccessTokenValidation NuGet软件包添加到您的项目中

2.Update Startup看起来像这样:

 public void ConfigureServices(IServiceCollection services)
{
    services.AddMvcCore()
        .AddAuthorization()
        .AddJsonFormatters();

    services.AddAuthentication("Bearer")
        .AddIdentityServerAuthentication(options =>
        {
            options.Authority = "http://localhost:5000";
            options.RequireHttpsMetadata = false;

            options.ApiName = "api1";
        });
}

public void Configure(IApplicationBuilder app)
{
    app.UseAuthentication();

    app.UseMvc();
}

然后,您可以获得包含客户ID的声明: enter image description here