keycloak~作為第三方登錄的對接標準

来源:https://www.cnblogs.com/lori/p/18202456
-Advertisement-
Play Games

當某些合作商希望把你的keycloak作為他們的一種第三方登錄方式時,就像微信,google,github,使用你的keycloak上的賬戶資源時,你就需要考慮如何做一個開放的,標準的文檔了。 一 基本角色 認證提供者:keycloak服務,https://kc.xxx.com 第三方應用:先到ke ...


當某些合作商希望把你的keycloak作為他們的一種第三方登錄方式時,就像微信,google,github,使用你的keycloak上的賬戶資源時,你就需要考慮如何做一個開放的,標準的文檔了。

一 基本角色

  • 認證提供者:keycloak服務,https://kc.xxx.com
  • 第三方應用:先到keycloak上註冊,由keycloak頒發client_id和client_secret,並與第三方應用確定好callback回調地址。
  • 用戶:使用keycloak服務完成登錄,然後去訪問第三方應用,當然也可以訪問對接到keycloak上的所有服務資源。

二 接入流程

1 向keycloak管理員提供第三方應用基本信息,應用名稱,回調地址,管理員添加好之後,連同client_id和client_secret告訴第三方應用。

2 在第三方應用中,添加法寶登錄鏈接,例如:

<a href="https://kc.xxx.com/auth/realms/fabao/protocol/openid-connect/auth?client_id=aaa&redirect_uri=http://localhost:8080/callback%3Fredirect_uri%3Dhttp%3A%2F%2Flocalhost%3A8080%2Fhello&response_type=code&scope=openid">kc登錄</a>
  • 客戶端ID client_id=aaa
  • 授權類型 response_type=code
  • scope類型 scope=openid
  • 三方應用的回調地址 redirect_uri

註意:您在對接時,需要對redirect_uri參數進行urlencode編碼。

3 登錄成功後,keycloak會根據你的回調地址,重定向到你的系統中,並帶著code和redirect_uri及session等信息。
http://localhost:8080/callback?redirect_uri=http://localhost:8080/hello&session_state=45691669-f290-4991-8f43-d6c411a91b7c&code=b3921500-f6a6-494d-ad23-41b75c436fe7.45691669-f290-4991-8f43-d6c411a91b7c.02bb9b29-2c53-45c7-b009-43e3c78c6aff

  • 三方應用系統的回調地址:redirect_uri
  • 授權碼:code
  • 會話標識:session_state

三 獲取用戶信息

在三方應用自己的callback介面里,可以進行用戶的映射與持久化,你可以通過傳過來的code來獲取當前用戶在keycloak平臺的access_token,然後你再根據access_token獲取用戶基本的開放的信息,你可以將這個用戶信息保存到應用的本地資料庫,當然也可以與你現有用戶進行綁定。
1 通過code來獲取access_token:/auth/realms/xxx/protocol/openid-connect/token

響應內容為access_token和refresh_token

2 通過access_token來獲取用戶信息,正常返回200,如果是返回401,你需要從新獲取
獲取用戶信息:/auth/realms/xxx/open/userinfo

{
    "nickname": "張三",
    "userId": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
    "username": "test"
}

3 當三方應用通過keycloak的介面獲取到了用戶信息之後,您就可以與本地賬號進行映射了,一般的做法是這樣的,如圖:

四 認證流程

作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980

支付寶掃一掃,為大叔打賞!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在前端開發過程中,調試的時候,我門會使用 console.log 等方式查看數據。但對於圖片來說,僅靠展示的數據與結構,是無法想象出圖片最終呈現的樣子的。 雖然我們可以把圖片數據通過 img 標簽展示到頁面上,或將圖片下載下來進行預覽。但這樣的調試過程實在是複雜,何不實現一個 console.im... ...
  • 目錄又被攻擊了?事實還原怎樣避免被攻擊 又被攻擊了? 前段時間每天早上都被阿裡雲的報警簡訊和郵件叫醒,給看一下記錄。 事實還原 我當時以為是有幾篇被其他博主轉發了文章,導致被知名度(狗頭)上升,被人盯上了。每天早上 6、7點手機就開始報警。上一篇文章發出去後,也收到很多小伙伴的支持。 進過分析,觸發 ...
  • 工業互聯網甄選聯盟自發佈委員會管理制度以來,得到了廣大朋友的支撐。經過反覆溝通和醞釀,最終形成《基於工業互聯網平臺智能製造方案》。在今後的實踐過程中會不斷完善本方案。現在入選4家會員單位,後續再不斷擇優選取腳踏實地為生產企業服務的公司。 ...
  • 1. Spring 對 Junit4,Junit5 的支持上的運用 @目錄1. Spring 對 Junit4,Junit5 的支持上的運用每博一文案2. Spring對Junit4 的支持3. Spring對Junit5的支持4. 總結:5. 最後: 每博一文案 關於理想主義,在知乎上看到一句話: ...
  • >>上一篇(文科生在三本院校,讀電腦專業) 2015年9月,我入學了。 我期待的大學生活是多姿多彩的,我會參加各種社團,參與各種有意思的活動。 但我是個社恐,有過嘗試,但還是難以融入各種社交活動。 學習,我是有想過的。 學校開設的C++課程已經上了一段時間,但我無法理解雙層for迴圈執行過程、亦無 ...
  • title: Django性能優化:提升載入速度 date: 2024/5/20 20:16:28 updated: 2024/5/20 20:16:28 categories: 後端開發 tags: 緩存策略 HTTP請求 DNS查詢 CDN分發 前端優化 伺服器響應 瀏覽器緩存 第一章:Djan ...
  • 本文介紹了NumPy中的數組排序和過濾功能。`np.sort()`函數用於對數組進行升序排序,對二維數組則按行排序。示例展示瞭如何對一維和二維數組排序。此外,還講解了使用布爾索引來過濾數組,以及直接在條件中操作數組以創建過濾後的數組。最後,介紹了NumPy的隨機數生成,包括整數、浮點數及特定分佈的隨... ...
  • 1:打開cmd/Anaconda Prompt/Anaconda Powershell Prompt 2:進入虛擬環境conda activate 環境名 3:conda list查看有無ipykernel包 如果沒有,安裝兩個包:conda install nb_conda conda insta ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...