更新文档
This commit is contained in:
105
sdk/backend/oauth2-login-sdk/README.md
Normal file
105
sdk/backend/oauth2-login-sdk/README.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# 一、使用说明
|
||||
1.引入依赖
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>org.lingniu</groupId>
|
||||
<artifactId>oauth2-login-sdk</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
2.添加配置
|
||||
```yaml
|
||||
spring:
|
||||
security:
|
||||
oauth2:
|
||||
resourceserver:
|
||||
jwt:
|
||||
# 资源服务器 认证公钥地址
|
||||
jwk-set-uri: http://localhost:8000/oauth2/jwks
|
||||
client:
|
||||
registration:
|
||||
portal:
|
||||
# 统一登录颁发的client_id
|
||||
client-id: xxx
|
||||
# 统一登录颁发的秘钥
|
||||
client-secret: xxx
|
||||
# 当前对接客户端名称 随便填
|
||||
client-name: xxx
|
||||
# 认证类型 使用授权码类型
|
||||
authorization-grant-type: authorization_code
|
||||
# 认证地址
|
||||
redirect-uri: http://106.14.217.120/portal-ui/callback
|
||||
# 权限范围
|
||||
scope:
|
||||
- openid
|
||||
- profile
|
||||
# 返回权限
|
||||
- perms
|
||||
provider: idp
|
||||
|
||||
provider:
|
||||
idp:
|
||||
# sso登录地址
|
||||
authorization-uri: http://106.14.217.120/idp-ui/sso
|
||||
# token 获取接口
|
||||
token-uri: http://localhost:8082/oauth2/token
|
||||
# 用户信息接口
|
||||
user-info-uri: http://localhost:8082/userinfo
|
||||
# 认证公钥地址
|
||||
jwk-set-uri: http://localhost:8082/oauth2/jwks
|
||||
# 用户信息属性
|
||||
user-name-attribute: sub
|
||||
```
|
||||
3. 启动项目
|
||||
# 二 、 权限配置
|
||||
如果不做额外配置,接入成功后默认所有接口都是登录成功后即可访问,如果需要对接口进行更精确精细化的权限控制,提供了如下注解
|
||||
|
||||
- @PreAuthorize:方法执行前进行权限检查
|
||||
- @PostAuthorize:方法执行后进行权限检查
|
||||
- @Secured:类似于 @PreAuthorize
|
||||
- security提供了许多默认表达式
|
||||
|
||||

|
||||
|
||||
结合SpEl表达是进行复杂配置
|
||||
```java
|
||||
@Service
|
||||
public class HelloService {
|
||||
@PreAuthorize("principal.username.equals('admin')")
|
||||
public String hello() {
|
||||
return "hello";
|
||||
}
|
||||
|
||||
@PreAuthorize("principal.username.equals(#abc)")
|
||||
public String admin(String abc) {
|
||||
return "admin";
|
||||
}
|
||||
|
||||
@Secured({"ROLE_user"})
|
||||
public String user() {
|
||||
return "user";
|
||||
}
|
||||
|
||||
@PreAuthorize("#age>98")
|
||||
public String getAge(Integer age) {
|
||||
return String.valueOf(age);
|
||||
}
|
||||
@PostAuthorize("returnObject == null || returnObject.id%2==0")
|
||||
public User findUserById(Long id) {
|
||||
// 根据id查找用户,无论用户是否存在,id是偶数的用户才能获取到结果
|
||||
// 实现根据id查找用户的逻辑...
|
||||
return userRepository.findById(id).orElse(null);
|
||||
}
|
||||
@GetMapping("/testPermission1")
|
||||
@PreAuthorize("@ss.hasPermission('def')")
|
||||
public String testPermission1() {
|
||||
return "testPermission1 有权访问";
|
||||
}
|
||||
@GetMapping("/testPermission2")
|
||||
@PreAuthorize("@ss.hasPermission(#code)")
|
||||
public String testPermission2(String code) {
|
||||
return "testPermission2 有权访问";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user