# 企业身份认证(数据接口认证方案)


# 1、身份认证流程

身份认证是其他应用的基础,认证方(即:企业)需要提供一个验证接口,具体身份绑定流程如下: 图片描述

身份认证绑定步骤:

  • 用户在点击激活电子卡,跳转到腾讯微卡身份绑定页面,输入企业账号(例如工号)以及相应的密码;
  • 腾讯微卡将帐号数据加密后发送到认证方的认证接口;
  • 认证方解密获取帐号密码,验证用户身份,将结果加密后返回;
  • 腾讯微卡收到对应的验证消息,若成功则激活成功,失败则返回相应提示。

# 2、身份认证接口

# 2.1 请求方式

身份验证接口采用POST的方式向认证方发送数据。

# 2.2 请求参数

原始数据 R

{
    "card_number":"3109005843",
    "password":"helloworld",
}

通过加密R可以得到R'R' = AES_CBC_ENCRYPT(R)

{
    "raw_data":R',
    "app_key":APP_KEY
}

腾讯微卡会把加密后的数据以POST的方式发送到认证方提供的认证接口。

加密算法见附件。

# 2.3 数据返回

返回数据:

{
    "code":0,
    "message":"OK",
    "raw_data":R',
    "app_key":APP_KEY
}

关键点:

  • 认证成功,认证方需保证返回的code 为 0。
  • 认证失败,认证方需保证返回的code 不为 0。
  • message 字段在 code 不为 0 时才会有意义。
  • app_key 跟请求时的 app_key 保持一致。
  • raw_data 对应的 R' 为加密后的数据。 通过解密R' 可得到 RR = AES_CBC_DECRYPT(R·)
  • 不同身份类型用户的具体字段要求见用户字段说明
{
  "card_number":"07302590", //员工编号
  "name":"张三丰", //姓名
  "gender": "男", // 性别:男/女
  "head_image": "http://xxx/xx.png"  // 头像地址
  "identity_type":"员工", // 设置的身份类型,参照下方说明
  "identity_title": "高级工程师", // 职称
  "card_type": "1", // 证件类型
  "id_card":"4XXX***7", // 证件号码
  "country": "CHN", // 国籍
  "telephone":"137***8", // 手机号
  "organization":"AA/BB/CC", // 组织架构,多个分组以;隔开,如"AA/BB/CC;A/B/C";
  "expire_at":"2019-12-31 12:00:00", // 有效期
  "physical_chip_number":"EAEB1234", // 物理芯片号
  "physical_card_number":"00001234", // 物理一卡通号
  "employer":"XX研究所", // 工作单位
  "email": "weixiao@tencent.com" // 邮箱
  "qq": "12345678", //qq号
  "nation": "汉族", //民族
  "address":"仙桃市郑场镇潘阳村八组", //家庭住址
  "en_name":"sfzhang", //英文名
  "office_phone":"88234", //办公座机
}

注意:

  • 1,接口开发完后可以到腾讯微卡进行自助调试,地址:https://weixiao.qq.com/public/apiDebug/index.html ;
  • 2,默认身份类型(其他、用户)如果能够满足需求,则identity_type传对应的名称即可;
  • 3,若需定义更多的身份类型,要先到身份类型管理配置好身份类型,地址:https://wecard.qq.com/home/identity#/identity-type ,然后identity_type传用户对应的身份类型名称过来(中文编码UTF8),如传未设置的名称,则默认将此用户身份类型归属至"其他"。

# 附件

# 1 数据加密

采用AES对称加密算法(AES/CBC/ZeroPadding 128位模式),具体算法见加解密demo

KEY = APP_KEY
IV = APP_SECRET 前16位。

APP_KEY和APP_SECRET的获取见接口对接指引

# 更新日志

日期 变更说明
2019-10-18 数据接口认证方案接口 响应返回新增 start_time 有效起始时间字段,将 expire_time的有效期解释更改为 有效结束时间