2012-08-22 17 views
8

मुझे एक आवश्यकता है जहां मुझे लॉगिन प्रमाणीकरण के दौरान आरएसए टोकन से सुरक्षित आईडी दर्ज करने की आवश्यकता है और फिर स्वचालन परीक्षण चलाना शुरू करें।क्या टेस्ट ऑटोमेशन में उपयोग के लिए प्रोग्रामिंग के लिए आरएसए सिक्योर आईडी तक पहुंच बनाना संभव है?

क्या किसी भी एपीआई या किसी अन्य तरीके से प्रोग्रामिंग रूप से आरएसए टोकन मान तक पहुंच बनाना संभव है, ताकि परीक्षण प्रवाह पूरी तरह से स्वचालित हो सके?

+0

मुझे लगता है आप आरएसए यूएसबी टोकन की बात कर रहे हैं, एक सील टोकन एक वेब कैमरा और एक ओसीआर :) – ZJR

+0

@ZJR, ग्राहक RSA SecurID 700 उपयोग कर रहा है मैं "विंडोज के लिए RSA SecurID टोकन" लगता है पर क्लिक कर सकते हैं "शामिल होगा कॉपी करें "बटन और क्लिपबोर्ड में मान प्राप्त करें और इसे वहां से पढ़ें। हालांकि यह एक टोकन है क्योंकि मुझे अन्य विकल्पों के बारे में सोचना है। एक बार प्रमाणीकरण के "समाप्ति समय" कारक भी एक भूमिका निभाता है। अगर कोई एपीआई सुरक्षितकी की वैधता के लिए सुरक्षितकी और समय बचाता है, तो यह परीक्षण स्वचालन के लिए और अधिक सहायक होगा। – parishodak

+0

बेहतर जवाब के रूप में "वेबकैम और ओसीआर" बेहतर रखें! जब तक आप उन्हें अपने परीक्षण उद्देश्यों के लिए गैर-हार्डवेयर टोकन जारी करने के लिए राजी नहीं कर सकते ... – bobince

उत्तर

-2

एक विचार घड़ी/टोकन जोड़े का एक समूह रिकॉर्ड करना है और घड़ी को अपने प्रोग्राम के लिए वापस चलाएं और रिकॉर्डिंग को फिर से चलाएं। असल में, अगर आपके पास घड़ी को खाना बनाने का विकल्प है, तो आपको वास्तव में केवल एक जोड़ी की आवश्यकता है।

(मैं कहा नहीं यह एक अच्छा विचार था।)

गुड लक, /बॉब ब्रायन

+2

आपको टोकन को सत्यापित करने वाले सर्वर की घड़ी सेट करने की आवश्यकता होगी। उसके साथ अच्छा भाग्य। – SLaks

+0

आपके सुझावों के लिए धन्यवाद। मैंने वास्तव में इस समाधान के बारे में नहीं सोचा था। लेकिन मुझे डर है कि मैं सर्वर दिनांक समय के साथ गड़बड़ नहीं कर सकता: |, और सुरक्षित टोकन प्रमाणीकरण सर्वर तक पहुंच से अधिक प्रतिबंधित है, भले ही मैं कोशिश करना चाहता हूं। – parishodak

1

आप एक तरह से आप का उपयोग टोकन क्या निर्दिष्ट करने के लिए की जरूरत है।

यहाँ विकल्पों की संख्या मैं के बारे में सुना रहे हैं:

  • हार्डवेयर टोकन
  • सॉफ़्टवेयर टोकन आवेदन (मैक ओएस, विंडोज, आईओएस, एंड्रॉयड, विंडोज मोबाइल, और कुछ अन्य लोगों)
  • वेब ब्राउज़र टोकन

अधिक जानकारी के लिए इस लिंक की जाँच करें: http://www.emc.com/security/rsa-securid/rsa-securid-software-authenticators.htm#!offerings_for_web_browsers

