第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Keycloak 身份代理 API

Keycloak 身份代理 API

達(dá)令說 2023-02-23 10:43:30
所以我有一個使用 api 的客戶端。API 由 keycloak 保護(hù)。用戶正常登錄,但我希望允許用戶登錄用戶,而不必使用他們的社交媒體帳戶(如 facebook 或 google)訪問 keycloak 的登錄頁面。我需要一個 rest API,其中包含如何生成 url 的實現(xiàn),因此當(dāng)用戶在按鈕中單擊此 url 時,它將把用戶帶到相應(yīng)的社交登錄頁面進(jìn)行登錄,而 keycloak 仍然充當(dāng)代理。下面是我的實現(xiàn),它可以生成一個 url,但不會將用戶帶到 google 頁面進(jìn)行登錄這是一個休息控制器    @Secured("permitAll")    @GetMapping(path = "/generator")    public String brokerGenerator(HttpServletRequest httpServletRequest) throws ServletException {        String provider = "google";        String authServerRootUrl = "http://localhost:8080/";        String realm = "realmName";        String clientId = "clientName";        String nonce = UUID.randomUUID().toString();        MessageDigest md = null;        try {            md = MessageDigest.getInstance("SHA-256");        } catch (NoSuchAlgorithmException e) {            throw new RuntimeException(e);        }        String input = nonce + clientId + provider;        byte[] check = md.digest(input.getBytes(StandardCharsets.UTF_8));        String hash = Base64Url.encode(check);        httpServletRequest.getSession().setAttribute("hash", hash);        String redirectUri = "http://localhost:4200/dashboard";         return KeycloakUriBuilder.fromUri(authServerRootUrl)                .path("auth/realms/realmName/google/link")                .queryParam("nonce", nonce)                .queryParam("hash", hash)                .queryParam("client_id", clientId)                .queryParam("redirect_uri", redirectUri).build(realm, provider).toString();    }
查看完整描述

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 登錄頁面。


查看完整回答
反對 回復(fù) 2023-02-23
  • 1 回答
  • 0 關(guān)注
  • 230 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號