当前我正在执行以下操作
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。
这似乎是重复的,但是,由于我们正在运行许多微服务,因此存在以下问题。
所以
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"
]
}