package com.iailab.module.system.service.oauth2; import com.iailab.framework.common.pojo.PageResult; import com.iailab.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTokenPageReqVO; import com.iailab.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; import java.util.List; /** * OAuth2.0 Token Service 接口 * * 从功能上,和 Spring Security OAuth 的 DefaultTokenServices + JdbcTokenStore 的功能,提供访问令牌、刷新令牌的操作 * * @author iailab */ public interface OAuth2TokenService { /** * 创建访问令牌 * 注意:该流程中,会包含创建刷新令牌的创建 * * 参考 DefaultTokenServices 的 createAccessToken 方法 * * @param userId 用户编号 * @param userType 用户类型 * @param clientId 客户端编号 * @param scopes 授权范围 * @return 访问令牌的信息 */ OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List scopes); /** * 刷新访问令牌 * * 参考 DefaultTokenServices 的 refreshAccessToken 方法 * * @param refreshToken 刷新令牌 * @param clientId 客户端编号 * @return 访问令牌的信息 */ OAuth2AccessTokenDO refreshAccessToken(String refreshToken, String clientId); /** * 获得访问令牌 * * 参考 DefaultTokenServices 的 getAccessToken 方法 * * @param accessToken 访问令牌 * @return 访问令牌的信息 */ OAuth2AccessTokenDO getAccessToken(String accessToken); /** * 校验访问令牌 * * @param accessToken 访问令牌 * @return 访问令牌的信息 */ OAuth2AccessTokenDO checkAccessToken(String accessToken); /** * 移除访问令牌 * 注意:该流程中,会移除相关的刷新令牌 * * 参考 DefaultTokenServices 的 revokeToken 方法 * * @param accessToken 刷新令牌 * @return 访问令牌的信息 */ OAuth2AccessTokenDO removeAccessToken(String accessToken); /** * 获得访问令牌分页 * * @param reqVO 请求 * @return 访问令牌分页 */ PageResult getAccessTokenPage(OAuth2AccessTokenPageReqVO reqVO); }