1 回答

TA貢獻(xiàn)1818條經(jīng)驗 獲得超3個贊
Keycloak 開箱即用地支持這一點。請參閱https://www.keycloak.org/docs/latest/server_admin/index.html#_client_suggested_idp
OIDC 應(yīng)用程序可以通過指定他們想要使用哪個身份提供者的提示來繞過 Keycloak 登錄頁面。
這是通過在授權(quán)代碼流授權(quán)端點中設(shè)置 kc_idp_hint 查詢參數(shù)來完成的。
更新
在您的情況下,您應(yīng)該使用普通的 Keycloak Auth Code Flow 端點,除了基本查詢參數(shù)外,還應(yīng)提供kc_idp_hint
參數(shù)。這樣,用戶首先被重定向到 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
根據(jù)此示例編輯您的代碼:
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 重定向進(jìn)行測試。開始正常的登錄流程,當(dāng)您重定向到 Keycloak 登錄頁面時,不要輸入憑據(jù),而是添加kc_idp_hint=google
到 URL 并按 ENTER。然后您將被重定向到 Google 登錄頁面。
添加回答
舉報