不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
阿里软件服务集成平台(SIP)用户身份验证接口调用示例
编辑:dnawo 日期:2009-04-12
复制内容到剪贴板
程序代码

<%@ WebHandler Language="C#" Class="Alisoft" %>
using System;
using System.Web;
using System.Net;
using System.Xml;
using System.Text;
using System.Web.Security;
using System.Collections.Generic;
public class Alisoft : IHttpHandler {
public void ProcessRequest (HttpContext context) {
//1.应用信息
string sip_appkey = "12345";
string cert_code = "6c0a91f01a5411dd8179bad18f04aace";
//2.参数集
SortedList<string, string> parameters = new SortedList<string, string>();
//2.1 应用级输入参数
parameters.Add("userId", context.Request["user_id"]);
parameters.Add("appInstanceId", context.Request["app_instance_id"]);
parameters.Add("token", context.Request["token"]);
//2.2 系统级参数
parameters.Add("sip_appkey", sip_appkey);
parameters.Add("sip_apiname", "alisoft.validateUser");
parameters.Add("sip_timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//2.3 生成sip_sign,格式: cert_code参数1值1参数2值2,生成md5后转为大写
StringBuilder sb = new StringBuilder();
sb.Append(cert_code);
foreach (KeyValuePair<string, string> item in parameters)
{
sb.Append(item.Key + item.Value);
}
parameters.Add("sip_sign", FormsAuthentication.HashPasswordForStoringInConfigFile(sb.ToString(), "MD5").ToUpper());
//3.生成url
string url = "http://sipdev.alisoft.com/sip/rest?";//线上环境: http://sip.alisoft.com/sip/rest 测试环境: http://sipdev.alisoft.com/sip/rest
StringBuilder query = new StringBuilder();
foreach (KeyValuePair<string, string> item in parameters)
{
query.Append(item.Key + "=" + System.Web.HttpUtility.UrlEncode(item.Value, System.Text.Encoding.UTF8) + "&");
}
url += query.ToString().TrimEnd(new char[] { '&' });
//验证用户身份
try
{
WebRequest webRequest = WebRequest.Create(new Uri(url));
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
webRequest.Timeout = 5000;
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(((WebResponse)webRequest.GetResponse()).GetResponseStream());
//<?xml version="1.0" encoding="utf-8" ?><String>0</String>
switch (xmlDocument.SelectSingleNode("//String").InnerText)
{
case "1":
context.Response.Write("应用的订购者");
break;
case "0":
context.Response.Write("应用的使用者");
break;
case "-1":
context.Response.Write("尚未订购该应用");
break;
case "-2":
context.Response.Write("非法用户");
break;
default:
context.Response.Write("非法用户");
break;
}
}
catch (Exception ex)
{
context.Response.Write(ex.Message);
}
}
public bool IsReusable {
get {
return false;
}
}
}
using System;
using System.Web;
using System.Net;
using System.Xml;
using System.Text;
using System.Web.Security;
using System.Collections.Generic;
public class Alisoft : IHttpHandler {
public void ProcessRequest (HttpContext context) {
//1.应用信息
string sip_appkey = "12345";
string cert_code = "6c0a91f01a5411dd8179bad18f04aace";
//2.参数集
SortedList<string, string> parameters = new SortedList<string, string>();
//2.1 应用级输入参数
parameters.Add("userId", context.Request["user_id"]);
parameters.Add("appInstanceId", context.Request["app_instance_id"]);
parameters.Add("token", context.Request["token"]);
//2.2 系统级参数
parameters.Add("sip_appkey", sip_appkey);
parameters.Add("sip_apiname", "alisoft.validateUser");
parameters.Add("sip_timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//2.3 生成sip_sign,格式: cert_code参数1值1参数2值2,生成md5后转为大写
StringBuilder sb = new StringBuilder();
sb.Append(cert_code);
foreach (KeyValuePair<string, string> item in parameters)
{
sb.Append(item.Key + item.Value);
}
parameters.Add("sip_sign", FormsAuthentication.HashPasswordForStoringInConfigFile(sb.ToString(), "MD5").ToUpper());
//3.生成url
string url = "http://sipdev.alisoft.com/sip/rest?";//线上环境: http://sip.alisoft.com/sip/rest 测试环境: http://sipdev.alisoft.com/sip/rest
StringBuilder query = new StringBuilder();
foreach (KeyValuePair<string, string> item in parameters)
{
query.Append(item.Key + "=" + System.Web.HttpUtility.UrlEncode(item.Value, System.Text.Encoding.UTF8) + "&");
}
url += query.ToString().TrimEnd(new char[] { '&' });
//验证用户身份
try
{
WebRequest webRequest = WebRequest.Create(new Uri(url));
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
webRequest.Timeout = 5000;
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(((WebResponse)webRequest.GetResponse()).GetResponseStream());
//<?xml version="1.0" encoding="utf-8" ?><String>0</String>
switch (xmlDocument.SelectSingleNode("//String").InnerText)
{
case "1":
context.Response.Write("应用的订购者");
break;
case "0":
context.Response.Write("应用的使用者");
break;
case "-1":
context.Response.Write("尚未订购该应用");
break;
case "-2":
context.Response.Write("非法用户");
break;
default:
context.Response.Write("非法用户");
break;
}
}
catch (Exception ex)
{
context.Response.Write(ex.Message);
}
}
public bool IsReusable {
get {
return false;
}
}
}
sip_sign生成规则
将"cert_code参数1值1参数2值2参数3值3..."使用MD5加密成32位的密文并转换为大写。要注意的是:
·所有提交到接口的参数除sip_sign自身外都要参与加密;
·参数1、参数2、参数3按参数名称升序排列;
·参数值为空时参数名称仍需参与加密,如"cert_code参数1值1参数2参数3值3...";
测试、线上环境访问地址
·测试环境访问地址:http://sipdev.alisoft.com/sip/rest
·线上环境访问地址:http://sip.alisoft.com/sip/rest
资料参考:
·alisoft.validateUser API
·B/S软件(Web类)接入
评论: 0 | 引用: 0 | 查看次数: 4989
发表评论
请登录后再发表评论!