हार्डवेयर टोकन के साथ आपको किसी प्रकार का कैमरा उपयोग करने और छवि के पिक्सल पढ़ने की आवश्यकता होगी (मैं वहां आपकी मदद नहीं कर पाऊंगा)

सॉफ़्टवेयर टोकन सरल है।

मैंने हाल ही में छोटे कमांड लाइन उपकरण बनाया है जो निष्पादित करने, पिन दर्ज करने और टोकन एप्लिकेशन में उत्पन्न पासकोड पढ़ने में सक्षम है। मैं आपको टूल (मेरी कंपनी की संपत्ति) नहीं भेज सकता, लेकिन मैं आपको कुछ सुझाव दे सकता हूं जो आपको अपना स्वयं का एप्लिकेशन बनाने के लिए करना है जो वही सामान करेगा।

लेकिन सबसे पहले आपको मुझे यह बताना होगा कि आप सॉफ़्टवेयर टोकन का उपयोग करते हैं या नहीं।


ठीक है। चूंकि आपके पास सॉफ़्टवेयर टोकन है, इसलिए मैं वर्णन करूंगा कि मेरा ऐप स्वचालित रूप से वीपीएन से कनेक्ट करने के लिए क्या करता है।

1) आपको ऐसा करने से पहले अपने सॉफ़्टवेयर टोकन को कॉन्फ़िगर करना होगा।
उस वीपीएन क्लाइंट के शीर्ष पर भी कॉन्फ़िगर करने की आवश्यकता होगी, और कनेक्शन उपलब्ध कनेक्शन सूची पर सूचीबद्ध होना चाहिए।
जब यह कॉन्फ़िगर किया गया है तो आप अपना ऑटो वीपीएन कनेक्शन कर सकते हैं।
हम सॉफ़्टवेयर टोकन इस एक के समान है:
http://wireless-setup.wsu.edu/msIPSEC.html

2) एक बार सभी उपकरण आप अपने VPN कनेक्शन शुरू कर सकते हैं कॉन्फ़िगर किया गया है:
https://ssl.seagate.com/ssl/docs/soft_token_install_instructions.html
हमारे वीपीएन क्लाइंट लग रहा है कि यह एक तरह दिखता है।

आपको गहरी जांच करने के लिए तैयार होने की आवश्यकता है।
आरएसए के दोस्तों ने यह असंभव बनाने के लिए वास्तव में कड़ी मेहनत की कि हम यहां क्या कर रहे हैं।
वे सामान्य नियंत्रण का उपयोग नहीं करते हैं। उन्होंने अपने स्वयं के नियंत्रण बनाए हैं मेरे पास spec नहीं है।

मैंने इसे C++ और WIN32 API फ़ंक्शंस का उपयोग करके किया है। यह मेरा नुस्खा है।

क) पढ़ने कार्यक्रम

ख) मान्य मानकों मैं स्थापित करने के लिए पिन, कनेक्शन नंबर की तरह पैरामीटर की संख्या के लिए पारित कर दिया पैरामीटर, कमान जब कनेक्शन स्थापित हो जाने आदि वे कर सकते हैं चलाने के लिए निश्चित रूप से हार्डकोड किया जाए लेकिन लचीला होने के लिए मैं उन्हें कमांड लाइन से पास कर सकता हूं।

ग) टोकन आवेदन के लिए जांच [EnumWindows]
टोकन एप्लिकेशन 2 शीर्ष स्तर खिड़कियों [एक आपको पिन दर्ज, और पासकोड के साथ एक]
अगर मैं दोनों खिड़कियों का पता लगाने खोला मैं बंद हो सकता है ऐप और इसे पुनरारंभ करें।
ऐप को बंद करने के लिए आप संदेश WM_CLOSE भेजने का प्रयास कर सकते हैं। मैं उन कार्रवाई अनुकरण "एक्स" बंद करें बटन

