zoukankan      html  css  js  c++  java
  • rtx反向单点登录

    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=' + encodeURIComponent(strAccount) + '&sign=' + encodeURIComponent(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>

     程序员的基础教程:菜鸟程序员

  • 相关阅读:
    Linux命令
    Java Script Closure(js闭包)-浅谈
    Java垃圾回收机制-概述
    五、面试准备-技术扩展
    四、面试准备-前端知识
    三、面试准备-框架知识
    二、面试准备-数据库知识
    SpringBoot多环境配置+自定义属性+随机数配置
    SpringBoot入门
    Vue入门
  • 原文地址:https://www.cnblogs.com/guohu/p/4458034.html
Copyright © 2011-2022 走看看