单点
单点集成是为了实现统一的身份认证。此处的单点是客户有自己的统一登录地址,用户通过公司或集团内部的统一登录入口来登录, 一旦成功登录,他们将被重定向到incloud平台。这个功能的目的确保用户能够安全、便携地访问incloud平台, 同时根据不同认证器的需要进行配置,以适应各种不同的认证要求。
配置统一认证
统一谁可以使用系统提供的统一认证功能,请参考【系统集成】

配置
认证器名称:每个认证器的独特标识符、用于区分不同的认证器;
重定向地址:incloud平台提供的地址、用于在用户登录成功后将他们引导到正确的位置;
认证服务器地址:用户点击或访问首页跳转的到统一登录入口的地址;
规则:可定义IP限制规则,用于保护用户安全信息,只限定规则内的IP才可以使用单点集成;
示例
系统提供了默认的单点登录实现,如果需要自定义单点登录实现,需要继承默认的单点登录实现,然后在启动类中注入自定义的单点登录实现即可。
@Primary
@Service("bizSSOServiceImpl")
@Slf4j
@RequiredArgsConstructor
public class SSOServiceImpl extends com.netwisd.base.security.service.impl.SSOServiceImpl {
//方式一,如果可以统一登录系统重定向平台地址携带用户信息;需要获取到平台用户信息的username
@Override
public String getUserInfo(HttpServletRequest request) {
//示例
String usernameHeader = request.getHeader("ssoUserName");
String usernameParam = request.getParameter("ssoUserName");
if (StrUtil.isNotEmpty(usernameHeader)) {
return usernameHeader;
} else if (StrUtil.isNotEmpty(usernameParam)) {
return usernameParam;
}
return null;
}
//方式二,如果统一登录地址返回的是token信息,此处获取token信息,由方式二的第二步去获取用户信息
@Override
public String getToken(HttpServletRequest request) {
//示例
String headerToken = request.getHeader("token");
String paramToken = request.getParameter("token");
String bearerToken = request.getHeader("Authorization");
String jwtToken = request.getParameter("jwt");
if (StrUtil.isNotEmpty(headerToken)) {
return headerToken;
} else if (StrUtil.isNotEmpty(paramToken)) {
return paramToken;
} else if (StrUtil.isNotEmpty(bearerToken)) {
return StrUtil.subAfter(bearerToken, "Bearer ", false);
} else if (StrUtil.isNotEmpty(jwtToken)) {
return jwtToken;
}
throw new IncloudException("单点登录未返回正确的token");
}
//方式二,第二步,根据第二步的token信息转换为平台用户的信息
@Override
public MdmUserVo getUserByToken(String token) {
// 业务逻辑。。。。
return getUserByUsername(data.getHrCode());
}
}
Last modified: 20 一月 2025