单点登录

支持通过SPI扩展机制,扩展集成应用免登中的单点登录模式。

1、概述

单点登录场景:

  1. 点击V8菜单跳转三方系统。
  2. 点击三方栏目更多跳转三方系统。
  3. 点击通过集成应用同步过来的三方系统待办、消息,跳转至三方系统。

2、接入导图

1721721091281

3、接入步骤

3.1、demo工程下载

cip-connector-sso-template.zip

    <parent>
        <groupId>com.seeyon</groupId>
        <artifactId>boot</artifactId>
        <version>3.10.1</version>
    </parent>
    <properties>
        <platform.version>3.10.1</platform.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.seeyon</groupId>
            <artifactId>cip-connector-api</artifactId>
            <version>${platform.version}</version>
        </dependency>
    </dependencies>

3.2. spi jar 打包并部署

参考 SPI扩展

注意:请在cip-connector微服务nacos配置文件中配置参数

上传完后需要重启cip-connector完成动态加载

3.3、工程开发

注意:每个项目下载工程并开发时,请优先修改工程名称,工程名遵守 cip-connector-auth-项目标识

开发过程请参考【场景/方法说明】

4、工程核心接口说明

4.1、定义单点登录英文表示

注意:该名称不能与其他名称重复,否则不会载入

/**
     * 获取名称
     * 需要保证名称唯一,名称+SecurityService 为当前类名称
     * @return
     */
    String getName();

4.2、定义单点登录中文描述

 /**
     * 获取描述
     * @return
     */
    String getTypeCaption();

4.3、定义前端可视化配置参数

 /**
 * 获取页面json语句
 * @return
 */
 String getPageJson();

4.3.1、字段说明:

{
    "caption": "标准认证-CAS", //单点登录类型(下拉框名称)(select的中文值)
    "type": "cas", //单点登录类型(下拉框值)(select对应的英文key)
    "extensionProperties": //扩展参数
    [
        {
            "colProps": //栅格化布局
            {
                "span": 12 //栅格化布局值
            },
            "componentType": "Input", //antd组件<br />标签名称 
            "componentProps": //扩展属性
            {
                "placeholder": "请输入" //select的placeholder提示
            },
            "validateFirst": true,
            "rules": // 校验规则,<br/>参考antd表单的rules
            [
                {
                    "required": true,
                    "message": "请输入跳转地址"
                },
                {
                    "pattern": "^[^\\s]*$",
                    "message": "禁止输入空格"
                },
                {
                    "type": "string",
                    "max": 255,
                    "message": "最多255个字符"
                }
            ],
            "caption": "跳转地址", // 自定义名称 
            "defaultValue": "", //默认值,非必填
            "name": "defaultJumpUrl"
        }
    ]
}

4.3.3、效果实例:

1724307195093

4.4、根据原始请求地址拼接单点登录地址

/**
     * 登录
     * @param url 外部想跳转到的地址
     * @param json 页面传递的数据
     * @param userMap 用户信息map
     * @param clientType 跳转类型(pc,移动)
     */
    String login(String url, String json, Map<String,Object> userMap, SsoClientTypeEnum clientType
, Map<String, Object> extendParams
);

入参说明:

  • url: 外部传过来的想要跳转的特定地址

  • json: 前端页面配置的参数

  • userMap: 用户映射信息和用户映射自定义配置的参数

    • innerUserId: 内部用户ID
    • innerUserName: 内部用户名称
    • innerUserCODE: 内部用户编号
    • outerUser: 外部用户账户
    • outerUserId: 外部用户ID
    • innerUserLoginName: 内部用户登录名
    • innerUserEmail: 内部用户邮箱
    • innerUserPhone: 内部用户手机号
    • innerUserOfficeNumber: 内部用户办公电话
    • innerUserBankAccount: 内部用户银行账户
    • innerUserOrgId: 内部用户组织编号
  • clientType: 类型(pc,phone)

  • extendParams: 外部传递过来的扩展参数

    注意:按照3.3配置完成后,json获取的数据结构示例为:

  • {
      "type": "xdHr",
      "loginType": "PERSON_ID",
      "account": "admin",
      "password": "123456",
      "ssoUrl": "http://www.login.com",
      "defaultJumpUrl": "http://www.jump.com"
    }
    

5、注意事项


最后修改 November 28, 2024: 修改文档 (6295035)