• 个性化开发

    oauth 服务提供了很多可定制化的端点,使用者可根据实际需求个性化 oauth 认证中的一些业务逻辑,然后在客制化类上添加 @Component 生效

    修改登录页面

    oauth 登录页面默认提供两个模板页面,模板分别对应 mainportal 两个目录,html 及相关 js、css 源码可从依赖的 hzero-oauth.jar 包中获取。登录页面的入口为 login.html

    oauth 默认使用 main 模板,使用哪个模板可通过如下配置指定。

    hzero:
      oauth:
        # 登录页面标题
        title: HZERO
        login:
          # 登录页面默认模板,oauth 提供了两套模板
          # 在请求 /oauth/authorize 接口时,可通过 template 参数指定使用的模板
          default-template: main
    

    登录用户信息校验

    UserAccountService: 用户账户相关,提供了用户查询、检查用户账户、检查用户租户、检查手机/邮箱是否已验证、检查用户角色、锁定用户、解锁用户 等接口。定制化时可自定义个性化 Service 并继承 DefaultUserAccountService,Override 个性化的方法即可。

    登录用户记录

    LoginRecordService: 登录记录相关,提供了 登录失败处理、登录成功处理、获取登录跳转地址 等接口。定制化时可自定义个性化 Service 并继承 DefaultLoginRecordService,Override 个性化的方法即可。

    登录用户信息扩展

    UserDetailsWrapper: CustomUserDetails 处理,只有一个 wrap 接口,用于对 CustomUserDetails 做一些包装处理,例如加入用户的当前租户,角色列表等。

    ClientDetailsWrapper: CustomClientDetails 处理,只有一个 wrap 接口,用于对 CustomClientDetails 做一些包装处理,例如加入用户的当前租户,角色列表等。

    资源匹配器

    ResourceMatcher: 资源匹配器,通过令牌访问 oauth 服务资源时,默认只开放了 /api/** 接口,若要匹配其它资源,需自定义资源匹配器,并设置如下参数。

    hzero:
      oauth:
        # 认证服务器 自定义资源匹配器
        custom-resource-matcher: ${HZERO_OAUTH_CUSTOM_RESOURCE_MATCHER:true}
    

    OAuth 获取 Token 接口

    LoginTokenService: 抽象增强了 OAuth2.0 标准的获取 access_token 的接口,开发者可根据自己的需求自定义获取 token 的接口,通过继承 LoginTokenService 并扩展相关认证方法即可。

    MobileLoginTokenService: 为默认的 手机号+短信验证码 获取 access_token 的接口实现

    OpenLoginTokenService: 为默认的三方登录 openId 获取 access_token 的接口实现

    登录查询用户

    CustomUserDetailsService:默认从数据库加载用户信息

    登录认证器

    CustomAuthenticationProvider:用户登录认证处理器,包含用户的获取、账号有效性校验、校验验证码、校验密码、Ldap用户校验等,可以通过继承该类客制化相关校验。

    登录成功处理器

    CustomAuthenticationSuccessHandler:用户登录成功处理器,用户登录成功将记录登录日志,默认跳转到前端地址。

    登录失败处理器

    CustomAuthenticationFailureHandler:用户登录失败处理器,用户登录失败信息处理,返回异常信息,再次返回到登录页面。

    退出处理器

    CustomLogoutSuccessHandler:用户退出处理器,记录用户退出日志,重定向到退出页面。