码迷,mamicode.com
首页 > 其他好文 > 详细

rtx反向单点登录

时间:2015-04-26 18:15:11      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

1>通过ie浏览器的activx获取当前登录账户,其它浏览器不行,不支持activx。

 1 <%@ Page Language="C#" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head runat="server">
 6     <title></title>
 7 </head>
 8 <body>
 9     <form id="form1" runat="server">
10     <div>
11     </div>
12     </form>
13     <object id="RTXAX" data="data:application/x-oleobject;base64,fajuXg4WLUqEJ7bDM/7aTQADAAAaAAAAGgAAAA=="
14         classid="clsid:5EEEA87D-160E-4A2D-8427-B6C333FEDA4D" viewastext>
15     </object>
16     <script language="javascript" type="text/javascript">
17         var RTXCRoot = RTXAX.GetObject("KernalRoot");   //获取KernalRoot对象
18         var rtcData = RTXCRoot.Sign;  //获取签名,并把它赋给rtcData
19         var strAccount = RTXCRoot.Account;  //获取用户帐号
20         var strSignature = rtcData.GetString("Sign"); //获取rtcData对象的Sign 的内容,也就是用户签名
21         location.href = rtxsign.aspx?code=jsjd&user= + strAccount + &sign= + strSignature;
22     </script>
23 </body>
24 </html>

2>rtx常用接口封装

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 using System.Configuration;
 7 using Newtonsoft.Json;
 8 using Newtonsoft.Json.Linq;
 9 
10 /// <summary>
11 ///RTXHelper 的摘要说明
12 /// </summary>
13 public class RTXHelper
14 {
15     private RTXSAPILib.IRTXSAPIRootObj rootObj;
16     
17     /// <summary>
18     /// 默认的RTX服务器的地址和端口是本机,如果夸服务器则从配置文件中读取
19     /// 默认值:IP(127.0.0.1) port(8006)
20     /// </summary>
21     public RTXHelper()
22     {
23         rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
24 
25         WebConfigHelper webConfig = new WebConfigHelper();
26         rootObj.ServerIP = webConfig.RTXServerIP;
27         rootObj.ServerPort = webConfig.RTXServerPort;
28     }
29 
30     public RTXHelper(String rtxServerIP, Int16 rtxServerPort)
31     {
32         rootObj = new RTXSAPILib.RTXSAPIRootObjClass();
33         rootObj.ServerIP = rtxServerIP;
34         rootObj.ServerPort = rtxServerPort;
35     }
36 
37     public bool SignatureAuth(string bstrUserName, string bstrSign)
38     {
39         RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)rootObj.UserAuthObj;
40         return AuthObj2.SignatureAuth(bstrUserName, bstrSign);
41     }
42 
43     public void SendIM(string bstrSender, string bstrPwd, string bstrReceivers, string bstrMsg, string bstrSessionID)
44     {
45         rootObj.SendIM(bstrSender, bstrPwd, bstrReceivers, bstrMsg, string.Format("{0}{1}{2}", "{", bstrSessionID, "}"));
46     }
47 
48     public void SendNotify(string bstrReceiver, string bstrTitle, int lDelayTime, string bstrMsg)
49     {
50         rootObj.SendNotify(bstrReceiver, bstrTitle, lDelayTime, bstrMsg);
51 
52     }
53 }

3>验收当前用户的账户。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 
 8 using XYL.IMS.Entities;
 9 
10 public partial class RTXSign : System.Web.UI.Page
11 {
12     private String sysCode;
13     private String rtxUserId;
14     private String sign;
15     protected void Page_Load(object sender, EventArgs e)
16     {
17         InitParam();
18         if (PassSignatureAuth())
19         {
20             User user = new UserBLL().GetUser(sysCode, rtxUserId);
21             SysInfo sysInfo = new SysInfoBLL().GetSingleSignUrl(sysCode);
22             if (user == null)
23             {
24                 Response.Write(String.Format("您的{0}没有账户与腾讯通绑定,请绑定账户", sysInfo.Name));
25             }
26             else
27             {
28                 Response.Redirect(string.Format(sysInfo.SingleSignUrl, user.SysUserId, user.SysPassword));
29             }
30         }
31         else
32         {
33             Response.Write("账户未通过腾讯通服务器验证,请重新登录腾讯通,然后再尝试");
34         }
35     }
36 
37     private void InitParam()
38     {
39         sysCode = Request.QueryString["code"];
40         rtxUserId = Request.QueryString["user"];
41         sign = Request.QueryString["sign"];
42     }
43 
44 
45 
46     private bool PassSignatureAuth()
47     {
48         return new RTXHelper().SignatureAuth(rtxUserId, sign);
49     }
50 
51     private void setCookie()
52     {
53         HttpCookie cookie = new HttpCookie("rtx");
54         DateTime dt = DateTime.Now;
55         TimeSpan ts = new TimeSpan(0, 0, 10, 0, 0);
56         cookie.Expires = dt.Add(ts);
57 
58         cookie.Values.Add("user", HttpContext.Current.Request.QueryString["user"]);
59         cookie.Values.Add("sign", HttpContext.Current.Request.QueryString["sign"]);
60 
61         Response.AppendCookie(cookie);
62     }
63 
64 }

