跳到主要内容

Shiro 多项目

多项目集中权限管理及分布式会话

在做一些企业内部项目时或一些互联网后台时;可能会涉及到集中权限管理,统一进行多项目的权限管理;另外也需要统一的会话管理,即实现单点身份认证和授权控制。

学习本章之前,请务必先学习《第十章 会话管理》和《第十六章 综合实例》,本章代码都是基于这两章的代码基础上完成的。

本章示例是同域名的场景下完成的,如果跨域请参考《第十五章 单点登录》和《第十七章 OAuth2 集成》了解使用 CAS 或 OAuth2 实现跨域的身份验证和授权。另外比如客户端 / 服务器端的安全校验可参考《第二十章 无状态 Web 应用集成》。

部署架构

 

1、 有三个应用:用于用户/权限控制的Server(端口:8080);两个应用App1(端口9080)和App2(端口10080);
2、 使用Nginx反向代理这三个应用,nginx.conf的server配置部分如下:;

server {
listen 80;
server_name localhost;
charset utf-8;
location ~ ^/(chapter23-server)/ {
proxy_pass http://127.0.0.1:8080;
index /;
proxy_set_header Host $host;
}
location ~ ^/(chapter23-app1)/ {
proxy_pass http://127.0.0.1:9080;
index /;
proxy_set_header Host $host;
}
location ~ ^/(chapter23-app2)/ {
proxy_pass http://127.0.0.1:10080;
index /;
proxy_set_header Host $host;
}