|
|
4 سال پیش | |
|---|---|---|
| src | 4 سال پیش | |
| Readme.md | 4 سال پیش | |
| build.gradle | 4 سال پیش | |
| settings.gradle | 4 سال پیش |
适用于spring boot项目,实现接口拦截与身份信息获取
Gradle依赖
compile "com.uas.account:sso-integration:1.2.4-SNAPSHOT" // 如果添加了@EnableSignature,且需要基于数据库获取企业信息 compile "org.springframework.boot:spring-boot-starter-jdbc" // 按实际数据库类型(Oracle、MySQL、PostgreSQL)引入 compile "com.oracle:ojdbc6:11.2.0"添加配置注入
// 基于cookie身份标识uid识别用户认证信息 @EnableSSOToken // 基于企业唯一标识uu及签名串识别企业身份信息 @EnableSignature public class MyApplication {}添加sso配置
# 以下是完整配置,请依实际情况选择配置
sso:
app: b2b # 可不填
breakOnError: true # 默认值true
urlIncludes: # 拦截的url,可不填,默认全部拦截
- /api/**
- /openapi/**
urlExcludes: # 忽略的url,可不填
- /
- /public/**
token:
cookieName: uid # 默认值uid
secretKey: 0taQcW073Z7G628g5H # 统一私钥
setCookieUri: /set_cookie # 默认值/set_cookie,回调写cookie的URI,会有拦截器自行处理,无需自定义请求
clearCookieUri: /clear_cookie # 默认值/clear_cookie,回调删除cookie的URI,会有拦截器自行处理,无需自定义请求
logoutUri: /sso_logout # 默认值/sso_logout,本地退出的默认实现
sign:
idParam: access_id # 默认值access_id
signParam: _signature # 默认值_signature
# 如果是基于Oracle数据库获取信息,添加下面的配置
# 注意,下面只是示例,请按实际数据库配置
datasource:
url: jdbc:oracle:thin:@10.10.100.200:1521:orcl
driverClassName: oracle.jdbc.driver.OracleDriver
username: myuser
password: mypass
# 如果是基于账户中心接口获取信息,添加下面的配置
# 注意,下面只是示例,请按实际接口配置
api:
# 获取企业信息
getUserspace: https://sso.ubtob.com/api/userspace/info/spaceUU?spaceUU={uu}
# 获取用户信息
getUser: https://sso.ubtob.com/api/user/info?userUU={uu}
# 获取用户绑定企业
getUserspaces: https://sso.ubtob.com/api/user/getSpace?mobile={mobile}
# 如果配置了该选项,在未登录情况下跳转
login: https://sso.ubtob.com/?returnURL={returnURL}&appId={appId}&baseUrl={baseUrl}set_cookie
# 如果配置了该选项,在执行完本地登出后,跳转该地址执行同步登出
logout: https://sso.ubtob.com/logquit?returnURL={returnURL}&appId={appId}&baseUrl={baseUrl}clear_cookie
使用
@RequestMapping({"/", "/sso"})
public ResponseEntity test() {
// 使用 SSO.get() 或 UserAccount.get()
return ResponseEntity.ok(SSO.get());
}
拓展自己的验证方式
@EnableSSOToken
@EnableSignature
public class MySSOConfig {
@Bean
public MySSORepository mySSORepository() {
// 实现了SSORepository的bean会自动添加到SSO拦截链
// 只要一个验证通过获取到UserView即可
return new MySSORepository();
}
public static class MySSORepository implements SSORepository {
@Override
public UserAccount getUser(HttpServletRequest request) throws ServletException, IOException {
// TODO
return null;
}
}
}
获取登录信息
@EnableSSOToken
@RestController
public class MyApplication {
// 注意要配置sso.api.getUserspaces等
@Autowired
private UserService userService;
@RequestMapping("/userinfo")
public ResponseEntity test() {
UserAccount user = UserAccount.get();
// 当前登录用户
ModelMap map = new ModelMap("user", user);
// 用户全部企业
map.addAttribute("list", userService.getSpaces(user));
return ResponseEntity.ok(map);
}
}