//restore it <if minimized> 
SendMessage(hwndTokenApplicationPinWindow,WM_SYSCOMMAND,SC_RESTORE,NULL); 
//close the app 
SendMessage(hwndTokenApplicationPinWindow,WM_LBUTTONDOWN,MK_LBUTTON,MAKELPARAM(223,14)); 
SendMessage(hwndTokenApplicationPinWindow, WM_LBUTTONUP,0,MAKELPARAM(223,14)); 

यह शुरू करने के लिए प्रेस करने मैं CreateProcess समारोह का उपयोग करें।
जब आप ऐप को पुनरारंभ करते हैं या आपके पास केवल एक विंडो खुलती है, तो अब आप पिन दर्ज कर सकते हैं।

घ) पिन

मैं उन, पिन खिड़की WM_LBUTTONDOWN पर क्लिक करें WM_LBUTTONUP छोड़ दिया अनुकरण दर्ज करें।
मैं WM_CHAR का उपयोग कर पिन दर्ज करता हूं।
एक बार दर्ज होने के बाद, WM_LBUTTONDOWN, WM_LBUTTONUP का उपयोग करके ठीक बटन क्लिक करें।
एक बार पूरा हो जाने पर आपको पासकोड विंडो प्रदर्शित होनी चाहिए।

ई) पढ़ें पासकोड
पासकोड प्राप्त करने के लिए मैं टोकन से कॉपी करें बटन का उपयोग करें। यह बटन क्लिपबोर्ड पर डेटा कॉपी करें।
हम इस बटन को दबाने अनुकरण: WM_LBUTTONDOWN, WM_LBUTTONUP
और क्लिपबोर्ड से डेटा को पढ़ने:

BOOL InvalidData = FALSE; 
OpenClipboard(NULL); 
HANDLE clip0 = GetClipboardData(CF_UNICODETEXT); 
wchar_t* p=(wchar_t*)GlobalLock(clip0); 
if(wcslen(p) == MaxPasscodeSize-1) 
    wcscpy_s(currentPasscode,MaxPasscodeSize,p); 
else if(wcslen(p) != MaxPasscodeSize-1 && wcslen(p) != 0) 
{ 
    wprintf(L"Error: Passcode in clipboard is invalid\n"); 
    InvalidData = TRUE; 
} 
GlobalUnlock(clip0); 
CloseClipboard(); 

अब आप पासकोड सिस्को वीपीएन क्लाइंट में इस्तेमाल किया जा करने के लिए तैयार है।
अगर आपको यह समझ में आता है तो कृपया मुझे बताएं।
यदि ऐसा होता है, और आप अपना ऐप इस बिंदु तक काम करते हैं तो कृपया मुझे बताएं और मैं वीपीएन क्लाइंट से निपटने के लिए निर्देश पास करूंगा।

यदि आपको ऊपर दिए गए चरणों के लिए अधिक विस्तृत निर्देश की आवश्यकता है तो कृपया मुझे बताएं।

+1

जहां तक ​​मेरा ज्ञान है, क्लाइंट में सॉफ्टवेयर और हार्डवेयर दोनों टोकन – parishodak

2

हम एक वीपीएन आरएसए सुरक्षित आईडी और Cisco AnyConnect का उपयोग करता है करने के लिए हमारे प्रवेश स्वचालित, निम्न कार्य करके: प्रोग्राम के रास्ते

1) ओपन आरएसए सुरक्षित आईडी आप

2) निम्नलिखित भागो चाहते हैं। PS1

#Source http://www.lazywinadmin.com/2010/06/powershell-get-clipboard-set-clipboard.html 
function Get-ClipBoard { 
Add-Type -AssemblyName System.Windows.Forms 
$tb = New-Object System.Windows.Forms.TextBox 
$tb.Multiline = $true 
$tb.Paste() 
$tb.Text 
} 
# end Source http://www.lazywinadmin.com/2010/06/powershell-get-clipboard-set-clipboard.html 

