У меня есть веб-сервис REST, в котором мы должны развернуть n-количество клиентов. То же приложение развернуто, только с разной конфигурацией. У нас есть веб-интерфейс веб-интерфейса, который общается с этими экземплярами веб-сервиса REST. Пользователь авторизуется с помощью экземпляра IdentityServer4, использует интерфейс, который обращается к экземплярам серверного веб-сервиса и передает ему токен.
Мне нужно предотвратить использование полученного токена, который предоставляет доступ к webservice-X для доступа к webservice-Y. В идеале я бы определил ApiResource для каждого из развернутых клиентов с одинаковыми областями действия. При попытке аутентификации я получаю следующее сообщение об ошибке:
Найдены повторяющиеся области API. Это неверная конфигурация. Используйте разные имена для областей API. Найдены области применения: PaymentApi, DocumentApi
Есть ли способ отключить эту проверку? Есть ли другой способ настроить все для достижения этой цели?
Часть моей конфигурации:
new ApiResource
{
Name = "WebService-X",
DisplayName = "WebService-X",
Description = "Client Api residing on customer-X network",
Enabled = true,
Scopes = new List<Scope>()
{
new Scope()
{
Name = "PaymentApi",
DisplayName = "PaymentApi",
ShowInDiscoveryDocument = true,
},
new Scope()
{
Name = "DocumentApi",
DisplayName = "DocumentApi",
ShowInDiscoveryDocument = true,
}
},
ApiSecrets = new List<Secret>
{
new Secret("fdzxGSDFHY)GSFD*U)DIS:LGJSLKFDJGG".Sha256())
},
},
new ApiResource
{
Name = "WebService-Y",
DisplayName = "WebService-Y",
Description = "Client Api residing on customer-Y network",
Enabled = true,
Scopes = new List<Scope>()
{
new Scope()
{
Name = "PaymentApi",
DisplayName = "PaymentApi",
ShowInDiscoveryDocument = true,
},
new Scope()
{
Name = "DocumentApi",
DisplayName = "DocumentApi",
ShowInDiscoveryDocument = true,
}
},
ApiSecrets = new List<Secret>
{
new Secret("fdzxGSDFHY)GSDFS$#%#$LKFDJGG".Sha256())
},
},
Я хочу избежать чего-то подобного, потому что это плохо масштабируется:
new ApiResource
{
Name = "WebService-X",
DisplayName = "WebService-X",
Description = "Client Api residing on customer-X network",
Enabled = true,
Scopes = new List<Scope>()
{
new Scope()
{
Name = "PaymentApi-X",
DisplayName = "PaymentApi-X",
ShowInDiscoveryDocument = true,
},
new Scope()
{
Name = "DocumentApi-X",
DisplayName = "DocumentApi-X",
ShowInDiscoveryDocument = true,
}
},
ApiSecrets = new List<Secret>
{
new Secret("fdzxGSDFHY)GSFD*U)DIS:LGJSLKFDJGG".Sha256())
},
},
new ApiResource
{
Name = "WebService-Y",
DisplayName = "WebService-Y",
Description = "Client Api residing on customer-Y network",
Enabled = true,
Scopes = new List<Scope>()
{
new Scope()
{
Name = "PaymentApi-Y",
DisplayName = "PaymentApi-Y",
ShowInDiscoveryDocument = true,
},
new Scope()
{
Name = "DocumentApi-Y",
DisplayName = "DocumentApi-Y",
ShowInDiscoveryDocument = true,
}
},
ApiSecrets = new List<Secret>
{
new Secret("fdzxGSDFHY)GSDFS$#%#$LKFDJGG".Sha256())
},
},