keycloak~对框架中提供的Provider总结

提供者目录

  • Provider
  • Authenticator
    • BaseDirectGrantAuthenticator
    • AbstractFormAuthenticator
      • AbstractUsernameFormAuthenticator
  • RequiredActionProvider
  • FormAction
  • ProtocolMapper
    • AbstractOIDCProtocolMapper
  • RealmResourceProvider

具体provider的作用

  1. Provider(提供者)

    • 作用:表示Keycloak中的各种扩展点,用于自定义和扩展Keycloak的功能。
    • 使用方法:开发者可以创建自定义的Provider,以实现对Keycloak的功能进行扩展,比如添加新的认证方式、存储方式等。
  2. Authenticator(认证器)

    • 作用:用于处理用户认证的组件,可以自定义不同类型的认证流程。
    • 使用方法:开发者可以基于BaseDirectGrantAuthenticator、AbstractFormAuthenticator等提供的基类,编写自定义的认证器,实现特定的认证逻辑。
    • BaseDirectGrantAuthenticator:用于直接授予访问令牌的认证器。
    • AbstractFormAuthenticator:用于处理表单认证的认证器基类。
      • AbstractUsernameFormAuthenticator:处理用户名密码表单认证的认证器基类。

在brower,directgrant等认证流程中,添加自定义的Authenticator

  1. RequiredActionProvider(必需操作提供者)
    • 作用:定义了用户在登录后需要执行的操作,比如修改密码、接受条款等。
    • 使用方法:开发者可以创建自定义的RequiredActionProvider,以实现对用户的必需操作进行管理和触发。

对于某些用户添加某些标识,有这个标识的用户,会进行这个RequiredActionProvider的执行,例如:临时密码(第一次登录需要修改密码)

  1. FormAction(表单操作)
    • 作用:用于处理用户在登录过程中需要填写的表单信息,比如验证码、安全问题等。
    • 使用方法:开发者可以编写自定义的FormAction,以实现对用户登录过程中表单信息的处理和验证。

在用户注册页面,可以添加FormAction,在注册过程中添加自己的业务逻辑

  1. ProtocolMapper(协议映射器)
    • 作用:用于将Keycloak中的属性映射到OAuth或OpenID Connect(OIDC)协议中。

    • 使用方法:开发者可以基于AbstractOIDCProtocolMapper提供的基类,编写自定义的协议映射器,实现将用户属性映射到OAuth或OIDC协议中。

    • AbstractOIDCProtocolMapper:用于实现将用户属性映射到OIDC协议中的协议映射器基类。

这块主要用在自定义jwt token,当用户认证成功后,在构建token时,配置keycloak中的客户端模板中的Mappers来添加自己的个性信息在token中

  1. RealmResourceProvider(http普通接口与响应):
  • 作用:RealmResourceProvider是Keycloak中的一个接口,用于管理特定Realm下的资源(如Clients、Users等)。通过实现RealmResourceProvider接口,可以对Realm内的资源进行增删改查等操作,实现对Realm级别资源的管理。
  • 使用方法
    • 创建自定义RealmResourceProvider实现类:首先,需要创建一个自定义的RealmResourceProvider实现类,该类需要实现RealmResourceProvider接口,并实现其中定义的方法,包括对Realm资源的增删改查等操作。
    • 注册自定义RealmResourceProvider:将自定义的RealmResourceProvider实现类注册到Keycloak中,以便Keycloak能够识别并使用该Provider来管理特定Realm下的资源。
    • 使用RealmResourceProvider:在需要对特定Realm下的资源进行管理时,通过调用RealmResourceProvider提供的方法来执行相应的操作,比如创建新的Client、添加用户等。
    • 处理Realm级别操作:利用RealmResourceProvider可以处理一些Realm级别的操作,例如管理Realm下的所有Clients、Roles等资源,实现更灵活和个性化的Realm管理功能。

浏览器认证流程扩展