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_consentuser_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
posted @ 2024-10-21 14:13  张占岭  阅读(23)  评论(0编辑  收藏  举报