Module bus.auth

Class AbstractProvider

java.lang.Object
org.miaixz.bus.auth.nimble.AbstractProvider
All Implemented Interfaces:
Provider, org.miaixz.bus.core.Provider
Direct Known Subclasses:
AbstractDingtalkProvider, AbstractMicrosoftProvider, AbstractWeChatProvider, AfDianProvider, AlipayProvider, AliyunProvider, AmazonProvider, AppleProvider, BaiduProvider, CodingProvider, DouyinProvider, ElemeProvider, FacebookProvider, FeishuProvider, FigmaProvider, GiteeProvider, GithubProvider, GitlabProvider, GoogleProvider, HuaweiProvider, JdProvider, KujialeProvider, LineProvider, LinkedinProvider, MeituanProvider, MiProvider, OktaProvider, OschinaProvider, PinterestProvider, ProginnProvider, QqMiniProvider, QqProvider, RenrenProvider, SlackProvider, StackOverflowProvider, TaobaoProvider, TeambitionProvider, ToutiaoProvider, TwitterProvider, WeChatMiniProvider, WeiboProvider, XimalayaProvider

public abstract class AbstractProvider extends Object implements Provider
抽象授权处理基类,支持 OAuth2、SAML、LDAP 等多种协议。 提供通用的授权、令牌获取和用户信息查询逻辑,协议特定实现由子类完成。
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • context

      protected Context context
      包含协议特定配置的上下文对象
    • complex

      protected Complex complex
      定义协议端点或配置的协议对象
    • cache

      protected org.miaixz.bus.cache.metric.ExtendCache cache
      用于存储状态或其他临时数据的缓存
  • Constructor Details

    • AbstractProvider

      public AbstractProvider(Context context, Complex complex)
      使用指定的上下文和协议配置构造 AbstractProvider。
      Parameters:
      context - 上下文配置
      complex - 协议配置
    • AbstractProvider

      public AbstractProvider(Context context, Complex complex, org.miaixz.bus.cache.metric.ExtendCache cache)
      使用自定义缓存构造 AbstractProvider。
      Parameters:
      context - 上下文配置
      complex - 协议配置
      cache - 缓存实现
      Throws:
      org.miaixz.bus.core.lang.exception.AuthorizedException - 如果配置不完整
  • Method Details

    • getDefaultScopes

      public static List<String> getDefaultScopes(AuthorizeScope[] scopes)
      从授权范围数组中获取标记为默认的范围。
      Parameters:
      scopes - 授权范围数组
      Returns:
      默认范围名称列表,若无则返回 null
    • getScopes

      public static List<String> getScopes(AuthorizeScope... scopes)
      从授权范围数组中获取范围名称。
      Parameters:
      scopes - 可变数量的授权范围
      Returns:
      范围名称列表,若无则返回 null
    • login

      public org.miaixz.bus.core.basic.entity.Message login(Callback callback)
      处理登录流程,验证回调数据,获取访问令牌并查询用户信息。
      Specified by:
      login in interface Provider
      Parameters:
      callback - 包含授权数据的回调对象(例如代码、状态)
      Returns:
      包含用户信息或错误的 Message 对象
    • check

      protected void check(Callback callback)
      验证回调数据,主要用于 OAuth2 协议。
      Parameters:
      callback - 包含授权数据的回调对象
      Throws:
      org.miaixz.bus.core.lang.exception.AuthorizedException - 如果 OAuth2 验证失败
    • responseError

      protected org.miaixz.bus.core.basic.entity.Message responseError(Exception e)
      构造登录过程中异常的错误响应。
      Parameters:
      e - 发生的异常
      Returns:
      包含错误详情的 Message 对象
    • authorize

      public String authorize(String state)
      生成用于启动认证流程的授权 URL。
      Specified by:
      authorize in interface Provider
      Parameters:
      state - 用于防止 CSRF 攻击的状态参数
      Returns:
      授权 URL,对于 LDAP 等协议返回 null
    • accessTokenUrl

      protected String accessTokenUrl(String code)
      构造 OAuth2 的访问令牌 URL。
      Parameters:
      code - 授权代码
      Returns:
      访问令牌 URL
    • refreshTokenUrl

      protected String refreshTokenUrl(String refreshToken)
      构造 OAuth2 的刷新令牌 URL。
      Parameters:
      refreshToken - 刷新令牌
      Returns:
      刷新令牌 URL
    • userInfoUrl

      protected String userInfoUrl(AccToken accToken)
      构造 OAuth2 的用户信息 URL。
      Parameters:
      accToken - 访问令牌
      Returns:
      用户信息 URL
    • revokeUrl

      protected String revokeUrl(AccToken accToken)
      构造 OAuth2 的撤销授权 URL。
      Parameters:
      accToken - 访问令牌
      Returns:
      撤销授权 URL
    • getRealState

      protected String getRealState(String state)
      生成或缓存用于防止 CSRF 攻击的状态参数。
      Parameters:
      state - 提供的状态值,若为空则生成新值
      Returns:
      非空的狀態值
    • doPostAuthorizationCode

      protected String doPostAuthorizationCode(String code)
      执行 POST 请求以获取 OAuth2 访问令牌。
      Parameters:
      code - 授权代码
      Returns:
      响应内容
    • doGetAuthorizationCode

      protected String doGetAuthorizationCode(String code)
      执行 GET 请求以获取 OAuth2 访问令牌。
      Parameters:
      code - 授权代码
      Returns:
      响应内容
    • doGetUserInfo

      protected String doGetUserInfo(AccToken accToken)
      执行 GET 请求以获取 OAuth2 用户信息。
      Parameters:
      accToken - 访问令牌
      Returns:
      响应内容
    • doGetRevoke

      protected String doGetRevoke(AccToken accToken)
      执行 GET 请求以撤销 OAuth2 授权。
      Parameters:
      accToken - 访问令牌
      Returns:
      响应内容
    • getScopes

      protected String getScopes(String separator, boolean encode, List<String> defaultScopes)
      从配置或默认范围构造范围字符串。
      Parameters:
      separator - 多个范围的分隔符
      encode - 是否对范围字符串进行 URL 编码
      defaultScopes - 默认范围(若未配置范围时使用)
      Returns:
      范围字符串,若无则返回空字符串
    • check

      protected void check(Context context)
      验证上下文配置的完整性,根据协议类型检查所需字段。
      Parameters:
      context - 上下文配置
      Throws:
      org.miaixz.bus.core.lang.exception.AuthorizedException - 如果配置不完整