Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zhangjian1949
microservices-platform
提交
91328ef6
microservices-platform
项目概览
zhangjian1949
/
microservices-platform
与 Fork 源项目一致
Fork自
zlt2000 / microservices-platform
通知
6
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
microservices-platform
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
91328ef6
编写于
3月 14, 2020
作者:
zlt2000
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加前后端分离的单点登录样例工程web-sso
上级
658f4d65
变更
19
展开全部
隐藏空白更改
内联
并排
Showing
19 changed file
with
344 addition
and
60 deletion
+344
-60
zlt-demo/sso-demo/README.md
zlt-demo/sso-demo/README.md
+2
-19
zlt-demo/sso-demo/pom.xml
zlt-demo/sso-demo/pom.xml
+8
-40
zlt-demo/sso-demo/ss-sso/README.md
zlt-demo/sso-demo/ss-sso/README.md
+21
-0
zlt-demo/sso-demo/ss-sso/pom.xml
zlt-demo/sso-demo/ss-sso/pom.xml
+50
-0
zlt-demo/sso-demo/ss-sso/src/main/java/com/sso/demo/SSOApplication.java
...emo/ss-sso/src/main/java/com/sso/demo/SSOApplication.java
+0
-0
zlt-demo/sso-demo/ss-sso/src/main/java/com/sso/demo/config/SecurityConfig.java
...sso/src/main/java/com/sso/demo/config/SecurityConfig.java
+0
-0
zlt-demo/sso-demo/ss-sso/src/main/java/com/sso/demo/config/SsoLogoutSuccessHandler.java
...ain/java/com/sso/demo/config/SsoLogoutSuccessHandler.java
+0
-0
zlt-demo/sso-demo/ss-sso/src/main/java/com/sso/demo/controller/HomeController.java
...src/main/java/com/sso/demo/controller/HomeController.java
+0
-0
zlt-demo/sso-demo/ss-sso/src/main/resources/bootstrap.yml
zlt-demo/sso-demo/ss-sso/src/main/resources/bootstrap.yml
+1
-1
zlt-demo/sso-demo/ss-sso/src/main/resources/templates/index.html
...o/sso-demo/ss-sso/src/main/resources/templates/index.html
+0
-0
zlt-demo/sso-demo/ss-sso/单点登录架构图.jpg
zlt-demo/sso-demo/ss-sso/单点登录架构图.jpg
+0
-0
zlt-demo/sso-demo/web-sso/README.md
zlt-demo/sso-demo/web-sso/README.md
+21
-0
zlt-demo/sso-demo/web-sso/pom.xml
zlt-demo/sso-demo/web-sso/pom.xml
+38
-0
zlt-demo/sso-demo/web-sso/src/main/java/com/sso/demo/WebSSOApplication.java
...web-sso/src/main/java/com/sso/demo/WebSSOApplication.java
+18
-0
zlt-demo/sso-demo/web-sso/src/main/java/com/sso/demo/controller/ApiController.java
.../src/main/java/com/sso/demo/controller/ApiController.java
+89
-0
zlt-demo/sso-demo/web-sso/src/main/resources/bootstrap.yml
zlt-demo/sso-demo/web-sso/src/main/resources/bootstrap.yml
+14
-0
zlt-demo/sso-demo/web-sso/src/main/resources/static/index.html
...emo/sso-demo/web-sso/src/main/resources/static/index.html
+43
-0
zlt-demo/sso-demo/web-sso/src/main/resources/static/js/jquery-3.2.1.min.js
.../web-sso/src/main/resources/static/js/jquery-3.2.1.min.js
+4
-0
zlt-demo/sso-demo/web-sso/src/main/resources/static/login.html
...emo/sso-demo/web-sso/src/main/resources/static/login.html
+35
-0
未找到文件。
zlt-demo/sso-demo/README.md
浏览文件 @
91328ef6
## **详细的原理和注意事项请查看**
[
单点登录详解
](
https://www.kancloud.cn/zlt2000/microservices-platform/1515193
)
*
**ss-sso**
:使用springSecurity来实现自动单点登录,非前后端分离
*
**web-sso**
:前后端分离的单点登录
## 启动以下服务
1.
zlt-uaa:统一认证中心
2.
user-center:用户服务
3.
sc-gateway:api网关
4.
back-web:webApp应用前端页面
5.
sso-demo:单点登录demo(zlt应用)
## 测试步骤
1.
登录webApp应用:
通过地址 http://127.0.0.1:8066 先登录webApp应用
2.
访问zlt应用(单点成功):
在浏览器打开一个新的页签(共享session),通过地址 http://127.0.0.1:8080 访问zlt应用,单点登录成功显示当前登录用户名、权限、应用id信息
\ No newline at end of file
zlt-demo/sso-demo/pom.xml
浏览文件 @
91328ef6
...
...
@@ -7,44 +7,12 @@
<version>
3.3.0
</version>
</parent>
<artifactId>
sso-demo
</artifactId>
<description>
单点登录demo
</description>
<dependencies>
<dependency>
<groupId>
com.zlt
</groupId>
<artifactId>
zlt-common-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-oauth2
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-thymeleaf
</artifactId>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-extension
</artifactId>
</dependency>
</dependencies>
<packaging>
pom
</packaging>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
<modules>
<!-- springSecurity单点登录demo -->
<module>
ss-sso
</module>
<!-- 前后端分离单点登录demo -->
<module>
web-sso
</module>
</modules>
</project>
\ No newline at end of file
zlt-demo/sso-demo/ss-sso/README.md
0 → 100644
浏览文件 @
91328ef6
## **详细的原理和注意事项请查看**
[
单点登录详解
](
https://www.kancloud.cn/zlt2000/microservices-platform/1515193
)
## 启动以下服务
1.
zlt-uaa:统一认证中心
2.
user-center:用户服务
3.
sc-gateway:api网关
4.
back-web:webApp应用前端页面
5.
ss-sso:单点登录demo(zlt应用)
## 测试步骤
1.
登录webApp应用:
通过地址 http://127.0.0.1:8066 先登录webApp应用
2.
访问zlt应用(单点成功):
在浏览器打开一个新的页签(共享session),通过地址 http://127.0.0.1:8080 访问zlt应用,单点登录成功显示当前登录用户名、权限、应用id信息
\ No newline at end of file
zlt-demo/sso-demo/ss-sso/pom.xml
0 → 100644
浏览文件 @
91328ef6
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.zlt
</groupId>
<artifactId>
sso-demo
</artifactId>
<version>
3.3.0
</version>
</parent>
<artifactId>
ss-sso
</artifactId>
<description>
springSecurity单点登录demo
</description>
<dependencies>
<dependency>
<groupId>
com.zlt
</groupId>
<artifactId>
zlt-common-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-oauth2
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-thymeleaf
</artifactId>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-extension
</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
zlt-demo/sso-demo/src/main/java/com/sso/demo/SSOApplication.java
→
zlt-demo/sso-demo/s
s-sso/s
rc/main/java/com/sso/demo/SSOApplication.java
浏览文件 @
91328ef6
文件已移动
zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SecurityConfig.java
→
zlt-demo/sso-demo/s
s-sso/s
rc/main/java/com/sso/demo/config/SecurityConfig.java
浏览文件 @
91328ef6
文件已移动
zlt-demo/sso-demo/src/main/java/com/sso/demo/config/SsoLogoutSuccessHandler.java
→
zlt-demo/sso-demo/s
s-sso/s
rc/main/java/com/sso/demo/config/SsoLogoutSuccessHandler.java
浏览文件 @
91328ef6
文件已移动
zlt-demo/sso-demo/src/main/java/com/sso/demo/controller/HomeController.java
→
zlt-demo/sso-demo/s
s-sso/s
rc/main/java/com/sso/demo/controller/HomeController.java
浏览文件 @
91328ef6
文件已移动
zlt-demo/sso-demo/src/main/resources/bootstrap.yml
→
zlt-demo/sso-demo/s
s-sso/s
rc/main/resources/bootstrap.yml
浏览文件 @
91328ef6
...
...
@@ -8,7 +8,7 @@ spring:
zlt
:
api-uaa
:
url
:
http://127.0.0.1:9900/api-uaa/oauth
logout-uri
:
${zlt.api-uaa.url}/remove/token?redirect
U
ri=http://127.0.0.1:8080&access_token=
logout-uri
:
${zlt.api-uaa.url}/remove/token?redirect
_u
ri=http://127.0.0.1:8080&access_token=
security
:
oauth2
:
...
...
zlt-demo/sso-demo/src/main/resources/templates/index.html
→
zlt-demo/sso-demo/s
s-sso/s
rc/main/resources/templates/index.html
浏览文件 @
91328ef6
文件已移动
zlt-demo/sso-demo/单点登录架构图.jpg
→
zlt-demo/sso-demo/
ss-sso/
单点登录架构图.jpg
浏览文件 @
91328ef6
文件已移动
zlt-demo/sso-demo/web-sso/README.md
0 → 100644
浏览文件 @
91328ef6
## **详细的原理和注意事项请查看**
[
单点登录详解
](
https://www.kancloud.cn/zlt2000/microservices-platform/1515193
)
## 启动以下服务
1.
zlt-uaa:统一认证中心
2.
user-center:用户服务
3.
sc-gateway:api网关
4.
back-web:webApp应用前端页面
5.
web-sso:单点登录demo(app应用)
## 测试步骤
1.
登录webApp应用:
通过地址 http://127.0.0.1:8066 先登录webApp应用
2.
访问app应用(单点成功):
在浏览器打开一个新的页签(共享session),通过地址 http://127.0.0.1:8081/index.html 访问app应用静态页面,单点登录成功显示当前登录用户名、应用id、token信息
\ No newline at end of file
zlt-demo/sso-demo/web-sso/pom.xml
0 → 100644
浏览文件 @
91328ef6
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
com.zlt
</groupId>
<artifactId>
sso-demo
</artifactId>
<version>
3.3.0
</version>
</parent>
<artifactId>
web-sso
</artifactId>
<description>
前后端分离单点登录demo
</description>
<dependencies>
<dependency>
<groupId>
com.zlt
</groupId>
<artifactId>
zlt-common-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
zlt-demo/sso-demo/web-sso/src/main/java/com/sso/demo/WebSSOApplication.java
0 → 100644
浏览文件 @
91328ef6
package
com.sso.demo
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
/**
* @author zlt
* @date 2020/3/10
* <p>
* Blog: https://blog.csdn.net/zlt2000
* Github: https://github.com/zlt2000
*/
@SpringBootApplication
public
class
WebSSOApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
WebSSOApplication
.
class
,
args
);
}
}
zlt-demo/sso-demo/web-sso/src/main/java/com/sso/demo/controller/ApiController.java
0 → 100644
浏览文件 @
91328ef6
package
com.sso.demo.controller
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.client.RestTemplate
;
import
sun.misc.BASE64Encoder
;
import
java.io.UnsupportedEncodingException
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author zlt
* @date 2020/3/10
* <p>
* Blog: https://blog.csdn.net/zlt2000
* Github: https://github.com/zlt2000
*/
@RestController
public
class
ApiController
{
@Value
(
"${zlt.sso.client-id:}"
)
private
String
clientId
;
@Value
(
"${zlt.sso.client-secret:}"
)
private
String
clientSecret
;
@Value
(
"${zlt.sso.redirect-uri:}"
)
private
String
redirectUri
;
@Value
(
"${zlt.sso.access-token-uri:}"
)
private
String
accessTokenUri
;
@Value
(
"${zlt.sso.user-info-uri:}"
)
private
String
userInfoUri
;
@GetMapping
(
"/token/{code}"
)
public
Map
tokenInfo
(
@PathVariable
String
code
)
throws
UnsupportedEncodingException
{
//获取token
Map
tokenMap
=
getAccessToken
(
code
);
String
accessToken
=
(
String
)
tokenMap
.
get
(
"access_token"
);
//获取用户信息
Map
userMap
=
getUserInfo
(
accessToken
);
Map
result
=
new
HashMap
(
2
);
result
.
put
(
"tokenInfo"
,
tokenMap
);
result
.
put
(
"userInfo"
,
userMap
);
return
result
;
}
/**
* 获取token
*/
public
Map
getAccessToken
(
String
code
)
throws
UnsupportedEncodingException
{
RestTemplate
restTemplate
=
new
RestTemplate
();
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_FORM_URLENCODED
);
byte
[]
authorization
=
(
clientId
+
":"
+
clientSecret
).
getBytes
(
"UTF-8"
);
BASE64Encoder
encoder
=
new
BASE64Encoder
();
String
base64Auth
=
encoder
.
encode
(
authorization
);
headers
.
add
(
"Authorization"
,
"Basic "
+
base64Auth
);
MultiValueMap
<
String
,
String
>
param
=
new
LinkedMultiValueMap
<>();
param
.
add
(
"code"
,
code
);
param
.
add
(
"grant_type"
,
"authorization_code"
);
param
.
add
(
"redirect_uri"
,
redirectUri
);
param
.
add
(
"scope"
,
"app"
);
HttpEntity
<
MultiValueMap
<
String
,
String
>>
request
=
new
HttpEntity
<>(
param
,
headers
);
ResponseEntity
<
Map
>
response
=
restTemplate
.
postForEntity
(
accessTokenUri
,
request
,
Map
.
class
);
Map
result
=
response
.
getBody
();
return
result
;
}
/**
* 获取用户信息
*/
public
Map
getUserInfo
(
String
accessToken
)
{
RestTemplate
restTemplate
=
new
RestTemplate
();
Map
result
=
restTemplate
.
getForObject
(
userInfoUri
+
"?access_token="
+
accessToken
,
Map
.
class
);
return
(
Map
)
result
.
get
(
"datas"
);
}
}
zlt-demo/sso-demo/web-sso/src/main/resources/bootstrap.yml
0 → 100644
浏览文件 @
91328ef6
server
:
port
:
8081
spring
:
application
:
name
:
sepSso-demo
zlt
:
sso
:
client-id
:
app
client-secret
:
app
redirect-uri
:
http://127.0.0.1:8081/login.html
access-token-uri
:
http://127.0.0.1:9900/api-uaa/oauth/token
user-info-uri
:
http://127.0.0.1:9900/api-user/users/current
\ No newline at end of file
zlt-demo/sso-demo/web-sso/src/main/resources/static/index.html
0 → 100644
浏览文件 @
91328ef6
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<meta
charset=
"utf-8"
/>
<title>
zlt
</title>
<script
type=
"text/javascript"
src=
"js/jquery-3.2.1.min.js"
></script>
</head>
<body>
<div>
<p>
用户名:
<span
id=
"userName"
></span></p>
<p>
应用id:
<span
id=
"clientId"
></span></p>
<p>
token:
<span
id=
"accessToken"
></span></p>
<p><input
type=
"button"
value=
"登出"
onclick=
"logout()"
/></p>
</div>
<script>
//应用id
let
clientId
=
'
app
'
;
//授权中心地址
let
uaaUri
=
'
http://127.0.0.1:9900/api-uaa/oauth/
'
;
window
.
onload
=
function
()
{
let
accessToken
=
sessionStorage
.
getItem
(
'
access_token
'
);
if
(
accessToken
)
{
//已登录
let
username
=
sessionStorage
.
getItem
(
'
username
'
);
$
(
'
#accessToken
'
).
html
(
accessToken
);
$
(
'
#userName
'
).
html
(
username
);
$
(
'
#clientId
'
).
html
(
clientId
);
}
else
{
//未登录
sessionStorage
.
setItem
(
"
visitUri
"
,
window
.
location
.
href
);
window
.
location
=
uaaUri
+
'
authorize?client_id=
'
+
clientId
+
'
&redirect_uri=http://127.0.0.1:8081/login.html&response_type=code
'
;
}
};
function
logout
()
{
let
accessToken
=
sessionStorage
.
getItem
(
'
access_token
'
);
sessionStorage
.
removeItem
(
'
access_token
'
);
sessionStorage
.
removeItem
(
'
username
'
);
window
.
location
=
uaaUri
+
'
remove/token?redirect_uri=http://127.0.0.1:8081/index.html&access_token=
'
+
accessToken
;
}
</script>
</body>
</html>
zlt-demo/sso-demo/web-sso/src/main/resources/static/js/jquery-3.2.1.min.js
0 → 100644
浏览文件 @
91328ef6
此差异已折叠。
点击以展开。
zlt-demo/sso-demo/web-sso/src/main/resources/static/login.html
0 → 100644
浏览文件 @
91328ef6
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<meta
charset=
"utf-8"
/>
<title>
zlt
</title>
<script
type=
"text/javascript"
src=
"js/jquery-3.2.1.min.js"
></script>
</head>
<body>
<script>
window
.
onload
=
function
()
{
//获取url参数
function
getQueryVariable
(
variable
)
{
var
query
=
window
.
location
.
search
.
substring
(
1
);
var
vars
=
query
.
split
(
"
&
"
);
for
(
var
i
=
0
;
i
<
vars
.
length
;
i
++
)
{
var
pair
=
vars
[
i
].
split
(
"
=
"
);
if
(
pair
[
0
]
==
variable
){
return
pair
[
1
];}
}
return
''
;
}
//url获取code
let
code
=
getQueryVariable
(
'
code
'
);
//获取token和用户信息
$
.
ajax
({
url
:
'
http://127.0.0.1:8081/token/
'
+
code
,
success
:
function
(
result
)
{
console
.
log
(
result
);
sessionStorage
.
setItem
(
'
access_token
'
,
result
.
tokenInfo
.
access_token
);
sessionStorage
.
setItem
(
'
username
'
,
result
.
userInfo
.
username
);
window
.
location
=
sessionStorage
.
getItem
(
'
visitUri
'
);
}});
};
</script>
</body>
</html>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录