【例1】
EXCELをクライアントアプリケーションとして開発したいけど、データはHP IceWall SSOで守られた安全な場所に置いておきたい。
この例ではEXCELとVBAを組み合わせたアプリケーションにより、HP IceWall SSOで守られた場所にあるデータを使った処理を実現しています。
問題となる部分は、
・ VBAを利用してどのようにHTTPリクエストを行うか?
というところと、
・ 実際にログイン処理はどうすればいいのか?
といったところでしょう。
HTTPリクエストについては「WebBrowserコントロール」を利用します。このコントロールを利用すれば、以下のように記述するだけでブラウザのようにコンテンツへアクセスすることができます。
Sheet1.WebBrowser1.Navigate2 "http://sever1/fw/dfw/BK1/fw/ok.sh", 4, "", "", ""
ログイン確認のためのコンテンツ(ok.sh)にアクセスしていますが、初めてアクセスした場合には実際に戻ってくるコンテンツはHP IceWall SSOのログイン画面です。ここでログインするための処理が必要になります。何らかのコンテンツを受信した場合、WebBrowserコントロールの「DocumentCompleteアクション」で通知されます。
通知されたらドキュメントの内容を見てログイン画面であることを確認しログイン要求を行います。判断部分とログイン処理部分は下のような形で実現できます。
<判断部分>
If WebBrowser1.Document.Forms.Item(0).Item(0).Name <> "ACCOUNTUID"
Then
login=0 'ログイン画面ではありません
Else
login=1 'ログイン画面です
End if
この場合は、単純にログイン画面に含まれる項目名「ACCOUNTUID」があるかどうかによってログイン画面を判断しています。
<ログイン処理部分>
WebBrowser1.Document.Forms.Item(0).Item(0).Value = "user01"
WebBrowser1.Document.Forms.Item(0).Item(1).Value = "user01"
WebBrowser1.Document.Forms.Item(0).Item(4).Click
この場合は固定のID(user01)、固定のPW(user01)をIDフィールド、PWフィールドに設定して送信ボタンをクリックしています。この処理でHP
IceWall SSOにログインして確認のためのコンテンツ(ok.sh)が取得でき、IceWalにログインした状態となります。(WebBrowserコントロールを見えるようにしていると下のようになっています)
この後、目的のデータやEXCELシートにアクセスするのですが、セッション情報(Cookie)はWebBrowserコントロールが保持しており、このEXCELシートからHTTPリクエストで要求を行う場合には自動的に送ってくれます。それによりHP
ceWall SSOの認可を通過できるわけです。この状態になれば、データへのアクセスは、EXCELからWebサーバ上のファイルへ普通にアクセスする形で行えば良いだけです。以下に例を記述しておきます。
Workbooks.Open Filename:=" http://sever1/fw/dfw/BK1/data/data.xls"
この後は持ってきたデータをどのように利用するかはアプリケーションの処理次第ということになります。新しいアイデアにご利用ください。
|