一、服务端开发文档介绍

欢迎您,TiUP开发者,我们很期待你成为TiUP开放平台的开发者。

服务端开发是TiUP为连接校园数据中心的入口,用于信任客户与学校之间的数据共享和同步。

此文档很适合于:

  1. 企业的IT部,了解TiUP如何连接你所在企业的办公;
  2. 服务提供商(ISV),了解TiUP如果链接校园与众多服务平台。

1.1 功能简介

通过协议接口,学校用户可以实现与学校数据共享和同步。

1.2 安全机制

  1. 所有接口的调用应在服务器端进行。
  2. 管理员有权随时开启和关闭制定接口的调用权限 。
  3. 所有接口调用均有批次限制。

二、接入流程

接入TiUP开放接口的全流程图如下:

SSO Flow

2.1 申请管理端

管理端申请功能只限学校内部使用,开发者可联系客服人员获取管理端,如果是开发者是学校内部人员,也可以在 http://<tiup_host>.cug.edu.cn/open/Apps/register 页面自行申请,申请时,需提供:

  1. 接口用途 确定该管理端系统所需的用户数据和用途,例如:获取uid, 姓名,性别,邮箱,学工号,部门等。

  2. 调用服务器IP列表

    确定该管理端在那些机器上被使用,在开发阶段,允许IP列表为空。

申请成功后,用户将获得:

  1. Client Id 管理端唯一识别码。
  2. Client Secret 管理端密码,为了您的用户安全,你可以随时重置此密码。

备注:根据系统版本的不同,在某些版本中,Client Id 叫做 ApiKey, Client Secret 叫做SecretKey,此文档将以Client Id和Client Secret为准。

2.2 验证授权

所有接口在服务器之间调用,接口验证我们采取在接口请求头部加验证的方式进行。

  • 请求header:

    类型
    Authorization text Tauth+ 空格 + client_id + : + 时间戳 + : + (client_sercret + 时间戳)合并字符串的MD5编码。时间戳和服务器时间差最多允许为1个小时,时间戳为1970到现在的毫秒数,一般为13位的long值。

代码示例

var timeStamp = System.currentTimeMillis();
request.setHeader("Authorization", "Tauth " + clientId + ":"  +  timeStamp +":" +   Md5.encode(clientSercret + timeStamp));

例如,client_id 为test_client_id, client_secret为0000, 在1449564597000时间戳下的, 则需要在头部添加 Authorization: Tauth test_client_id:1449564597000:a77395f39788a9281fc2c0eeefd64ba9

2.3 调用API

API列表请参见具体API列表页面,下面是一个基本接口示例。

例如:服务器接口地址为: https://apis.cug.edu.cn/cug/v1/deps ,在服务器端调用应该为:

  • 示例
curl -i -X GET \
   -H "Authorization:Tauth test_client_id:1449564597000:a77395f39788a9281fc2c0eeefd64ba9" \
 ' https://apis.cug.edu.cn/cug/v1/deps'