Keycloak поддерживает это из коробки.См. https://www.keycloak.org/docs/6.0/server_admin/#_client_suggested_idp
Приложения OIDC могут обойти страницу входа в Keycloak, указав подсказку, какого поставщика удостоверений они хотят использовать.
Это делается путем установки параметра запроса kc_idp_hint вконечная точка авторизации потока кода авторизации.
ОБНОВЛЕНИЕ
В вашем случае следует использовать обычную конечную точку потока кода аутентификации Keycloak и в дополнение к основным параметрам запроса предоставитьkc_idp_hint
парам.Таким образом, пользователь сначала перенаправляется на страницу входа в Keycloak, а затем Keycloak перенаправляет его на страницу входа выбранного провайдера идентификации (в вашем случае Google).
Вот пример URL-адреса перенаправления:
https://keycloak-domain/realms/REALM_NAME/protocol/openid-connect/auth?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE&response_type=code&scope=openid&nonce=NONCE&kc_idp_hint=google
Измените свой код в соответствии с этим примером:
return KeycloakUriBuilder.fromUri(authServerRootUrl)
.path("realms/realmName/protocol/openid-connect/auth") // Url changed
.queryParam("response_type", "code") // Autherization Code Flow
.queryParam("scope", "openid") // Add additional scopes if needed
.queryParam("kc_idp_hint", "google") // This should match IDP name registered in Keycloak
.queryParam("nonce", nonce)
.queryParam("hash", hash)
.queryParam("client_id", clientId)
.queryParam("redirect_uri", redirectUri).build(realm, provider).toString();
Вы можете вручную инициировать перенаправление Keycloak для проверки.Запустите обычный процесс входа в систему, и когда вы будете перенаправлены на страницу входа в Keycloak, не вводите учетные данные, вместо этого добавьте kc_idp_hint=google
к URL-адресу и нажмите ENTER.Затем вы будете перенаправлены прямо на страницу входа в Google.