标准 SSO 用户同步建议直接调用 SSO 同步接口,不要先在企业/空间用户管理中手动新增或导入用户。
sso_user_info:记录 SSO 用户
user_info:记录企业/空间用户
两张表通过 user_id 关联;只有两张表都存在同一 user_id 的记录,SSO 登录链路才完整可用。
关键约束:直接同步 SSO 用户后,sso_user_info 与 user_info 会生成相同 user_id 的账户,但 user_info 不会自动同步用户名、手机号、邮箱等资料字段。
因此,如需在企业/空间侧补齐用户名、手机号、邮箱等信息,必须以 SSO 用户的 user_id 作为唯一标识,再调更新接口写入 user_info。
标准 SSO 相关接口:
接口 1:SSO 用户同步
地址:POST /system-account-api/s/oauth/sso/synchronize/user
|
参数名 |
位置 |
必填 |
说明 |
|---|---|---|---|
|
|
body |
是 |
企业编码 |
|
|
body |
是 |
SSO 配置编码 |
|
|
body |
否 |
渠道来源,默认 |
|
|
body |
是 |
用户列表( |
接口 2:获取 SSO 用户信息
地址:POST /system-account-api/s/oauth/sso/get-sso-user-info
|
参数名 |
位置 |
必填 |
说明 |
|---|---|---|---|
|
|
body |
是 |
企业编码 |
|
|
body |
是 |
第三方用户唯一标识 |
|
|
body |
否 |
SSO 配置编码;传入后按指定配置过滤 |
定开 SSO 场景下,用户与用户组的同步方式较灵活:既可在企业、空间内手动新增或导入,也可直接调用对外接口批量写入;若数据来自外部系统,还可配置数据流读取来源数据后再调接口写入。
关键约束:同步用户请勿触发邮件激活;单点登录仅支持 启用 状态用户。
常用对外接口如下(统一前缀:/system-account-api)。
调用时 Header 需传:
|
Header |
说明 |
|---|---|
|
|
企业 ID |
|
|
操作人用户 ID |
|
|
登录会话(管理员 Cookie) |
|
|
时间戳(毫秒) |
|
|
平台编码(与 |
|
|
企业对外调用密钥 |
|
|
签名: |
接口 1:导入用户
地址:POST /system-account-api/s/user/import/user
|
参数名 |
位置 |
必填 |
说明 |
|---|---|---|---|
|
|
body |
是 |
导入策略: |
|
|
body |
条件必填 |
空间 ID;与 |
|
|
body |
条件必填 |
平台编码;与 |
|
|
body |
否 |
企业 ID |
|
|
body |
否 |
是否发送邮件,默认 |
|
|
body |
是 |
用户列表( |
|
|
body |
是 |
用户标识类型,表示根据哪个字段匹配并更新用户: |
|
|
body |
条件必填 |
按 |
|
|
body |
是 |
状态: |
|
|
body |
否 |
昵称、初始密码 |
Python 示例:
from deepfos import OPTION
from deepfos.lib.sysutils import resolve_account_api_extra_header
from deepfos.lib.sysutils import calc_account_api_signature
import requests
import time
def main(p1, p2):
url = 'https://alpha-account.deepfos.com/system-account-api/s/user/import/user'
enterprise_id = resolve_account_api_extra_header()['enterprise-id']
space = OPTION.api.header['space']
app = OPTION.api.header['app']
timestamp = str(int(time.time() * 1000))
platform_code = '请从相关渠道获取'
platform_secret = '请从相关渠道获取'
sign = calc_account_api_signature(timestamp, platform_secret, platform_code)
header = OPTION.api.header
header.update({
'enterprise-id': enterprise_id,
'timestamp': timestamp,
'platform-code': platform_code,
'platform-secret': platform_secret,
'sign': sign
})
body = {
"tag": "INCREMENT",
"spaceId": space,
"platformCode": "请从相关渠道获取",
"sendEmail": False,
"data": [
{
"userTag": "2",
"username": "import_user1",
"nickname": "导入用户1",
"status": "1"
}
]
}
response = requests.post(url, headers=header, json=body)
return
接口 2:导入用户组
地址:POST /system-account-api/s/user/import/user-group
|
参数名 |
位置 |
必填 |
说明 |
|---|---|---|---|
|
|
body |
是 |
导入策略: |
|
|
body |
是 |
空间 ID(用户组导入不支持企业级无空间导入) |
|
|
body |
条件必填 |
平台编码 |
|
|
body |
是 |
用户组列表( |
|
|
body |
是 |
用户组名称 |
|
|
body |
否 |
用户组编码 |
|
|
body |
否 |
用户组 ID(外部已有时可传) |
|
|
body |
否 |
用户组描述 |
Python 示例:
from deepfos import OPTION
from deepfos.lib.sysutils import resolve_account_api_extra_header
from deepfos.lib.sysutils import calc_account_api_signature
import requests
import time
import uuid
def main(p1, p2):
url = 'https://alpha-account.deepfos.com/system-account-api/s/user/import/user-group'
enterprise_id = resolve_account_api_extra_header()['enterprise-id']
space = OPTION.api.header['space']
app = OPTION.api.header['app']
timestamp = str(int(time.time() * 1000))
platform_code = '请从相关渠道获取'
platform_secret = '请从相关渠道获取'
sign = calc_account_api_signature(timestamp, platform_secret, platform_code)
header = OPTION.api.header
header.update({
'enterprise-id': enterprise_id,
'timestamp': timestamp,
'platform-code': platform_code,
'platform-secret': platform_secret,
'sign': sign
})
body = {
"tag": "INCREMENT",
"spaceId": space,
"platformCode": "请从相关渠道获取",
"data": [
{
"groupId": str(uuid.uuid4()),
"groupCode": "import_group1",
"groupName": "导入用户组1",
"description": "测试_导入用户组1"
}
]
}
response = requests.post(url, headers=header, json=body)
return
接口 3:更新用户与用户组关系
地址:POST /system-account-api/s/user/import/userGroupUser
用于维护「用户 ↔ 用户组」及「父用户组 ↔ 子用户组」关系。SSO 场景下将用户加入某用户组时,一般使用 importTag=1 的记录。
|
参数名 |
位置 |
必填 |
说明 |
|---|---|---|---|
|
|
body |
是 |
导入策略: |
|
|
body |
是 |
空间 ID(不支持仅企业级导入) |
|
|
body |
条件必填 |
平台编码;与 |
|
|
body |
否 |
企业 ID |
|
|
body |
是 |
关系列表( |
|
|
body |
是 |
关系类型: |
|
|
body |
是 |
父用户组编码(须为同空间已存在的用户组,如接口 2 导入时的 |
|
|
body |
否 |
用户组名称(可选,便于核对) |
|
|
body |
条件必填 |
|
|
|
body |
条件必填 |
|
|
|
body |
条件必填 |
|
|
|
body |
否 |
子用户组名称(可选) |
Python 示例:
from deepfos import OPTION
from deepfos.lib.sysutils import resolve_account_api_extra_header
from deepfos.lib.sysutils import calc_account_api_signature
import requests
import time
def main(p1, p2):
url = 'https://alpha-account.deepfos.com/system-account-api/s/user/import/userGroupUser'
enterprise_id = resolve_account_api_extra_header()['enterprise-id']
space = OPTION.api.header['space']
app = OPTION.api.header['app']
timestamp = str(int(time.time() * 1000))
platform_code = '请从相关渠道获取'
platform_secret = '请从相关渠道获取'
sign = calc_account_api_signature(timestamp, platform_secret, platform_code)
header = OPTION.api.header
header.update({
'enterprise-id': enterprise_id,
'timestamp': timestamp,
'platform-code': platform_code,
'platform-secret': platform_secret,
'sign': sign
})
body = {
"tag": "INCREMENT",
"spaceId": space,
"platformCode": "请从相关渠道获取",
"data": [
{
"importTag": "1",
"groupCode": "import_group1",
"userTag": "2",
"username": "import_user1"
},
{
"importTag": "2",
"groupCode": "import_group1",
"childrenGroupCode": "import_group2",
}
]
}
response = requests.post(url, headers=header, json=body)
return
回到顶部
咨询热线
