隨手扎
【用Keycloak學習身份驗證與授權31】Open ID Connect & Social Login(2)
Keycloak Open-Id Connect
其實除了使用GitHub等社群帳號登入外,Keycloak也可以作爲Open-Id登入的提供者(Provider)。接著需要使用Keycloak本身來實現社群帳號登入,因爲這樣子可以看到更多細節。
建立新的Realm
現在,需要一個新的帳號系統。你可以在建立一個Keycloak伺服器,或是建立一個新的Realm。不同Realm的帳號系統是獨立不相干擾的,所以這裏就先建議一個新的Realm – G00gle
。
像似處理以GitHub帳號登入時,需要在新的Realm下,建立一個新的Client:
- Open Id:
oauth-quick-start
- Root URL:
http://localhost:8080/auth/realms/quick-start/
留意URL裡的realm是
quick-start
將Access Type改成confidential
儲存後,到Credentials頁籤,記住Client Secret。
建立新的帳號
這裏,故意同樣建立帳號–bob
,這次要將不同帳號系統的帳號,連接到已經存在的帳號下。然後同樣在 「Credentials」頁籤下建立登入密碼。此外,你還可以先設定好email、First Name、Last Name等訊息。
綁定登入方式
接著回到「quick-start」的realm。同樣到「Identity Providers」設定頁面,添加「Keycloak OpenId Connect」的Provider。
然後拉到下面與OpenID Connect相關的設定
- Authorization URL:
http://localhost:8080/auth/realms/G00gle/protocol/openid-connect/auth
- Token URL:
http://localhost:8080/auth/realms/G00gle/protocol/openid-connect/token
- Client Authentication:
Client secret sent as post
- Client ID:
oauth-quick-start
- Client Secret:
<方才記錄下來到Client Secret>
留意URL裡的realm是
G00gle
登入「快速開始」
到「快速開始」應用登入。這次可以再發現多一個「keycloak-oidc」的選項。
接著可以用剛剛建立的帳號登入到「G00gle」。
然後會要求填入一些基本訊息:
不同的是,猶豫帳號相同,所以有所衝突。點選「Add to existing account」將新建立的帳號連接到已存在的帳號。
然後會要求驗證擁有已存在的帳號的權限。
留意這次登入的是「quick-start」
Keycloak的相關改變
同樣在「Identity Providers」的設定頁面多了keycloak-oidc
而已存在的帳號–bob,同樣在帳號設定下的「Identity Provider Links」頁籤也多了一些與keycloak-oidc有關的訊息。
LINE Pay贊助 信用卡小額贊助雖然還有一些細節沒有探討,但是已鐵人賽來說,Open-Id Connect也就到這邊爲止了。
對技術相關內容有興趣的話,歡迎關注我的網站