反向單點登錄RTX,即通過騰訊通登錄到其他的系統,登錄騰訊通后其他的系統不用輸入用戶名和密碼即可登錄。可能有二種情況。騰訊通和其他系統在同一台服務器上或在不同的服務器上。要調用騰訊通的登錄驗證接口的系統必須安裝RTX Server SDK(rtx服務器安裝的是2013版本,rtx server sdk安裝的是2015版本)。項目引用sdk安裝目錄下的“APIObject.dll”文件。
環境:
RTX服務器端版本是2013,機器名為”A機器“,IP為”192.168.0.88“
步驟一:安裝Rtx Server sdk
在需要調用RTX接口的機器上安裝Rtx Server SDK,這里提供的是RTX2015的接口 rtxserversdk2015formal.zip,親測過可用
步驟二:修改RTX服務器的配置,添加IP和端口的白名單
1>開發環境和RTX服務器在同一台機器上,即RTX Server SDK和RTX服務器在同一台機器上
以下是官方代碼,是開發環境和RTX服務器在同一台機器上的情況。
1 string strName = HttpContext.Current.Request.QueryString["user"]; 2 string strSign = HttpContext.Current.Request.QueryString["sign"]; 3 4 5 RTXSAPILib.IRTXSAPIRootObj RootObj = new RTXSAPILib.RTXSAPIRootObjClass(); 6 RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)RootObj.UserAuthObj; 7 8 Response.Write(strName); 9 Response.Write(strSign); 10 11 bool bOK = AuthObj2.SignatureAuth(strName, strSign); 12 13 if (bOK == true) 14 { 15 Response.Redirect("OA.html"); 16 } 17 else 18 { 19 Response.Redirect("error.html"); 20 }
2>開發環境和RTX服務器在不同機器上,即RTX Server SDK和RTX服務器安裝在不同機器上
RTX Server SDK:A機器,IP為192.168.0.88
RTX服務器:B機器,IP為192.168.0.120
2.1>A機器,修改sdk的配置
打開Tencent/RtxSSDK/RtxServerApi.ini文件,修改Host為B機器的IP
[Common]
Host=192.168.0.120
Port=6000
2.1>B機器,修改Rtx服務器的配置文件
第一,修改代碼,只需對官方代碼稍作修改,指定RTX服務的ip和端口;
第二,修改RTX服務器端配置,默認RTX 服務器只允許本機調用SDK,如果其他的機器需要調用,必須修改RTX 服務器安裝目錄的以下2個文件
SDKproperty.xml文件,添加節點<IP>192.168.0.88</IP>
<APIClient> <IPLimit Enabled="1"> <IP>127.0.0.1</IP> <IP>192.168.0.88</IP> </IPLimit> </APIClient>
AppConnConfig.xml文件:添加節點<IP>192.168.0.88</IP>
<APIClient> <IPLimit Enabled="1"> <IP>127.0.0.1</IP> <IP>192.168.0.88</IP> </IPLimit> </APIClient>
第三,重啟RTX服務器讓配置生效。
1 string strName = HttpContext.Current.Request.QueryString["user"]; 2 string strSign = HttpContext.Current.Request.QueryString["sign"]; 3 4 5 RTXSAPILib.IRTXSAPIRootObj RootObj = new RTXSAPILib.RTXSAPIRootObjClass(); 6 RTXSAPILib.IRTXSAPIUserAuthObj2 AuthObj2 = (RTXSAPILib.IRTXSAPIUserAuthObj2)RootObj.UserAuthObj; 7 8 Response.Write(strName); 9 Response.Write(strSign); 10 11 RootObj.ServerIP = "192.168.0.88"; 12 RootObj.ServerPort = 8006; 13 bool bOK = AuthObj2.SignatureAuth(strName, strSign); 14 15 if (bOK == true) 16 { 17 Response.Redirect("OA.html"); 18 } 19 else 20 { 21 Response.Redirect("error.html"); 22 }
步驟三:開啟8006端口
sdk需要調用8006端口,在命令行telnet看看端口是否打開
telnet 192.168.0.88 8006
如果端口沒有打開,則通過下面步驟打開8006端口
windwos防火牆>高級設置>入站規則>新建規則
-
首先,打開電腦的控制面板,然后在控制面板中找到防火牆;
-
在防火牆設置左邊選擇點擊高級設置;
-
高級安全設置中,我們點擊選擇左邊的入站規則;
-
在右側欄選擇點擊新建規則;
-
規則類型選擇端口類型;
-
選擇tcp協議,特定端口,端口自己規定,比如4444;
-
操作策略選擇允許連接;
-
何時應用規則,默認全選;
-
端口名稱和描述,自擬;
-
退出之后,我們就看到創建的入站規則,該端口允許。
-
步驟四:WCF發布到IIS
RTX的接口是都32位的,現在的機器基本是64位,在vs中調試接口不報錯,但是發布到iis就報錯。
解決方法:將接口封裝成wcf發布到iis,Interop.RTXSAPILib.dll這個是32位的 將IIS 應用程序池 啟用32位應用程序 設置為true就可以了
程序員的基礎教程:菜鳥程序員