From 83ac2036318ae9e0536fdf0863968a3d01def6ed Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Mon, 6 May 2024 10:33:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/api/stp-util.md | 1 + sa-token-doc/sso/sso-apidoc.md | 8 ++- sa-token-doc/static/index.css | 4 +- sa-token-doc/use/config.md | 112 +++++++++++++++++++++++++-------- 4 files changed, 96 insertions(+), 29 deletions(-) diff --git a/sa-token-doc/api/stp-util.md b/sa-token-doc/api/stp-util.md index d7ca8f94..f9be25de 100644 --- a/sa-token-doc/api/stp-util.md +++ b/sa-token-doc/api/stp-util.md @@ -94,6 +94,7 @@ StpUtil.getSessionBySessionId("xxxx-xxxx-xxxx"); // 获取指定key的Session, ``` java // Token 最低活跃频率 StpUtil.getTokenActiveTimeout(); // 获取当前 token 距离被冻结还剩多少时间 (单位: 秒) +StpUtil.getTokenLastActiveTime(); // 获取当前 token 最后活跃时间 StpUtil.checkActiveTimeout(); // 检查当前token 是否已经被冻结,如果是则抛出异常 StpUtil.updateLastActiveToNow(); // 续签当前token:(将 [最后操作时间] 更新为当前时间戳) diff --git a/sa-token-doc/sso/sso-apidoc.md b/sa-token-doc/sso/sso-apidoc.md index 2d03713a..53d47ef4 100644 --- a/sa-token-doc/sso/sso-apidoc.md +++ b/sa-token-doc/sso/sso-apidoc.md @@ -22,7 +22,7 @@ http://{host}:{port}/sso/auth | :-------- | :-------- | :-------- | | redirect | 是 | 登录成功后的重定向地址,一般填写 location.href(从哪来回哪去) | | mode | 否 | 授权模式,取值 [simple, ticket],simple=登录后直接重定向,ticket=带着ticket参数重定向,默认值为ticket | -| client | 否 | 客户端标识,可不填,代表是一个匿名应用,若填写了,则校验 ticket 时也必须时这个 client 才可以校验成功 | +| client | 否 | 客户端标识,可不填,代表是一个匿名应用,若填写了,则校验 ticket 时也必须是这个 client 才可以校验成功 | 访问接口后有两种情况: - 情况一:当前会话在 SSO 认证中心未登录,会进入登录页开始登录。 @@ -60,6 +60,9 @@ http://{host}:{port}/sso/checkTicket | ticket | 是 | 在步骤 1 中授权重定向时的 ticket 参数 | | ssoLogoutCall | 否 | 单点注销时的回调通知地址,只在SSO模式三单点注销时需要携带此参数| | client | 否 | 客户端标识,可不填,代表是一个匿名应用,若填写了,则必须填写的和 `/sso/auth` 登录时填写的一致才可以校验成功 | +| timestamp | 是 | 当前时间戳,13位 | +| nonce | 是 | 随机字符串 | +| sign | 是 | 签名,生成算法:`md5( [client={client值}&]nonce={随机字符串}&[ssoLogoutCall={单点注销回调地址}&]ticket={ticket值}×tamp={13位时间戳}&key={secretkey秘钥} )` 注:[]内容代表可选 | 返回值场景: - 校验成功时: @@ -68,7 +71,8 @@ http://{host}:{port}/sso/checkTicket { "code": 200, "msg": "ok", - "data": "10001" // 此 ticket 指向的 loginId + "data": "10001", // 此 ticket 指向的 loginId + "remainSessionTimeout": 7200, // 此账号在 sso-server 端的会话剩余有效期(单位:s) } ``` diff --git a/sa-token-doc/static/index.css b/sa-token-doc/static/index.css index b860c3cc..08cfc6bc 100644 --- a/sa-token-doc/static/index.css +++ b/sa-token-doc/static/index.css @@ -176,8 +176,8 @@ body{font-size: 16px; color: #34495E; font-family: "Source Sans Pro","Helvetica .com-box-you a img{min-width: 60%; max-width: 85%; vertical-align: middle; max-height: 100%;} /* -------- Dromara 成员项目 --------- */ -.table-show-pj{border: 1px #ddd solid; border-width: 1px 0 0 1px ;} -.table-show-pj a{flex: 0 0 16.5%; border: 1px #ddd solid; margin: 0; padding: 7px 0; overflow: hidden;} +.table-show-pj{border: 1px #d5d5d5 solid; border-width: 1px 0 0 1px ;} +.table-show-pj a{flex: 0 0 16.5%; border: 1px #d5d5d5 solid; margin: 0; padding: 7px 0; overflow: hidden;} .table-show-pj a{border-width: 0 1px 1px 0px;} .table-show-pj a img{min-width: 60%; max-width: 70%; } diff --git a/sa-token-doc/use/config.md b/sa-token-doc/use/config.md index 6ea30755..d9dbc48c 100644 --- a/sa-token-doc/use/config.md +++ b/sa-token-doc/use/config.md @@ -4,7 +4,9 @@ --- -### 方式1、在 application.yml 配置 +### 1、配置方式 + +##### 方式1、在 application.yml 配置 @@ -52,7 +54,7 @@ sa-token.is-log=true -### 方式2、通过代码配置 +##### 方式2、通过代码配置 @@ -108,7 +110,7 @@ public class SaTokenConfigure { --- -### 所有可配置项 +### 2、核心包所有可配置项 **你不必立刻掌握整个表格,只需要在用到某个功能时再详细查阅它即可** @@ -141,7 +143,8 @@ public class SaTokenConfigure { | basic | String | "" | Http Basic 认证的账号和密码 [参考:Http Basic 认证](/up/basic-auth) | | currDomain | String | null | 配置当前项目的网络访问地址 | | checkSameToken | Boolean | false | 是否校验Same-Token(部分rpc插件有效) | -| cookie | Object | new SaCookieConfig() | Cookie配置对象 | +| cookie | Object | new SaCookieConfig() | Cookie 配置对象 | +| sign | Object | new SaSignConfig() | API 签名配置对象 | Cookie相关配置: @@ -179,35 +182,90 @@ sa-token.cookie.sameSite=Lax ``` +Sign 参数签名相关配置: -### 单点登录相关配置 +| 参数名称 | 类型 | 默认值 | 说明 | +| :-------- | :-------- | :-------- | :-------- | +| secretKey | String | null | API 调用签名秘钥 | +| timestampDisparity | long | 900000 | 接口调用时的时间戳允许的差距(单位:ms),-1 代表不校验差距,默认15分钟 | -Server 端配置: +示例: + + + +``` yaml +# Sa-Token 配置 +sa-token: + # 参数签名配置 + sign: + # API 接口调用签名秘钥 + secret-key: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor +``` + +``` properties +# API 接口调用签名秘钥 +sa-token.sign.secret-key=kQwIOrYvnXmSDkwEiFngrKidMcdrgKor +``` + + + + + +### 3、单点登录相关配置 + +**SSO-Server 端配置:** | 参数名称 | 类型 | 默认值 | 说明 | | :-------- | :-------- | :-------- | :-------- | +| mode | String | | 指定当前系统集成 SSO 时使用的模式(约定型配置项,不对代码逻辑产生任何影响) | | ticketTimeout | long | 300 | ticket 有效期 (单位: 秒) | | allowUrl | String | * | 所有允许的授权回调地址,多个用逗号隔开(不在此列表中的URL将禁止下放ticket),参考:[SSO整合:配置域名校验](/sso/sso-check-domain) | +| homeRoute | String | | 主页路由:在 /sso/auth 登录后不指定 redirect 参数的情况下默认跳转的路由 | | isSlo | Boolean | false | 是否打开单点注销功能 | | isHttp | Boolean | false | 是否打开模式三(此值为 true 时将使用 http 请求:校验 ticket 值、单点注销、获取 userinfo),参考:[详解](/use/config?id=配置项详解:isHttp) | -| secretkey | String | null | 调用秘钥 (用于SSO模式三单点注销的接口通信身份校验) | +| autoRenewTimeout | Bolean | false | 是否在每次下发 ticket 时,自动续期 token 的有效期(根据全局 timeout 值) | +| maxRegClient | int | 32 | 在 Access-Session 上记录 Client 信息的最高数量(-1=无限),超过此值将进行自动清退处理,先进先出 | +| isCheckSign | Boolean | true | 是否校验参数签名(方便本地调试用的一个配置项,生产环境请务必为true) | +配置示例: -Client 端配置: + + +``` yaml +# Sa-Token 配置 +sa-token: + # SSO 单点登录服务端配置 + sso-server: + # Ticket有效期 (单位: 秒),默认五分钟 + ticket-timeout: 300 + # 所有允许的授权回调地址 + allow-url: "*" +``` + +``` properties +# Ticket有效期 (单位: 秒),默认五分钟 +sa-token.sso-server.ticket-timeout=300 +# 所有允许的授权回调地址 +sa-token.sso-server.allow-url="*" +``` + + +**SSO-Client 端配置:** | 参数名称 | 类型 | 默认值 | 说明 | | :-------- | :-------- | :-------- | :-------- | -| authUrl | String | /sso/auth | 配置 Server 端单点登录授权地址 | -| isSlo | Boolean | false | 是否打开单点注销功能 | -| isHttp | Boolean | false | 是否打开模式三(此值为 true 时将使用 http 请求:校验 ticket 值、单点注销、获取 userinfo),参考:[详解](/use/config?id=配置项详解:isHttp) | -| checkTicketUrl| String | /sso/checkTicket | 配置 Server 端的 `ticket` 校验地址 | -| userinfoUrl | String | /sso/userinfo | 配置 Server 端查询 `userinfo` 地址 | -| sloUrl | String | /sso/signout | 配置 Server 端单点注销地址 | -| ssoLogoutCall | String | null | 配置当前 Client 端的单点注销回调URL (为空时自动获取) | -| secretkey | String | null | 接口调用秘钥 (用于SSO模式三单点注销的接口通信身份校验) | -| serverUrl | String | null | 配置 Server 端主机总地址,拼接在 `authUrl`、`checkTicketUrl`、`userinfoUrl`、`sloUrl` 属性前面,用以简化各种 url 配置,参考:[详解](/sso/sso-questions?id=问:模式三配置一堆-xxx-url-,有办法简化一下吗?) | +| mode | String | | 指定当前系统集成 SSO 时使用的模式(约定型配置项,不对代码逻辑产生任何影响) | | client | String | "" | 当前 Client 名称标识,用于和 ticket 码的互相锁定 | - +| serverUrl | String | null | 配置 Server 端主机总地址,拼接在 `authUrl`、`checkTicketUrl`、`userinfoUrl`、`sloUrl` 属性前面,用以简化各种 url 配置,参考:[详解](/sso/sso-questions?id=问:模式三配置一堆-xxx-url-,有办法简化一下吗?) | +| authUrl | String | /sso/auth | 配置 Server 端单点登录授权地址 | +| checkTicketUrl| String | /sso/checkTicket | 配置 Server 端的 `ticket` 校验地址 | +| getDataUrl | String | /sso/getData | 配置 Server 端的 拉取数据 地址 | +| sloUrl | String | /sso/signout | 配置 Server 端单点注销地址 | +| currSsoLogin | String | null | 配置当前 Client 端的登录地址(为空时自动获取) | +| currSsoLogoutCall | String | null | 配置当前 Client 端的单点注销回调URL (为空时自动获取) | +| isSlo | Boolean | true | 是否打开单点注销功能 | +| isHttp | Boolean | false | 是否打开模式三(此值为 true 时将使用 http 请求:校验 ticket 值、单点注销、拉取数据getData),参考:[详解](/use/config?id=配置项详解:isHttp) | +| isCheckSign | Boolean | true | 是否校验参数签名(方便本地调试用的一个配置项,生产环境请务必为true) | 配置示例: @@ -217,21 +275,25 @@ Client 端配置: # Sa-Token 配置 sa-token: # SSO-相关配置 - sso: - # SSO-Server端 单点登录授权地址 - auth-url: http://sa-sso-server.com:9000/sso/auth + sso-client: + # sso-server 端主机地址 + server-url: http://sa-sso-server.com:9000 + # 是否打开单点注销功能 + is-slo: true ``` ``` properties -# SSO-Server端 单点登录授权地址 -sa-token.sso.auth-url=http://sa-sso-server.com:9000/sso/auth +# sso-server 端主机地址 +sa-token.sso-client.server-url=http://sa-sso-server.com:9000 +# 是否打开单点注销功能 +sa-token.sso-client.is-slo=true ``` -### OAuth2.0相关配置 +### 4、OAuth2.0相关配置 | 参数名称 | 类型 | 默认值 | 说明 | | :-------- | :-------- | :-------- | :-------- | | isCode | Boolean | true | 是否打开模式:授权码(`Authorization Code`) | @@ -292,7 +354,7 @@ sa-token.oauth2.is-client=true -### 部分配置项详解 +### 5、部分配置项详解 对部分配置项做一下详解