$wshell = New-Object -ComObject wscript.shell; 
$wshell.AppActivate('the name')#Here you need to write the name that appears on the left top corner of the rsa secure id window 
Sleep 1 
$wshell.SendKeys('{TAB}') 
$wshell.SendKeys('~') 
$a = Get-ClipBoard 


#Source http://www.cze.cz 
#This script is tested with "Cisco AnyConnect Secure Mobility Client version 3.0.5080″ 
#Please change following variables 

[string]$CiscoVPNHost = 'the vpn you are trying to connect' 
[string]$Login = 'your user' 
[string]$Password = $a 

#Please check if file exists on following paths 
[string]$vpncliAbsolutePath = 'C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpncli.exe' 
[string]$vpnuiAbsolutePath = 'C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe' 

#**************************************************************************** 
#**** Please do not modify code below unless you know what you are doing **** 
#**************************************************************************** 

Add-Type -AssemblyName System.Windows.Forms -ErrorAction Stop 

#Set foreground window function 
#This function is called in VPNConnect 
Add-Type @' 
using System; 
using System.Runtime.InteropServices; 
public class Win { 
[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
public static extern bool SetForegroundWindow(IntPtr hWnd); 
} 
'@ -ErrorAction Stop 

#quickly start VPN 
#This function is called later in the code 
Function VPNConnect() 
{ 
Start-Process -FilePath $vpncliAbsolutePath -ArgumentList "connect $CiscoVPNHost" 
$counter = 0; $h = 0; 
while($counter++ -lt 1000 -and $h -eq 0) 
{ 
sleep -m 10 
$h = (Get-Process vpncli).MainWindowHandle 
} 
#if it takes more than 10 seconds then display message 
if($h -eq 0){echo "Could not start VPNUI it takes too long."} 
else{[void] [Win]::SetForegroundWindow($h)} 
} 

#Terminate all vpnui processes. 
Get-Process | ForEach-Object {if($_.ProcessName.ToLower() -eq "vpnui") 
{$Id = $_.Id; Stop-Process $Id; echo "Process vpnui with id: $Id was stopped"}} 
#Terminate all vpncli processes. 
Get-Process | ForEach-Object {if($_.ProcessName.ToLower() -eq "vpncli") 
{$Id = $_.Id; Stop-Process $Id; echo "Process vpncli with id: $Id was stopped"}} 

#Disconnect from VPN 
echo "Trying to terminate remaining vpn connections" 
start-Process -FilePath $vpncliAbsolutePath -ArgumentList 'disconnect' -wait 
#Connect to VPN 
echo "Connecting to VPN address '$CiscoVPNHost' as user '$Login'." 
VPNConnect 

#Write login and password 
[System.Windows.Forms.SendKeys]::SendWait("$Login{Enter}") 
[System.Windows.Forms.SendKeys]::SendWait("$Password{Enter}") 

#Start vpnui 
start-Process -FilePath $vpnuiAbsolutePath 
#Wait for keydown 
#echo "Press any key to continue …" 
#try{$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")}catch{} 
#Exit 

तुम सब अब क्या करने की जरूरत ऊपर स्क्रिप्ट पर अपने वीपीएन, और उपयोगकर्ता स्थापित करने के लिए है।

+0

स्क्रिप्ट पर हैं, तो आप 2 अलग-अलग स्रोत पा सकते हैं। हम उस स्क्रिप्ट का उपयोग करते थे जो यहां पाया जा सकता है: [link] (http://www.cze.cz), क्योंकि हमने टोकन का उपयोग नहीं किया था। हालांकि, हमने थोड़ी देर के बाद इसका उपयोग करना शुरू कर दिया, इसलिए हमें स्क्रिप्ट में कुछ लाइनें जोड़नी पड़ीं, ताकि हम इसका इस्तेमाल कर सकें। समाधान यहां पाया गया था: [लिंक] (http://www.lazywinadmin.com/2010/06/powershell-get-clipboard-set-clipboard.html), और हमने इसे काम करने के लिए आवश्यक लाइनों को जोड़ा। – JS5