[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.xfslove/shiro-uaa/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.xfslove/shiro-uaa)
[![Gitee](https://gitee.com/xfslove/shiro-uaa/badge/star.svg)](https://gitee.com/xfslove/shiro-uaa)
[![Github](http://github-svg-buttons.herokuapp.com/star.svg?user=xfslove&repo=shiro-uaa&style=flat)](https://github.com/xfslove/shiro-uaa)
# shiro-uaa
A lightweight User Account and Authentication (UAA) Server base on Shiro.
### 来源
当刚开始一个项目时,相信Shiro的简便会成为大多数开发者权限框架的首选,但当项目扩展后,从1到n,并且需要统一认证和授权时,Shiro本身并不支持统一认证和授权成为了限制,Shiro有CasFilter,但是CAS又是另外一套框架,较为重,为了能使认证授权服务更简单,轻量,易用,所以有了Shiro-UAA
### 为什么用 shiro-uaa
- 轻量 UAA Server
- 纯粹的 Shiro
- 学习简单
- 容易扩展
- 开箱即用
#### 认证授权流程
![map.png](map.png)
#### 说明
- auth-server
##### maven
```
<dependency>
<groupId>com.github.xfslove</groupId>
<artifactId>shiro-uaa-auth-server</artifactId>
<version>1.0.7-SNAPSHOT</version>
</dependency>
```
##### 内置endpoint
| URI地址 | 说明 |
| --------------------------- | ----------------------------------- |
| /uaa-auth/authentication | 请求授权的地址,会定向到你的登录页 |
| /uaa-auth/authentication/apporve | Auth Server同意授权,分发code地址 |
| /uaa-auth/access-token | 从Auth Server获取access-token的地址 |
| /uaa-auth/logout | 从Auth Server登出的地址 |
##### 可扩展api
| 接口名 | 说明 |
| ------------------- | ---------------- |
| AccessClientService | 接入应用服务 |
| AccessTokenService | access-token服务 |
| AccountService | 用户服务 |
| AuthCodeService | code服务 |
| RoleService | 角色服务 |
##### login
自定义Login页面和登录验证,implement `org.apache.shiro.authc.credential.CredentialsMatcher` ,实现登录时的校验逻辑,配置`shiro.loginUrl`
##### forwardError
默认情况下,当Server出现OAuthProblem的时候,会带着错误信息跳转到Resource的地址(redirect_uri参数),如果配置了forwardErrorUrl则不会重定向而显示错误页面,页面需要自定义,配置`shiro.uaa.server.forwardErrorUrl`, 此配置的目的是防止使用Server做非正常跳转
##### 扩展的配置参数
| 参数名 | 说明 |
| --------------------------------------- | ------------------------------------------------------------ |
| shiro.uaa.server.codeExpires | UAA分发Code过期时间,单位为秒 |
| shiro.uaa.server.accessTokenExpires | UAA分发AccessToken过期时间,单位为秒 |
| shiro.uaa.server.refreshTokenExpires | UAA分发RefreshToken过期时间,单位为秒 |
| shiro.loginUrl | 自定义的登录地址 |
| shiro.uaa.server.clients[].name | 接入应用名称,使用默认内存AccessClientService时有效 |
| shiro.uaa.server.clients[].clientId | 接入应用clientId,使用默认内存AccessClientService时有效 |
| shiro.uaa.server.clients[].clientSecret | 接入应用clientSecret,使用默认内存AccessClientService时有效 |
| shiro.uaa.server.roles[].name | 角色名称,对应Shiro的Role,使用默认内存RoleService时有效 |
| shiro.uaa.server.roles[].permCodes[] | 角色权限,对应Shiro的Permission,使用默认内存RoleService时有效 |
| shiro.uaa.server.roles[].clientId | 角色所属应用,使用默认内存RoleService时有效 |
| shiro.uaa.server.accounts[].username | 账号登录名,使用默认内存AccountService时有效 |
| shiro.uaa.server.accounts[].password | 账号密码,使用默认内存AccountService时有效 |
| shiro.uaa.server.accounts[].roles[] | 账号拥有角色,使用默认内存AccountService时有效 |
| shiro.uaa.server.forwardErrorUrl | 自定义OAuthProblem Error地址 |
- resource-server
##### maven
```
<dependency>
<groupId>com.github.xfslove</groupId>
<artifactId>shiro-uaa-resource-server</artifactId>
<version>1.0.7-SNAPSHOT</version>
</dependency>
```
##### filterChainDefinition
implement `CustomFilterChainDefinition` ,定义不同的path经过不同的Filter,默认`/**`经过resourceServerFilter
##### logout
先从Resource Server登出,再从UAA登出,配置`shiro.logoutUrl`参数加载`LogoutEndpoint`
##### 注解
和Shiro一样
| 注解名 |
| ----------------------- |
| @RequiresRoles |
| @RequiresPermissions |
| @RequiresUser |
| @RequiresAuthentication |
| @RequiresGuest |
##### 扩展的配置参数
| 参数名 | 说明 |
| ------------------------------------ | ----------------------- |
| shiro.uaa.resource.serverScheme | UAA地址的Scheme |
| shiro.uaa.resource.serverHost | UAA地址的Host |
| shiro.uaa.resource.serverPort | UAA地址的Port |
| shiro.uaa.resource.serverContextPath | UAA地址的ContextPath |
| shiro.uaa.resource.clientId | UAA分配的ClientId |
| shiro.uaa.resource.clientSecret | UAA分配的ClientSecret |
| shiro.logoutUrl | Resource Server登出地址 |
- biz-logger
记录用户的业务记录
##### maven
```
<dependency>
<groupId>com.github.xfslove</groupId>
<artifactId>shiro-uaa-biz-logger</artifactId>
<version>1.0.7-SNAPSHOT</version>
</dependency>
```
##### 注解
| 注解名 |
| ---------------------- |
| @BizLogger |
| 注解方法 | 说明 |
| ------------------------------------ | ----------------------- |
| remark | 备注,默认:"" |
| class_ | 是否记录类名,默认:true |
| method | 是否记录方法名,默认:true |
| arguments | 需要记录参数的索引,默认:{} |
| return_ | 是否记录返回值,默认:false |
| subject | 是否记录用户名,默认:true |
##### BizLoggerEntityStringifier
implement `BizLoggerEntityStringifier` ,自定义logger输出内容
#### Requires
*jdk1.8+ and spring boot*
#### TODO
- 提供auth-server可部署服务
- 为auth-server提供用户metrics
#### 例子
[**shiro-uaa-samples**](https://github.com/xfslove/shiro-uaa-samples)
#### Lincense
[*Apache 2.0 license*](license).
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
shiro-uaa轻量级用户账号和身份认证服务 v1.0.7.zip (78个子文件)
shiro-uaa-1.0.7-SNAPSHOT
pom.xml 6KB
biz-logger
pom.xml 1KB
src
main
resources
META-INF
spring.factories 122B
java
com
github
xfslove
shiro
uaa
logger
BizLoggerEntity.java 642B
BizLoggerEntityProcessor.java 211B
DefaultSlf4jProcessor.java 688B
aop
BizLoggerAdvisor.java 841B
BizLogger.java 873B
BizLoggerAnnotationHandler.java 278B
BizLoggerInterceptor.java 4KB
BizLoggerAutoConfiguration.java 804B
license 11KB
auth-server
pom.xml 1KB
src
main
resources
META-INF
spring.factories 336B
java
com
github
xfslove
shiro
uaa
AuthServerEndpointAutoConfiguration.java 3KB
AuthServerFilterAutoConfiguration.java 1KB
service
AccessClientService.java 269B
AccessTokenService.java 514B
MemoryAccessClientService.java 1KB
MemoryAccountService.java 2KB
AuthCodeService.java 281B
RoleService.java 230B
MemoryAuthCodeService.java 621B
MemoryRoleService.java 1KB
AccountService.java 390B
MemoryAccessTokenService.java 2KB
filter
AuthServerFilterWrapper.java 748B
AuthServerFilterChainDefinition.java 1KB
AuthServerFilter.java 2KB
package-info.java 24B
AuthServerShiroAutoConfiguration.java 1KB
endpoint
UaaAccessTokenEndpoint.java 8KB
UaaAuthenticationEndpoint.java 7KB
UaaLogoutEndpoint.java 4KB
AuthServerProperties.java 3KB
AuthServerDefaultApiAutoConfiguration.java 3KB
realm
LoginRealm.java 2KB
common
pom.xml 2KB
src
main
resources
META-INF
spring.factories 311B
additional-spring-configuration-metadata.json 226B
java
com
github
xfslove
shiro
uaa
ShiroAutoConfiguration.java 2KB
utils
OAuthParamsClientRequest.java 433B
jwt
JwtUtils.java 3KB
factory
StatelessSubjectFactory.java 500B
ShiroFilterAutoConfiguration.java 2KB
ShiroStatelessAutoConfiguration.java 2KB
filter
ModularCustomFilter.java 718B
ModularCustomFilterChainDefinition.java 942B
CustomFilterWrapper.java 205B
CustomFilterChainDefinition.java 283B
model
AccessToken.java 2KB
AccessClient.java 957B
Jwt.java 756B
Role.java 1KB
Constants.java 889B
AuthCode.java 1KB
Account.java 1018B
exception
OAuth2AuthenticationException.java 557B
OAuth2AuthorizationException.java 550B
realm
NoopRealm.java 624B
ShiroAnnotationAutoConfiguration.java 2KB
.gitignore 60B
README.md 7KB
resource-server
pom.xml 1KB
src
main
resources
META-INF
spring.factories 278B
additional-spring-configuration-metadata.json 207B
java
com
github
xfslove
shiro
uaa
ResourceServerFilterAutoConfiguration.java 2KB
ResourceServerProperties.java 1KB
ResourceServerShiroAutoConfiguration.java 776B
filter
ResourceServerFilterChainDefinition.java 1KB
ResourceServerFilterWrapper.java 1KB
ResourceServerFilter.java 10KB
endpoint
LogoutEndpoint.java 3KB
ResourceServerEndpointAutoConfiguration.java 1KB
realm
ResourceServerRealm.java 2KB
ResourceServerToken.java 568B
map.png 806KB
说明.htm 4KB
共 78 条
- 1
资源评论
芝麻粒儿
- 粉丝: 6w+
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功