keycloak~Consent Required的使用
Consent Required在keycloak中(zhong)是(shi)“授(shou)權(quan)所(suo)需(xu)”,或者是(shi)“同意(yi)必需(xu)“的意(yi)思,它類似(si)于oauth2授(shou)權(quan)時的“確(que)認”,當(dang)你在第三方認證后,通過oauth2協議,你可以把用戶(hu)相(xiang)關信(xin)息返回給應用程(cheng)序,而這(zhe)時,用戶(hu)自(zi)己(ji)需(xu)要確(que)認一下(xia),自(zi)己(ji)的這(zhe)些信(xin)息是(shi)否可以給應用程(cheng)序。
為客戶端配置Consent Required選項
- 可以自定義這個同意的頁面,這些是可以定制化的

用戶第一次通過客戶端登錄,會顯示這個確認頁
- 可以看到目前對客戶端開放的所有scope
- 每種scope對應用戶的一些信息,如email,address,profile等
- 這些scope可以在keycloak中的
client scopes(客戶端范圍)菜單中找到,而每個scope包含的用戶信息,可以在對應的mappers(映射)里找到

查看用戶同意的選項
- 用戶公開了哪些scope,可以在這里找到

相關實現方式與數據的存儲
- 通過keycloak的
required_action(必須操作)實現,當通過用戶確認的scope會由keycloak進行存儲,下次用戶再訪問客戶端,就不會再出現這個頁面了 Consent Required的數據,被存儲到了user_consent和user_consent_client_scope這兩張表中- keycloak后臺,可以在用戶詳細中,管理用戶的
Consent Required數據
注冊到keycloak的所有必需操作(required_action)
- 在驗證(Authentication)-必需操作(required action)中可以看到所有已被注冊到keycloak中的required_action
- 需要需要自定義required_action,需要實現
RequiredActionProvider這個接口,然后注冊到resources/META-INFO/services/org.keycloak.authentication.RequiredActionFactory里 - 在認證流程中,可以調用UserModel的
addRequiredAction和removeRequiredAction方法,來添加或者刪除一個required_action


