keycloak~Consent Required的使用
Consent Required在keycloak中是“授权所需”,或者是“同意必需“的意思,它类似于oauth2授权时的“确认”,当你在第三方认证后,通过oauth2协议,你可以把用户相关信息返回给应用程序,而这时,用户自己需要确认一下,自己的这些信息是否可以给应用程序。
为客户端配置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