diff --git a/sa-token-doc/oauth2/oauth2-dev.md b/sa-token-doc/oauth2/oauth2-dev.md index 88e68eea..b29aa8f0 100644 --- a/sa-token-doc/oauth2/oauth2-dev.md +++ b/sa-token-doc/oauth2/oauth2-dev.md @@ -130,8 +130,93 @@ SaOAuth2Util.revokeClientToken(clientToken); SaOAuth2Util.revokeClientTokenByIndex(clientId); ``` ---- - 详情请参考源码:[码云:SaOAuth2Util.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Util.java) +### OAuth2-Server 所有可重写策略 + + +#### 权限处理器 +``` java +// 根据 scope 信息对一个 AccessTokenModel 进行加工处理 +SaOAuth2Strategy.instance.workAccessTokenByScope = at -> { + // ... +} + +// 当使用 RefreshToken 刷新 AccessToken 时,根据 scope 信息对一个 AccessTokenModel 进行加工处理 +SaOAuth2Strategy.instance.refreshAccessTokenWorkByScope = at -> { + // ... +} + +// 根据 scope 信息对一个 ClientTokenModel 进行加工处理 +SaOAuth2Strategy.instance.workClientTokenByScope = at -> { + // ... +} +``` + + +#### grant_type 处理器 +``` java +// 根据 grantType 构造一个 AccessTokenModel +SaOAuth2Strategy.instance.grantTypeAuth = req -> { + // ... +} +``` + + +#### 凭证创建 +``` java +// 创建一个 code value +SaOAuth2Strategy.instance.createCodeValue = (clientId, loginId, scopes) -> { + // ... +} + +// 创建一个 AccessToken value +SaOAuth2Strategy.instance.createAccessToken = (clientId, loginId, scopes) -> { + // ... +} + +// 创建一个 RefreshToken value +SaOAuth2Strategy.instance.createRefreshToken = (clientId, loginId, scopes) -> { + // ... +} + +// 创建一个 ClientToken value +SaOAuth2Strategy.instance.createClientToken = (clientId, scopes) -> { + // ... +} +``` + + +#### 认证流程回调 +``` java +// OAuth-Server端:未登录时返回的View +SaOAuth2Strategy.instance.notLoginView = () -> { + // ... +} + +// OAuth-Server端:确认授权时返回的View +SaOAuth2Strategy.instance.confirmView = (clientId, scopes) -> { + // ... +} + +// OAuth-Server端:登录函数 +SaOAuth2Strategy.instance.doLoginHandle = (name, pwd) -> { + // ... +} + +// OAuth-Server端:用户在授权指定 client 前的检查,如果检查不通过,请直接抛出异常 +SaOAuth2Strategy.instance.userAuthorizeClientCheck = (loginId, clientId) -> { + // ... +} +``` + + +#### 其它 +``` java +// 在创建 SaClientModel 时,设置其默认字段 +SaOAuth2Strategy.instance.setSaClientModelDefaultFields = (clientModel) -> { + // ... +} +``` + diff --git a/sa-token-doc/sso/sso-dev.md b/sa-token-doc/sso/sso-dev.md index 3f9eaf07..deaba194 100644 --- a/sa-token-doc/sso/sso-dev.md +++ b/sa-token-doc/sso/sso-dev.md @@ -141,3 +141,64 @@ SaSsoClientUtil.buildSignoutMessage(Object loginId, SaLogoutParameter logoutPara 详情请参考源码:[码云:SaSsoClientUtil.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoClientUtil.java) + + +## Sso-Server 所有可重写策略 + +``` java +// 发送 Http 请求的处理函数 +SaSsoServerProcessor.instance.ssoServerTemplate.strategy.sendRequest = url -> { + // ... +} + +// 使用异步模式执行一个任务 +SaSsoServerProcessor.instance.ssoServerTemplate.strategy.asyncRun = fun -> { + // ... +} + +// 未登录时返回的 View +SaSsoServerProcessor.instance.ssoServerTemplate.strategy.notLoginView = () -> { + // ... +} + +// SSO-Server端:登录函数 +SaSsoServerProcessor.instance.ssoServerTemplate.strategy.doLoginHandle = (name, pwd) -> { + // ... +} + +//SSO-Server端:在授权重定向之前的通知 +SaSsoServerProcessor.instance.ssoServerTemplate.strategy.jumpToRedirectUrlNotice = (redirectUrl) -> { + // ... +} + +// SSO-Server端:在校验 ticket 后,给 sso-client 端追加返回信息的函数 +SaSsoServerProcessor.instance.ssoServerTemplate.strategy.checkTicketAppendData = (loginId, result) -> { + // ... +} +``` + + + +## Sso-Client 所有可重写策略 + +``` java +// 发送 Http 请求的处理函数 +SaSsoClientProcessor.instance.ssoClientTemplate.strategy.sendRequest = url -> { + // ... +} + +// 自定义校验 ticket 返回值的处理逻辑 (每次从认证中心获取校验 ticket 的结果后调用) +SaSsoClientProcessor.instance.ssoClientTemplate.strategy.ticketResultHandle = (ctr, back) -> { + // ... +} + +// 转换:认证中心 centerId > 本地 loginId +SaSsoClientProcessor.instance.ssoClientTemplate.strategy.convertCenterIdToLoginId = (centerId) -> { + // ... +} + +// 转换:本地 loginId > 认证中心 centerId +SaSsoClientProcessor.instance.ssoClientTemplate.strategy.convertLoginIdToCenterId = (loginId) -> { + // ... +} +``` diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/strategy/SaSsoClientStrategy.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/strategy/SaSsoClientStrategy.java index 321b5355..b93bf004 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/strategy/SaSsoClientStrategy.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/strategy/SaSsoClientStrategy.java @@ -34,7 +34,7 @@ public class SaSsoClientStrategy { /** * 发送 Http 请求的处理函数 */ - public SendRequestFunction sendHttp = url -> { + public SendRequestFunction sendRequest = url -> { return SaManager.getSaHttpTemplate().get(url); }; @@ -72,7 +72,7 @@ public class SaSsoClientStrategy { * @return 返回的结果 */ public SaResult requestAsSaResult(String url) { - String body = sendHttp.apply(url); + String body = sendRequest.apply(url); Map map = SaManager.getSaJsonTemplate().jsonToMap(body); return new SaResult(map); } diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoClientTemplate.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoClientTemplate.java index 7e2abbd6..a4729b7e 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoClientTemplate.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoClientTemplate.java @@ -73,7 +73,7 @@ public class SaSsoClientTemplate extends SaSsoTemplate { */ public Object getData(String path, Map paramMap) { String url = buildCustomPathUrl(path, paramMap); - return strategy.sendHttp.apply(url); + return strategy.sendRequest.apply(url); } /** @@ -174,7 +174,7 @@ public class SaSsoClientTemplate extends SaSsoTemplate { // 发起请求 String finalUrl = SaFoxUtil.joinParam(pushUrl, paramsStr); - return strategy.sendHttp.apply(finalUrl); + return strategy.sendRequest.apply(finalUrl); } /**