4>官网提供的demo,

 1 <html>
 2 <head>
 3 <TITLE>签名验证</TITLE>
 4 <meta http-equiv="Content-Language" content="zh-cn">
 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 6 <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
 7 <meta name="ProgId" content="FrontPage.Editor.Document">
 8 <script language="vbscript" id="clientEventHandlersVBS">
 9 <!--
10 从服务端获取SessionKey
11 
12 dim strAccount 
13 dim strSignature 
14 
15 Sub btnGetSign_onclick   服务器端代码,用于验证签名
16 
17     on error resume next
18 
19     Set RTXCRoot = RTXAX.GetObject("KernalRoot")   获取KernalRoot对象
20     Set rtcData = RTXCRoot.Sign 获取签名,并把它赋给rtcData  
21 
22  
23     strAccount = RTXCRoot.Account 获取用户帐号
24     strSignature = rtcData.GetString("Sign") 获取rtcData对象的Sign 的内容,也就是用户签名
25 
26     form1.user.value= strAccount
27     form1.sign.value = strSignature
28     If Err.Number <> 0 Then
29         MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
30         Err.Clear    Clear the error.
31     End If
32 
33 end sub
34 -->
35 </script>
36 </head>    
37 <body >
38   <form name="form1" method="get" action="Default.aspx">
39     <p>用户名:    
40       <input type="text" name="user">
41 </p>
42     <p>&nbsp;&nbsp;名:  
43       <input type="text" name="sign"> 
44     </p>
45     <p>
46       <INPUT name="btnGetSign" onclick="btnGetSign_onclick"  type="button" id="btnGetSign" style="WIDTH: 100px; HEIGHT: 21px" value="获取签名" size="18" >
47       <INPUT name="btnAuthSign"  type="submit" id="btnAuthSign" style="WIDTH: 100px; HEIGHT: 21px" value="签名验证" size="18" >
48     </p>
49   </form>
50   <p>
51     <OBJECT id=RTXAX
52 data=data:application/x-oleobject;base64,fajuXg4WLUqEJ7bDM/7aTQADAAAaAAAAGgAAAA== 
53 classid=clsid:5EEEA87D-160E-4A2D-8427-B6C333FEDA4D VIEWASTEXT>
54     </OBJECT>
55 </p>
56 <p>&nbsp;    </p>
57 </BODY>
58 </HTML>

 

 

 1 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml" >
 6 <head runat="server">
 7     <title>无标题页</title>
 8 </head>
 9 <%
10     
11     string strName = HttpContext.Current.Request.QueryString["user"];
12     string strSign = HttpContext.Current.Request.QueryString["sign"];
13 
14     
15     RTXSAPILib.IRTXSAPIRootObj RootObj = new RTXSAPILib.RTXSAPIRootObjClass();
16     RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)RootObj.UserAuthObj;
17 
18     Response.Write(strName);
19     Response.Write(strSign);
20 
21     bool bOK = AuthObj2.SignatureAuth(strName, strSign);
22 
23     if (bOK == true)
24     {
25         Response.Redirect("OA.html");
26     }
27     else
28     {
29         Response.Redirect("error.html");        
30     }
31 
32 
33     
34 
35  %>
36 <body>
37     <form id="form1" runat="server">
38     <div>
39         &nbsp;&nbsp;</div>
40     </form>
41 </body>
42 </html>

 

rtx反向单点登录

标签:

原文地址:http://www.cnblogs.com/guohu/p/4458034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!