百数百数帮助
  • 首页
  • 帮助文档
  • 后端python
  • 开放平台
  • 私有云
  • 场景案例
  • 更新日志
返回控制台
返回控制台
  • 首页
  • 功能插件
  • 密钥管理
  • 单点登录
    • 开发指南
    • SAML2.0配置
    • 自定义接口配置
  • Webhook
    • webhook开发指南
    • 表单webhook
    • 通讯录webhook
    • 系统webhook
    • 加密方式及解密算法
  • API
    • 开发指南
    • 数据筛选器
    • 错误对照表
    • 字段与数据类型对照表
    • POST接口
    • 应用体系-表单管理
      • 查询表单字段结构
      • 获取表单基本信息
      • 查询表单计划任务列表
      • 执行计划任务
      • 开启停用计划任务
      • 查询成员控件配置信息
      • 查询部门控件配置信息
      • 修改成员控件
      • 修改部门控件
      • 查询流程节点配置信息
      • 修改流程节点配置
    • 应用体系-表单数据
      • 新增数据
      • 查询单条数据
      • 查询多条数据
      • 编辑数据
      • 删除数据
      • 批量新增数据
      • 查询数据总数
      • 批量修改数据
      • 批量删除数据
      • 新增唯一数据
      • 新增多条唯一数据
      • 文件上传
    • 应用体系-表单流程
      • 发起流程
      • 结束流程
      • 流程修改
      • 流程催办
      • 批量结束流程
      • 获取流程操作日志
      • 查询流程信息
      • 查询流程待办信息
      • 查询流程待办数量
    • 应用体系-数据视图
      • 查询数据视图输出表字段
      • 查询数据视图数据
      • 查询数据视图数据总数
      • 数据视图修改
    • 应用体系-聚合表
      • 查询聚合表输出字段
      • 查询聚合表数据
      • 查询聚合表数据总数
      • 聚合表修改
    • 通讯录体系-成员
      • 获取成员详细信息
      • 修改成员信息
      • 员工离职
      • 员工离职恢复
      • 删除成员
      • 指定部门下添加一位成员
      • 查询成员列表
      • 成员转外部联系人
      • 修改成员职位
    • 通讯录体系-部门
      • 创建部门
      • 修改部门名称
      • 修改父级部门
      • 查询指定部门下的所有子部门信息
      • 查询部门信息
      • 删除部门
      • 获取部门成员
    • 通讯录体系-职位
      • 获取职位列表
      • 添加职位
      • 修改职位
      • 删除职位
    • 通讯录体系-角色
      • 新建角色或角色组
      • 修改角色或角色组
      • 获取角色组信息
      • 获取角色组列表
      • 删除角色组
      • 获取角色组成员列表
      • 批量创建角色
      • 批量创建角色组
      • 批量删除角色组
      • 角色组添加成员
      • 删除角色组成员
    • 通讯录体系-外部联系人分组
      • 获取外部联系人分组列表
      • 获取外部联系人分组成员列表
      • 获取外部联系人分组信息
      • 新建外部联系人分组
      • 修改外部联系人分组名称
      • 删除外部联系人分组
      • 批量删除外部联系人分组
      • 批量新增外部联系人分组
    • 通讯录体系-外部联系人管理
      • 获取外部联系人成员信息
      • 修改外部联系人成员信息
      • 外部联系人删除
      • 外部联系人成员删除恢复
      • 外部联系人转成员
    • 通讯录体系-管理组
      • 新建管理组
      • 查询管理组列表
      • 查询管理组详情
      • 删除管理组
      • 修改普通管理组详情
      • 修改系统管理组管理员
    • 通讯录体系-互联组织
      • 列出我连接的企业
      • 列出我连接的企业的对接人
      • 获取我连接的企业对接人的详细信息
      • 查询互联企业角色列表
      • 查询互联企业对接部门列表
      • 查询互联企业对接部门的成员
    • 平台体系-账号
      • 注册账号
      • 加入某个团队
      • 加入某个团队的外部联系人
      • 账号绑定微信
      • 账号解绑微信
      • 查询账号基本信息
      • 修改账号信息
      • 登录账号
      • 查询账号列表
      • 修改团队信息
    • 平台体系-消息
      • 发送邮件消息
      • 发送钉钉消息
      • 发送飞书消息
      • 发送微信消息
      • 发送企业微信消息
    • 平台体系-应用管理
      • 创建应用分组
      • 查询应用分组列表
      • 应用分组重命名
      • 应用分组删除
      • 查询应用列表
      • 获取应用的表单列表
      • 查询应用下的待办数量
      • 查询应用下的抄送数量
      • 获取数据视图列表
      • 查询聚合表列表
      • 打印模板打印数据
      • 打印模板批量打印数据
      • 查询打印模板列表
      • 自定义数据打印
      • 自定义数据批量打印
      • 查询报表控件
      • 查询表单权限组列表
      • 创建表单自定义权限组
      • 修改表单权限组信息
      • 批量修改表单权限组
      • 删除表单自定义权限组
    • 平台体系-密钥管理
      • 创建秘钥
      • 查询密钥
      • 删除秘钥
    • 平台体系-性能配置
      • 查询用户基础配置信息
      • 查询用户汇总配置信息
      • 修改用户基础配置信息
      • 为用户赠送指定配置
      • 查询配置赠送列表
      • 查询配置消耗
      • 查询已购买套餐列表
    • 平台体系-设置
      • 查询模板应用总数
      • 查询模板应用列表
      • 安装模板应用
      • 查询站点公告
      • 修改站点公告
      • 查询微信access_token
      • 查询企业微信代开发应用的access_token
    • 平台体系-日志查询
      • 查询登录日志
      • 查询日志类型
      • 查询平台操作日志
      • 查询应用日志
    • 平台体系-webhook管理
      • 查询webhook列表
      • 新建webhook
      • 修改webhook
      • 删除webhook

