定义权限

时间:2019-04-24 16:23:52

标签: identityserver4

当前我正在执行以下操作

 services.AddAuthentication("Bearer")
            .AddIdentityServerAuthentication(options =>
            {

                options.Authority = Configuration.GetValue<string>("IdentityServer:Authority");
                options.RequireHttpsMetadata = Configuration.GetValue<bool>("IdentityServer:RequireHttps");
                options.ApiName = Configuration.GetValue<string>("IdentityServer:UserManagementApi:ResourceName");
                options.SaveToken = true;
            })
        .AddCookie(cfg => cfg.SlidingExpiration = true);

我从配置文件获取授权的位置。但是,我们正在将我们的应用升级为多租户,并且需要根据调用的租户设置这些值。是否可以在将使用IOC在运行时找到租户的服务中设置这些值。

我们正在使用Dotnet代码2.2和Lamar IOC。

这似乎是重复的,但是,由于我们正在运行许多微服务,因此存在以下问题。

  • 每个租户都有其自己的IdentityServer4租户,该租户使用它自己的数据库。这是管理用户的独立服务。
  • 每个Api使用其自己的租户IdentityServer api进行身份验证。

所以

Api站点---->连接到IdentityServer4站点

例如

api1.company1.com connects to auth.company1.com to authenticate
api2.company1.com connects to auth.company1.com to authenticate

api1.company2.com connects to auth.company2.com to authenticate
api2.company2.com connects to auth.company2.com to authenticate

每个Api都会调用其他api,并将用户令牌传递给进行身份验证。我需要一种方法来告诉api使用哪种身份验证进行身份验证。使用共享的颁发机构,获得令牌时,您将获得以下内容

{
  "nbf": 1556619889,
  "exp": 1556623489,
  "iss": "http://shared-domain-for-every-tenant,
  "aud": [
    "http://shared-domain-for-every-tenant/resources",
    "api1",
    "api2"
  ],
  "client_id": "postman",
  "scope": [
    "api1",
    "api1"
  ]
}

0 个答案:

没有答案