# JeeSite TopIAM
**Repository Path**: git.oschina.gaofei/jeesite-topiam
## Basic Information
- **Project Name**: JeeSite TopIAM
- **Description**: JeeSite 集成 TopIAM 统一认证和单点登录
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 10
- **Created**: 2024-05-10
- **Last Updated**: 2024-05-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JeeSite 整合 TopIAM 实现单点登录
## JeeSite
JeeSite 是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。
+ 官网:https://jeesite.com
+ Gitee:https://gitee.com/thinkgem/jeesite4
## TopIAM
TopIAM 是开源的IDaas/IAM平台,支持OAuth2.x、OIDC、SAML2.0、JWT、CAS等SSO标准协议,实现用户全生命周期的管理、统一认证和单点登录、为数字身份安全赋能。
+ 官网:https://eiam.topiam.cn
+ Gitee:https://gitee.com/topiam/eiam
## 集成步骤
### TopIAM 配置
1. 新增OIDC应用


2. 配置OIDC应用
+ 进入[应用配置]-[基本信息],获取 客户端 ID 和 客户端秘钥。

+ 进入[应用配置]-[登录访问]-[单点登录],配置 登录 Redirect URI 并更改授权范围为全员可访问,方便整合测试。

+ 进入[应用配置]-[登录访问]-[单点登录],在页面对下方展开[应用配置信息]获取授权端点地址。

### JeeSite 配置
1. 克隆本仓库源码,并添加到项目`modules`中,并在`modules`模块`pom.xml`中进行引入

```xml
core
cms
app
topiam
```
2. 实现 `TopIamOauth2Service` 接口,并实现`getSysUserCode`方法,在模块实例中,我们内置了`MockTopIamOauth2ServiceImpl`实现类来模拟登录过程。
3. 在`web`模块配置`TopIamOauth2Service`接口实现类,为方便入门,你可以配置默认`MockTopIamOauth2ServiceImpl`实现查看效果。
```java
import com.jeesite.modules.topiam.service.TopIamOauth2Service;
/**
* topiam 配置
*
* @author SanLi
* Created by support@topiam.cn on 2023/8/30 21:52
*/
@Configuration
public class TopIamConfiguration {
/**
* TopIamOauth2Service
*
* @return {@link TopIamOauth2Service}
*/
@Bean
public TopIamOauth2Service topIamOauth2Service() {
return new MockTopIamOauth2ServiceImpl();
}
}
```
4. 配置参数,在`web`模块`/src/main/resources/config`下找到`application.yml`文件,进行如下配置,并将${}内的内容改为TOPIAM配置步骤内获取的实际内容。
```properties
oauth2:
# TOPIAM
topiam:
clientId: ${client_id}
clientSecret: ${client_secret}
serverUrl: ${base_server_url}/api/v1/authorize/1xr4ngyqvd8qnze0oxbn2uquazbmxmb6
redirectUri: ${base_redirect_uri}/js/oauth2/callback/topiam
className: com.jeesite.modules.topiam.oauth.realm.request.AuthTopIamRequest
```
+ clientId:对应 TOPIAM 配置客户端ID
+ clientSecret:对应 TOPIAM 配置客户端秘钥
+ serverUrl:对应 TOPIAM 授权端点地址
+ redirectUri:对应 TOPIAM 登录 Redirect URI
## 测试
社区版集成,前端入口需要自己配置,为方便测试,大家可直接发起接口访问进行测试,此时用户登录将跳转TOPIAM门户端,登陆成功后回调到JeeSite完成登录。
接口地址:`https://127.0.0.1:8980/js/oauth2/login/topiam`
## 参考文档
+ https://eiam.topiam.cn/docs/application/oidc/overview/
## 问题帮助
如果您在集成中出现任何问题,可通过TOPIAM社区交流群进行沟通
