|
1 | | -### YMP-SSO (Single Sign-On) |
2 | | - |
3 | | -#### Maven包依赖 |
4 | | - |
5 | | - <dependency> |
6 | | - <groupId>net.ymate.module</groupId> |
7 | | - <artifactId>ymate-module-sso</artifactId> |
8 | | - <version>2.0.0</version> |
9 | | - </dependency> |
10 | | - |
11 | | -#### 模块配置参数说明 |
12 | | - |
13 | | - #------------------------------------- |
14 | | - # module.sso 模块初始化参数 |
15 | | - #------------------------------------- |
16 | | - |
17 | | - # 在Cookie中存储令牌的名称, 默认值: module.sso_token |
18 | | - ymp.configs.module.sso.token_cookie_name= |
19 | | - |
20 | | - # 令牌存储在请求头中的名称, 默认值: X-ModuleSSO-Token |
21 | | - ymp.configs.module.sso.token_header_name= |
22 | | - |
23 | | - # 令牌URL参数名称, 默认值: token |
24 | | - ymp.configs.module.sso.token_param_name= |
25 | | - |
26 | | - # 令牌生命周期(秒), 默认值为0, 小于等于0表示不启用 |
27 | | - ymp.configs.module.sso.token_max_age= |
28 | | - |
29 | | - # 令牌有效性验证的时间间隔(秒), 默认值: 0 |
30 | | - ymp.configs.module.sso.token_validation_time_interval= |
31 | | - |
32 | | - # 缓存名称前缀, 默认值: "" |
33 | | - ymp.configs.module.sso.cache_name_prefix= |
34 | | - |
35 | | - # 开启多会话模式(即同一账号允许多处登录), 默认值: false |
36 | | - ymp.configs.module.sso.multi_session_enabled= |
37 | | - |
38 | | - # 同一账号最多会话数量,小于等于0表示不限制 |
39 | | - ymp.configs.module.sso.multi_session_max_count= |
40 | | - |
41 | | - # 开启会话的IP地址检查, 默认值: false |
42 | | - ymp.configs.module.sso.ip_check_enabled= |
43 | | - |
44 | | - # 是否为客户端模式, 默认为false |
45 | | - ymp.configs.module.sso.client_mode= |
46 | | - |
47 | | - # 指定服务端基准URL路径(若客户端模式开启时则此项必填), 必须以'http://'或'https://'开始并以'/'结束, 如: http://www.ymate.net/service/, 默认值: 空 |
48 | | - ymp.configs.module.sso.service_base_url= |
49 | | - |
50 | | - # 客户端与服务端之间通讯请求参数签名以及令牌加解密附加密钥, 默认值: "" |
51 | | - ymp.configs.module.sso.service_auth_key= |
52 | | - |
53 | | - # 服务请求映射前缀(不允许'/'开始和结束), 默认值: "" |
54 | | - ymp.configs.module.sso.service_prefix= |
55 | | - |
56 | | - # 是否注册通用令牌验证控制器, 默认值: false |
57 | | - ymp.configs.module.sso.general_auth_enabled= |
58 | | - |
59 | | - # 令牌分析适配器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenAdapter |
60 | | - ymp.configs.module.sso.token_adapter_class= |
61 | | - |
62 | | - # 令牌存储适配器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenStorageAdapter |
63 | | - ymp.configs.module.sso.token_storage_adapter_class= |
64 | | - |
65 | | - # 令牌自定义属性加载适配器接口实现, 非客户端模式时有效, 默认值: 空 |
66 | | - ymp.configs.module.sso.token_attribute_adapter_class= |
67 | | - |
68 | | - # 检测令牌无效时重定向URL地址(用于跳转至用户登录页面, 如: login?redirect_url=${redirect_url}), 默认值: 空 |
69 | | - ymp.configs.module.sso.token_invalid_redirect_url= |
70 | | - |
71 | | - # 检测令牌已存在时重定向URL地址(用于登录成功后跳转), 默认值: 空 |
72 | | - ymp.configs.module.sso.token_already_redirect_url= |
73 | | - |
74 | | - # 是否开启会话安全确认, 默认值: false |
75 | | - ymp.configs.module.sso.token_confirm_enabled= |
76 | | - |
77 | | - # 会话安全确认处理器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenConfirmHandler |
78 | | - ymp.configs.module.sso.token_confirm_handler_class= |
79 | | - |
80 | | - # 会话安全确认重定向URL地址, 默认值: confirm?redirect_url=${redirect_url} |
81 | | - ymp.configs.module.sso.token_confirm_redirect_url= |
82 | | - |
83 | | - # 会话安全确认超时时间(分钟),小于等于0则使用默认值: 30 |
84 | | - ymp.configs.module.sso.token_confirm_timeout= |
85 | | - |
86 | | -#### 示例代码: |
87 | | - |
88 | | -- 配置用户会话检查拦截器,该拦截器已集成单点登录相关处理逻辑: |
89 | | - |
90 | | - @RequestMapping(value = "/user/profile/edit", method = Type.HttpMethod.POST) |
91 | | - @UserSessionCheck |
92 | | - public IView __doEditUserProfile(@RequestParam String nickName, ......) throws Exception { |
93 | | - // ...... 省略 |
94 | | - return WebResult.success().toJsonView(); |
95 | | - } |
96 | | - |
97 | | -- 通过代码操作用户的登录授权令牌对象: |
98 | | - |
99 | | - ISingleSignOn singleSignOn = SingleSignOn.get(); |
100 | | - IToken token = singleSignOn.getCurrentToken(); |
101 | | - if (token == null) { |
102 | | - // 若返回值为空则表示令牌对象不存在 |
103 | | - token = singleSignOn.createToken("uid_xxx", "127.0.0.1", "FireFox"); |
104 | | - // 存储令牌并使其生效 |
105 | | - singleSignOn.saveOrUpdateToken(token); |
106 | | - } |
107 | | - if (token != null) { |
108 | | - // 令牌唯一标识 |
109 | | - token.getId(); |
110 | | - // 用户唯一标识 |
111 | | - token.getUid(); |
112 | | - // 用户IP地址 |
113 | | - token.getRemoteAddr(); |
114 | | - // 用户代理信息 |
115 | | - token.getUserAgent(); |
116 | | - // 令牌对象创建时间 |
117 | | - token.getCreateTime(); |
118 | | - // 令牌扩展属性 |
119 | | - token.getAttributes(); |
120 | | - } |
121 | | - |
122 | | -#### One More Thing |
123 | | - |
124 | | -YMP不仅提供便捷的Web及其它Java项目的快速开发体验,也将不断提供更多丰富的项目实践经验。 |
125 | | - |
126 | | -感兴趣的小伙伴儿们可以加入 官方QQ群480374360,一起交流学习,帮助YMP成长! |
127 | | - |
128 | | -了解更多有关YMP框架的内容,请访问官网:http://www.ymate.net/ |
| 1 | +# YMATE-MODULE-SSO |
| 2 | + |
| 3 | +[](https://search.maven.org/artifact/net.ymate.module/ymate-module-unpack) |
| 4 | +[](https://gitee.com/suninformation/ymate-module-unpack/blob/master/LICENSE) |
| 5 | + |
| 6 | +基于 YMP 框架实现的单点登录模块封装。 |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | +## Maven包依赖 |
| 11 | + |
| 12 | +```xml |
| 13 | +<dependency> |
| 14 | + <groupId>net.ymate.module</groupId> |
| 15 | + <artifactId>ymate-module-unpack</artifactId> |
| 16 | + <version>1.0.0</version> |
| 17 | +</dependency> |
| 18 | +``` |
| 19 | + |
| 20 | + |
| 21 | + |
| 22 | +## 模块配置参数说明 |
| 23 | + |
| 24 | +```properties |
| 25 | +#------------------------------------- |
| 26 | +# module.sso 模块初始化参数 |
| 27 | +#------------------------------------- |
| 28 | + |
| 29 | +# 在Cookie中存储令牌的名称, 默认值: module.sso_token |
| 30 | +ymp.configs.module.sso.token_cookie_name= |
| 31 | + |
| 32 | +# 令牌存储在请求头中的名称, 默认值: X-ModuleSSO-Token |
| 33 | +ymp.configs.module.sso.token_header_name= |
| 34 | + |
| 35 | +# 令牌URL参数名称, 默认值: token |
| 36 | +ymp.configs.module.sso.token_param_name= |
| 37 | + |
| 38 | +# 令牌生命周期(秒), 默认值为0, 小于等于0表示不启用 |
| 39 | +ymp.configs.module.sso.token_max_age= |
| 40 | + |
| 41 | +# 令牌有效性验证的时间间隔(秒), 默认值: 0 |
| 42 | +ymp.configs.module.sso.token_validation_time_interval= |
| 43 | + |
| 44 | +# 缓存名称前缀, 默认值: "" |
| 45 | +ymp.configs.module.sso.cache_name_prefix= |
| 46 | + |
| 47 | +# 开启多会话模式(即同一账号允许多处登录), 默认值: false |
| 48 | +ymp.configs.module.sso.multi_session_enabled= |
| 49 | + |
| 50 | +# 同一账号最多会话数量,小于等于0表示不限制 |
| 51 | +ymp.configs.module.sso.multi_session_max_count= |
| 52 | + |
| 53 | +# 开启会话的IP地址检查, 默认值: false |
| 54 | +ymp.configs.module.sso.ip_check_enabled= |
| 55 | + |
| 56 | +# 是否为客户端模式, 默认为false |
| 57 | +ymp.configs.module.sso.client_mode= |
| 58 | + |
| 59 | +# 指定服务端基准URL路径(若客户端模式开启时则此项必填), 必须以'http://'或'https://'开始并以'/'结束, 如: http://www.ymate.net/service/, 默认值: 空 |
| 60 | +ymp.configs.module.sso.service_base_url= |
| 61 | + |
| 62 | +# 客户端与服务端之间通讯请求参数签名以及令牌加解密附加密钥, 默认值: "" |
| 63 | +ymp.configs.module.sso.service_auth_key= |
| 64 | + |
| 65 | +# 服务请求映射前缀(不允许'/'开始和结束), 默认值: "" |
| 66 | +ymp.configs.module.sso.service_prefix= |
| 67 | + |
| 68 | +# 是否注册通用令牌验证控制器, 默认值: false |
| 69 | +ymp.configs.module.sso.general_auth_enabled= |
| 70 | + |
| 71 | +# 令牌分析适配器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenAdapter |
| 72 | +ymp.configs.module.sso.token_adapter_class= |
| 73 | + |
| 74 | +# 令牌存储适配器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenStorageAdapter |
| 75 | +ymp.configs.module.sso.token_storage_adapter_class= |
| 76 | + |
| 77 | +# 令牌自定义属性加载适配器接口实现, 非客户端模式时有效, 默认值: 空 |
| 78 | +ymp.configs.module.sso.token_attribute_adapter_class= |
| 79 | + |
| 80 | +# 检测令牌无效时重定向URL地址(用于跳转至用户登录页面, 如: login?redirect_url=${redirect_url}), 默认值: 空 |
| 81 | +ymp.configs.module.sso.token_invalid_redirect_url= |
| 82 | + |
| 83 | +# 检测令牌已存在时重定向URL地址(用于登录成功后跳转), 默认值: 空 |
| 84 | +ymp.configs.module.sso.token_already_redirect_url= |
| 85 | + |
| 86 | +# 是否开启会话安全确认, 默认值: false |
| 87 | +ymp.configs.module.sso.token_confirm_enabled= |
| 88 | + |
| 89 | +# 会话安全确认处理器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenConfirmHandler |
| 90 | +ymp.configs.module.sso.token_confirm_handler_class= |
| 91 | + |
| 92 | +# 会话安全确认重定向URL地址, 默认值: confirm?redirect_url=${redirect_url} |
| 93 | +ymp.configs.module.sso.token_confirm_redirect_url= |
| 94 | + |
| 95 | +# 会话安全确认超时时间(分钟),小于等于0则使用默认值: 30 |
| 96 | +ymp.configs.module.sso.token_confirm_timeout= |
| 97 | +``` |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | +## 示例代码 |
| 102 | + |
| 103 | +配置用户会话检查拦截器,该拦截器已集成单点登录相关处理逻辑: |
| 104 | + |
| 105 | +```java |
| 106 | +@RequestMapping(value = "/user/profile/edit", method = Type.HttpMethod.POST) |
| 107 | +@UserSessionCheck |
| 108 | +public IView doEditUserProfile(@RequestParam String nickName, ......) throws Exception { |
| 109 | + // ...... 省略 |
| 110 | + return WebResult.success().toJsonView(); |
| 111 | +} |
| 112 | +``` |
| 113 | + |
| 114 | +通过代码操作用户的登录授权令牌对象: |
| 115 | + |
| 116 | +```java |
| 117 | +ISingleSignOn singleSignOn = SingleSignOn.get(); |
| 118 | +IToken token = singleSignOn.getCurrentToken(); |
| 119 | +if (token == null) { |
| 120 | + // 若返回值为空则表示令牌对象不存在 |
| 121 | + token = singleSignOn.createToken("uid_xxx", "127.0.0.1", "FireFox"); |
| 122 | + // 存储令牌并使其生效 |
| 123 | + singleSignOn.saveOrUpdateToken(token); |
| 124 | +} |
| 125 | +if (token != null) { |
| 126 | + // 令牌唯一标识 |
| 127 | + token.getId(); |
| 128 | + // 用户唯一标识 |
| 129 | + token.getUid(); |
| 130 | + // 用户IP地址 |
| 131 | + token.getRemoteAddr(); |
| 132 | + // 用户代理信息 |
| 133 | + token.getUserAgent(); |
| 134 | + // 令牌对象创建时间 |
| 135 | + token.getCreateTime(); |
| 136 | + // 令牌扩展属性 |
| 137 | + token.getAttributes(); |
| 138 | +} |
| 139 | +``` |
| 140 | + |
| 141 | + |
| 142 | + |
| 143 | +## One More Thing |
| 144 | + |
| 145 | +YMP 不仅提供便捷的 Web 及其它 Java 项目的快速开发体验,也将不断提供更多丰富的项目实践经验。 |
| 146 | + |
| 147 | +感兴趣的小伙伴儿们可以加入官方 QQ 群:[480374360](https://qm.qq.com/cgi-bin/qm/qr?k=3KSXbRoridGeFxTVA8HZzyhwU_btZQJ2),一起交流学习,帮助 YMP 成长! |
| 148 | + |
| 149 | +如果喜欢 YMP,希望得到你的支持和鼓励! |
| 150 | + |
| 151 | + |
| 152 | + |
| 153 | +了解更多有关 YMP 框架的内容,请访问官网:[https://ymate.net](https://ymate.net) |
0 commit comments