見出し画像

AnyConnectのVPN接続をワンクリック化(By Power Automate Desktop)

A.概要

 テレワークをすることが多くなり、自宅で社内LANにVPN接続をすることが多くなりました。弊社では、VPNの接続にCiscoのAnyConnectを使用しています。AnyConnectのパスワードには、PassLogicというワンタイムパスワードの仕組みが組み合わせられています。ブラウザーを起動し専用サイトにIDを入力して魔方陣のような毎回変わる数字列を表示させます。予め決めてある読み順で、数字を読み取りパスワードとして、AnyConnectに入力しなければなりません。

毎回変わる数字列

 正直にいって、面倒くさいと思っていました。IDとPassが必要なページのログイン、多くの人はブラウザーに覚えて貰っているのではないでしょうか?このワンタイムパスワードは、ブラウザーに覚えて貰えません。
 今回、Power Automate Desktopの使い方を学習したので、これからいろいろな自動化を試みたいと考えていますが、何をするにも、社内ネットにログインしなければなりません。社内ネットに接続する際に必ず発生する面倒事をPower Automate Desktopを使って、ワンクリックに簡略化します。

B.実際の動作状況

C.使用したツール

  • Power Automate Desktop  :MS謹製 RPAツール

  • Any Connect         :Cisco製 VPN接続アプリ

  • PassLogic          :ワンタイムパスワード

D.制作のツボ

Power Automate Desktopに自動でやって貰う部分は、次の4ステップになります。

  1. Any Connectを起動し、ログイン用の画面を出す。

  2. ブラウザーを起動し、PassLogicにIDを入力して、数字表を表示させる。

  3. 数字表から、決められた順に数字を読み出してパスワードを作る。

  4. Any Connectにパスワードを入力して、ログインする。

1.Any Connectを起動し、ログイン用の画面を出す。

 変わった事はやっていませんが、5~7行目は、下の認証が出る場合と出ない場合があるので、条件を分けています。パソコンを再起動した後などは、出ますが、一度Any Connectを起動した後では、常駐するようになるので、出ません。


PCに保存された個別の証明書へのアクセス、許可ボタンを押させる。

2.ブラウザーを起動し、PassLogicにIDを入力して、数字表を表示させる。

 ここでは、新たにEdgeを起動し、指定のログインページを呼び出して、自分のIDを入力しています。次へボタンを押させることで、数字表が表示されます。

3.数字表から、決められた順に数字を読み出してパスワードを作る。

 全体の中では、この部分が一番難しく想定外の時間を消費しました。
 16行目のデータの抽出は、Power Automate Desktopが備えるレコーダー機能を使いました。

順番に数字を要素として登録して行く

 パスワードの文字列は、8桁なのですが、なぜか途中の二文字が抜けて6桁しか登録できない現象に悩みました。(原因は未解決)
 画像左下の詳細設定をクリックすると、次の画面が現れます。

残りの二桁は、ここから「追加のCSSセレクターの指定」で追加した

「CSSセレクター」の中身
html > body > div:eq(1) > table > tbody > tr:eq(0) > td:eq(2) > table > tbody > tr:eq(3) > td:eq(0) > div > p
( )内の数字を変えることで、読ませたい数列の位置を指定する。

 16行目は、こうして順番に読んだ数字を「DataFromWebPage」という変数に格納してくれます。変数の中身を確認したかったので、メッセージボックスに表示させました。

区切りにカンマが入っている。

 このままでは、パスワードとして、使えないので、カンマを取る必要があります。
 これが、かなり自分にとっては難問でした。
 相当の時間を費やしても解決できず、技術板でDataFromWebPageという変数が、1次元のリストではなく、2次元の配列になっていることを指摘され、やっとたどり着いたのが、17行目です。

よく見ると、1行8列って表示されていた(;゚ロ゚)

17行目の中身
%DataFromWebPage[0][0]%%DataFromWebPage[0][1]%%DataFromWebPage[0][2]%%DataFromWebPage[0][3]%%DataFromWebPage[0][4]%%DataFromWebPage[0][5]%%DataFromWebPage[0][6]%%DataFromWebPage[0][7]%
これで、2次元の配列の、0行目の数列から、1列ずつ読み取り、値をそのままくっ付けている。For each~Endのループを二重にするよりも簡単にできた。

17行目を処理した後、再び、メッセージボックスを表示すると、

パスワードらしくなった。

4.Any Connectにパスワードを入力して、ログインする。

 ここでは、難しいことはしていません。読み取ったワンタイムパスワードを入力して、OKボタンを押しています。20行目と22行目にWaitを入れたのは、回線が遅いときに失敗したので、一呼吸入れるようにしました。
 その後、数字表を表示したブラウザーを閉じて完了です。

E.フィードバック

 完成した物を動画にとって、3人の同僚に見て貰いました。

頂いた感想

1.便利そうだけれど、よく解らない。

 このとき見せた動画は、1920×1080の画面で、Power Automate Desktopの画面がメインで、動作を示す色の反転が順に動いていく部分を見ていると、
確かに何をしているのか、全く伝わらない動画でした。画面の解像度を1280×1024まで落として、キャプチャし直し、動画中にテキストを加えてわかりやすくしたのが、冒頭の動画です。

2.確かに凄いけど、必要なのだろうか。

 正直、なくても困りません。短縮できる時間は、1分ぐらいだし、事務所で有線接続する分には、不要だし。毎回パスワードを入力するのが面倒くさい人にしか役に立ちません。

3.セキュリティー上の問題は発生しないだろうか。

 まっとうな意見だと思います。厳密には、セキュリティーレベルを落とすことになっていると思います。但し、仮にパスワードやIDが盗まれても、個別に付与された証明書ファイルがない他のパソコンでは接続できません。パソコン自体が紛失・盗難に遭うなどしたときのリスクは、ブラウザーに覚えさせているID・Passの組合せと同程度だと思います。

F.最後に

 初めてPower Automate Desktopを利用して制作したフローにしては、ちょっとマニアックで地味なテーマ過ぎました。自分のパソコンにも入れて欲しいというコメントを想定していましたが、思ったほどの需要は無さそうです。(皆さんは、面倒じゃないんでしょうか?是非、コメントお願いします。)
 制作してみて判った事ですが、Power Automate Desktopは、デスクトップアプリの顔をしていますが、実際には安定した回線が必要そうです。回線が細いとフローを読み込むのでさえ、もっさりしています。
 VPNを張ることで、回線が切り替わるので、このフローを実行した後は、Power Automate Desktopの接続が切れて、うまく再接続できないのかフローの保存が出来なくなるなど不安定になります。VPNの下で、Power Automate Desktopを再起動しなければなりませんでした。
 Power Automate Desktopは、個人の作業を効率化させるのには大変優れていると思いますが、フローの共有などがDesktop版では出来ませんし、チーム内の作業を効率化させるのには、向かないのかもしれません。
 万人受けしなくとも、自分の作業を短縮し、効率を上げて行くには、ぴったりのツールなので、これからもいろいろ自動化していこうと思います。


この記事が気に入ったらサポートをしてみませんか?