incloud开发文档 5.1.0 Help

单点

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

配置统一认证

统一谁可以使用系统提供的统一认证功能,请参考【系统集成

Sso

配置

  • 认证器名称:每个认证器的独特标识符、用于区分不同的认证器;

  • 重定向地址: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