自定义接口配置

  • 自定义接口配置
  • 功能简介
  • IdP 配置说明
  • 示例
  • 单点登出(可选)

功能简介

SAML 2 是一个标准的 SSO 协议, 并受Windows AD支持, 因此在 SSO 领域有着广泛的应用,但其要求开发者具有一定的背景知识(建议阅读官方文档),对接成本较高, 因此我们补充实现了自定义接口。

自定义接口是简化的SAML协议,企业客户可在现有SSO接口基础上进行修改,按照本系统的要求调用服务和返回参数,并将认证后的用户信息返回给本系统,完成账号关联。

IdP 配置说明

自定义接口的整体配置与 SAML 2 类似, 只是支持的加密算法与密钥的形式存在差异, 在 SAML 中我们支持 SHA 系列算法, 而自定义接口中我们支持 HMAC-SHA系列算法。在 SAML 中我们要求用户填写包含公钥的基于 X.509 格式的证书, 而在自定义接口中需要填写的是一个普通的密钥字符串, 长度最大为 128。
基于配置的 IdP 信息, 客户需要开发自己的 IdP来与本系统对接以实现单点登录. 用户 IdP 的作用可从下图中体现: 即 IdP 服务:

接受来自本系统的认证请求;
基于其在本系统的配置与本系统的开发文档中提到的规范, 验证请求的合法性;
从 Session 中获取当前成员的相关信息, 封装及签发 Token;
将 Token 作为参数, 将用户重定向回本系统。

参数
IdP 服务与本系统间的 Token 传递基于 JWT 标准, 关于 JWT 标准可以阅读这篇文档(英文)或阮一峰老师的这篇文章(中文), 参数符合以下格式:
来自本系统的认证请求:

参数名 说明
request 认证请求 Token, 详见下文
state 状态值, 此值需要原封不动的返回本系统, 本系统通过此值来避免恶意的断言请求

返回本系统的认证断言:

参数名 说明
response 认证断言 Token, 详见下文
state 状态值, 来自认证请求

签名内容
认证请求
对于来自本系统的认证请求, IdP 需要自行验证(取决于您的安全级别, 开发环境可以跳过验证):

参数名 说明
iss 常量值 “com.XXX”, 意指此请求由本系统发起
aud 可选, 管理员在本系统配置的 Issuer
iat 签名签发时间(通常 JWT 第三方库会包含此验证, 无需手动实现验证逻辑)
exp 签名失效时间(通常 JWT 第三方库会包含此验证, 无需手动实现验证逻辑)
type 常量值 “sso_req”, 意指此为一个单点登录认证请求

您实际收到的请求原文及其对应解码后的格式如下示例:

认证断言
本系统要求 IdP 在确认用户身份并将其重定向回本系统时, 携带的 response 参数解码后对应的内容如下:

参数名 说明
aud 常量值 “com.baibaoyun”, 意指此断言的接收方为本系统
exp 签名失效时间
iat 签名签发时间
iss 可选, 管理员在本系统配置的 Issuer
nbf 可选, 签名生效时间
type 常量值 “sso_res”, 意指此为一个单点登录认证断言
username 成员的唯一标识, 此值应当与一个已经在本系统通讯录中激活的成员唯一标识相同

您实际发送的断言原文及其对应解码后的格式如下示例:

示例

绝大多数编程语言都有较为良好的 JWT算法实现, 第三方库列表可在这个页面中查找。

单点登出(可选)

如果用户配置了 SLO Endpoint, 当访问本系统的单点登出地址时,本系统不仅会登出当前成员, 同时还会将成员重定向至 IdP 并携带登出请求参数, IdP 可以销毁与此成员的会话以实现单点登出的效果. 单点登出请求参数格式与认证请求参数一致, 但不包含 state 字段, 在 Token 中的 type 为常量 “slo_req”.

参数名 说明
iss 常量值 “com.XXX”, 意指此请求由本系统发起
aud 可选, 管理员在本系统配置的 Issuer
iat 签名签发时间(通常 JWT 第三方库会包含此验证, 无需手动实现验证逻辑)
exp 签名失效时间(通常 JWT 第三方库会包含此验证, 无需手动实现验证逻辑)
type 常量值 “slo_req”, 意指此为一个单点登出认证请求
最新修改于:2024-12-18