ログイン認証中に RSA トークンからセキュア ID を入力し、自動化テストの実行を開始する必要があるという要件があります。
テストフローを完全に自動化できるように、API またはその他の方法を介してプログラムで RSA トークン値にアクセスすることは可能ですか?
ログイン認証中に RSA トークンからセキュア ID を入力し、自動化テストの実行を開始する必要があるという要件があります。
テストフローを完全に自動化できるように、API またはその他の方法を介してプログラムで RSA トークン値にアクセスすることは可能ですか?
使用するトークンの種類を指定する必要があります。
ここで私が聞いた選択肢はたくさんあります:
詳細については、次のリンクを確認してください: http ://www.emc.com/security/rsa-securid/rsa-securid-software-authenticators.htm#!offerings_for_web_browsers
ハードウェアトークンを使用すると、ある種のカメラを使用して、撮影した画像のピクセルを読み取る必要があります(そこではお手伝いできません)
ソフトウェアトークンはより単純です。
最近、トークンアプリケーションで生成されたパスコードを実行、入力、および読み取ることができる小さなコマンドラインツールを作成しました。ツール(私の会社のプロパティ)を送信することはできませんが、同じことを実行する独自のアプリケーションを作成するために必要なヒントをいくつか紹介できます。
ただし、最初に、ソフトウェアトークンを使用するかどうかを教えてください。
わかった。あなたはソフトウェアトークンを持っているので、VPNに自動的に接続するために私のアプリが何をするかを説明します。
1)これを行う前に、ソフトウェアトークンを構成する必要があります。
そのVPNクライアントに加えて、接続も構成する必要があり、接続は使用可能な接続リストにリストされている必要があります。
構成すると、自動VPN接続を実行できます。
次のようなソフトウェアトークンがあります:
https
://ssl.seagate.com/ssl/docs/soft_token_install_instructions.html
VPNクライアントは次のようになります:
http://wireless-setup.wsu.edu/msIPSEC。 html
2)すべてのツールを構成したら、VPN接続を開始できます。
あなたは深い調査をする準備をする必要があります。
RSAの人たちは、私たちがここで行っていることを不可能にするために本当に一生懸命働きました。
通常のコントロールは使用しません。彼らは私が仕様を持っていない独自のコントロールを作成しました。
私はC++とWIN32API関数を使用してそれを行いました。これが私のレシピです。
a)プログラムに渡されたパラメータを読み取る
b) PIN、確立する接続番号、接続が確立されたときに実行するコマンドなど、いくつかのパラメーターがあるパラメーターを検証します。もちろんハードコーディングできますが、柔軟性を持たせるために、コマンドラインから渡すことができます。
c)トークンアプリケーションの確認[EnumWindows]
トークンアプリには2つのトップレベルウィンドウを含めることができます[PINを入力したウィンドウとパスコードを入力したウィンドウ]
両方のウィンドウが開いていることを検出したら、アプリを閉じて再起動します。
メッセージWM_CLOSEを送信して、アプリを閉じることができます。「X」閉じるボタンを押すユーザーのアクションをシミュレートします
//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関数を使用します。
アプリを再起動するか、ウィンドウを1つだけ開いたときに、PINを入力できるようになりました。
d) PINを入力します
ピンウィンドウWM_LBUTTONDOWN、WM_LBUTTONUPをユーザーが左クリックしてシミュレートします。
WM_CHARを使用してピンを入力します。
入力したら、WM_LBUTTONDOWN、WM_LBUTTONUPを使用して[OK]ボタンをクリックします。
完了すると、パスコードウィンドウが表示されます。
e)パスコードの読み取りパスコード
を取得するには、トークンから[コピー]ボタンを使用します。このボタンデータをクリップボードにコピーします。
このボタンを押すことをシミュレートします: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();
これで、CISCOVPNクライアントで使用するためのパスコードの準備が整いました。
意味があれば教えてください。
もしそうなら、あなたのアプリはこの時点まで動作します。私に知らせてください。VPNクライアントを処理するための指示を渡します。
上記の手順の詳細については、お知らせください。
1 つのアイデアは、一連のクロック/トークンのペアを記録し、プログラムのクロックを逆方向に実行して、記録を再生することです。実際、時計を調理するオプションがあれば、実際には 1 組しか必要ありません。
(私はそれが良い考えだとは言いませんでした。)
がんばれ / ボブ・ブライアン