mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-12-26 14:15:41 +08:00
SSO模式三新增账号资料同步示例
This commit is contained in:
@@ -74,7 +74,53 @@ sa-token:
|
||||
> 注:如果已测试运行模式二,可先将Redis中的数据清空,以防旧数据对测试造成干扰
|
||||
|
||||
|
||||
### 2、无刷单点注销
|
||||
### 2、获取Userinfo
|
||||
除了账号id,我们可能还需要将用户的昵称、头像等信息从 Server端 带到 Client端,即:用户资料的同步。要解决这个需求,我们只需:
|
||||
|
||||
##### 2.1、在Server端自定义接口,查询用户资料
|
||||
``` java
|
||||
// 自定义接口:获取userinfo
|
||||
@RequestMapping("/sso/userinfo")
|
||||
public Object userinfo(String loginId, String secretkey) {
|
||||
System.out.println("---------------- 获取userinfo --------");
|
||||
|
||||
// 校验调用秘钥
|
||||
SaSsoUtil.checkSecretkey(secretkey);
|
||||
|
||||
// 自定义返回结果(模拟)
|
||||
return SaResult.ok()
|
||||
.set("id", loginId)
|
||||
.set("name", "linxiaoyu")
|
||||
.set("sex", "女")
|
||||
.set("age", 18);
|
||||
}
|
||||
```
|
||||
|
||||
##### 2.2、在Client端调用此接口查询userinfo
|
||||
首先在yml中配置接口地址
|
||||
``` yml
|
||||
sa-token:
|
||||
sso:
|
||||
# SSO-Server端 查询userinfo地址
|
||||
userinfo-url: http://sa-sso-server.com:9000/sso/userinfo
|
||||
```
|
||||
|
||||
然后在`SsoClientController`中新增接口
|
||||
``` java
|
||||
// 查询我的账号信息
|
||||
@RequestMapping("/sso/myinfo")
|
||||
public Object myinfo() {
|
||||
Object userinfo = SaSsoUtil.getUserinfo(StpUtil.getLoginId());
|
||||
System.out.println("--------info:" + userinfo);
|
||||
return userinfo;
|
||||
}
|
||||
```
|
||||
|
||||
访问测试:[http://sa-sso-client2.com:9001/sso/myinfo](http://sa-sso-client2.com:9001/sso/myinfo)
|
||||
|
||||
|
||||
|
||||
### 3、无刷单点注销
|
||||
|
||||
有了单点登录就必然要有单点注销,网上给出的大多数解决方案是将注销请求重定向至SSO-Server中心,逐个通知Client端下线
|
||||
|
||||
@@ -151,7 +197,7 @@ PS:这里我们为了方便演示,使用的是超链接跳页面的形式,
|
||||
|
||||
|
||||
|
||||
### 3、后记
|
||||
### 4、后记
|
||||
当我们熟读三种模式的单点登录之后,其实不难发现:所谓单点登录,其本质就是多个系统之间的会话共享
|
||||
|
||||
当我们理解这一点之后,三种模式的工作原理也浮出水面:
|
||||
|
||||
@@ -97,17 +97,18 @@ PS:两者的区别在于:**`方式1会覆盖yml中的配置,方式2会与y
|
||||
|
||||
|
||||
### 单点登录相关配置
|
||||
| 参数名称 | 类型 | 默认值 | 说明 |
|
||||
| :-------- | :-------- | :-------- | :-------- |
|
||||
| ticketTimeout | long | 300 | Ticket有效期 (单位: 秒) |
|
||||
| allowUrl | String | * | 所有允许的授权回调地址,多个用逗号隔开 (不在此列表中的URL将禁止下放ticket),[详情请参考 SSO模式二的域名校验章节] |
|
||||
| secretkey | String | null | 调用秘钥 (用于SSO模式三单点注销的接口通信身份校验) |
|
||||
| authUrl | String | null | SSO-Server端 单点登录地址 |
|
||||
| isHttp | Boolean | false | 是否使用http请求校验ticket值 |
|
||||
| checkTicketUrl| String | null | SSO-Server端 Ticket校验地址 |
|
||||
| isSlo | Boolean | false | 是否打开单点注销功能 |
|
||||
| sloUrl | String | null | SSO-Server端 单点注销地址 |
|
||||
| ssoLogoutCall | String | null | SSO-Client端 当前Client端的单点注销回调URL (为空时自动获取) |
|
||||
| 参数名称 | 类型 | 默认值 | 所属端 | 说明 |
|
||||
| :-------- | :-------- | :-------- | :-------- | :-------- |
|
||||
| ticketTimeout | long | 300 | Server端 | Ticket有效期 (单位: 秒) |
|
||||
| allowUrl | String | * | Server端 | 所有允许的授权回调地址,多个用逗号隔开 (不在此列表中的URL将禁止下放ticket),[详情请参考 SSO模式二的域名校验章节] |
|
||||
| secretkey | String | null | Server端 & Client端 | 调用秘钥 (用于SSO模式三单点注销的接口通信身份校验) |
|
||||
| authUrl | String | null | Client端 | SSO-Server端 单点登录地址 |
|
||||
| isHttp | Boolean | false | Server端 & Client端 | 是否使用http请求校验ticket值 |
|
||||
| checkTicketUrl| String | null | Client端 | SSO-Server端 Ticket校验地址 |
|
||||
| isSlo | Boolean | false | Client端 | 是否打开单点注销功能 |
|
||||
| sloUrl | String | null | Client端 | SSO-Server端 单点注销地址 |
|
||||
| ssoLogoutCall | String | null | Client端 | SSO-Client端 当前Client端的单点注销回调URL (为空时自动获取) |
|
||||
| userinfoUrl | String | null | Client端 | SSO-Server端 查询userinfo地址 |
|
||||
|
||||
配置示例:
|
||||
``` yml
|
||||
|
||||
Reference in New Issue
Block a user