中国互联网办公室·imo运营中心
目录
1 引言 3
1.1 编写目的 3
1.2 读者对象 3
1.3 文档内容 3
1.4 系统说明 3
2 业务流程 4
3 接口说明: 6
4 接入范例 7
说明单点登录系统的设计方案,交互流程。
单点登录系统的开发,产品设计人员,以及接入开放平台的第三方相关人员
单点登录系统的设计方案,交互流程。
单点登录:登录IMOClient后,可以直接进入第三方平台,不需要再次在三方平台进行登录。
1. 接入方在imo 开放平台申请第三方接入权限,并提交自己的SSOURL
2. Imo 开放平台通过接入申请,为接入方发放特定API_KEY(1个32个字节长的字符串)
3. Imo为接入方在imoclient上将之前提交的SSOURL绑定到<应用中心>的APP图标上(自动)
4. 用户点击APP图标,imoclient开启web页面,url为:ssourl?cid=xxxx&uid=xxxx&key=xxxxxxxx
5. 接入方接收到ssourl的请求,通过imoserver提供的imoAuth接口(httprestful)对cid,uid合法性进行验证。
6. appcheck接口返回认证成功,接入方确认此uid为合法imo账号,可以开始绑定流程,或直接访问接入方内部系统。
1. Imoclient调用ssourl说明:
调用方式:http get
参数:cid, 一个公司的唯一数字标识,取值,1-9223372036854775807
参数:uid,一个用户的唯一数字标识,取值,1-9223372036854775807
Key: 256byte 字符串
Eg:http://appoa.oa.com/ssourl? cid=xxxx&uid=xxxx&key=xxxxxxxx
(http://appoa.oa.com/ssourl为第三方url )
2. appcheck接口说明:
调用方式:http post
参数:cid, 一个公司的唯一数字标识,取值,1-9223372036854775807
参数:uid,一个用户的唯一数字标识,取值,1-9223372036854775807
参数:Key, imo生成的一个用户的签名,60秒后失效,取值,256byte 字符串
(参数来自接口1)发送前需要做URLENCODE
返回:{“result”:”success”,”info”:”ok”}
EG:http://open.imoffice.com:8000/?app=appcheck&cid=xxxx&uid=xxxx&key=xxxxxxxxx
http://test.oplatform.imoffice.cn/mis/view.php
验证接口demo:
PHP版:
$key = urlencode($key);
$url="http:// test.oplatform.imoffice.cn /?app=appcheck&cid={$cid}&uid={$uid}&key={$key}";
$result = curl($url);
function curl($url, $timeout = 10) {
$ch = curl_init();
$tt = curl_errno($ch);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
Java版:
public String curl(String url,String timeout ) throws Exception{
String cid = getParameter("cid");
String uid= getParameter("uid");
String key = getParameter("key");
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter("http.socket.timeout", new Integer(timeout));
client.getParams().setParameter("http.protocol.content-charset", "UTF-8");
HttpPost post = new HttpPost(url);
try {
List
params.add(new BasicNameValuePair("cid", cid));
params.add(new BasicNameValuePair("uid", uid));
params.add(new BasicNameValuePair("key", key));
post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse response = client.execute(post);
String result = EntityUtils.toString(response.getEntity());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
http://www.yxxx.net.cn 西安云翔软件信息科技有限公司