Вы можете настроить Client
для поддержки определенного внешнего поставщика с помощью свойства IdentityProviderRestrictions
.Это свойство содержит список имен провайдеров, которые могут быть использованы для клиента.Пустой список (по умолчанию) означает, что разрешены все поставщики.
например
new Client {
ClientId = "yourclient",
ClientName = "Your Client",
.
.
.
IdentityProviderRestrictions = {"Facebook", "Google"};
}
Это свойство используется для фильтрации внешних поставщиков в примере IdentityServer AccountController
:
if (context?.ClientId != null)
{
var client = await _clientStore.FindEnabledClientByIdAsync(context.ClientId);
if (client != null)
{
allowLocal = client.EnableLocalLogin;
if (client.IdentityProviderRestrictions != null && client.IdentityProviderRestrictions.Any())
{
providers = providers.Where(provider => client.IdentityProviderRestrictions.Contains(provider.AuthenticationScheme)).ToList();
}
}
}
В вашем AccountController
вы можете идентифицировать клиента, делающего запрос аутентификации, используя AuthorizationRequest.ClientId
.Затем вы можете изменить функциональность входа в систему на основании запроса от клиента.
AuthorizationRequest
можно получить из IIdentityServerInteractionService.GetAuthorizationContextAsync
, а IIdentityServerInteractionService
- через DI.