ログインの解説
はじめに
本プロジェクトは「.net Framework 3.5」が必要です。有効化しないとエラーとなりますのでご注意願います。
Xcuteに限らずWebシステムではアプリケーションの利用可否を判定したり、ユーザー毎の権限により使用できるメニューや、
扱えるデータを切り替えるなどログインの仕組みはとても一般的です。
ログインテンプレートではXcuteで作成したログインのプロジェクトにより、セッションと権限の機能を組み込む事が出来ます。
概要
ログインプロジェクトでは、以下の処理を行います。
@固有番号生成
Aブラウザに入力したログイン情報とDBのデータの照合
Bブラウザクッキーにセキュアタイムアウトを設定
C生成した固有番号と、入力した情報でサーバサイドクッキーを生成
サーバサイドとブラウザでクッキーを保持していることにより、基本動作としてセキュアが考慮されます。
・XCuteのMycookieスイッチを利用して、ログイン情報を出力 (MyCookieの解説)
・Proles.ini のSecureTimeOut に設定した時間をもとに、ブラウザ画面で一定時間経過後にセキュアタイムアウトさせる (Proles.ini のSecureTimeOutの解説)
・認証を経ずに画面へアクセスされることを抑止
ログインプロジェクトの動作確認
ProWeb.exeを起動しLogin.plsとSample.plsを登録後、それぞれのプロジェクトを起動して下さい。
プロジェクトの起動が確認出来ましたら、ブラウザに下記URLを投入してログイン画面を呼び出します。
http://127.0.0.1/procgixx/procgi.exe?P=Login&WriteSheet=Login
※127.0.0.1/procgi12の部分はご利用の環境に合わせて適宜変更して下さい。
※Login.xlsmのLoginシート上でXcuteナビゲーションから「Excelシートをブラウザで開く」の実行でも可能。
左図のIDとパスワードを入力するログイン画面が表示されます。
「次へ」ボタンを押下してSampleプロジェクトのMenuシートに遷移することをご確認下さい。
その際、ひな型の残滓(コピーBook)のR4C5:R4C8に
ログインしたユーザの情報が書き出され、表示されている
事をご確認ください。
プロジェクトにログインを組み込むための設定方法
マイクロラボ提供のログインプロジェクトはセキュリティを考慮し単独で動作する仕組みになっており、仕組みを意識することなく
ひな型数カ所の変更ですぐに使用する事が出来ます。
※開発初期段階でログインの仕組みを組み込んでしまいますと、デバッグがしづらくなるため、完成の直前に組み込む事をお勧めいたします。
(ログイン画面からセッションを保持しないとセキュリティエラーが出てしまうため、画面単位のデバッグが困難になるためです)
・ログインプロジェクトの設定
Login.xlsm!CheckInputシートのR4C10セルの数式を変更します。
=IF(R5C1="次へ",IF(R15C4="admin","procgi.exe?P=Login&WriteReport=A_Login","procgi.exe?P=Sample&WriteSheet=Menu"),
"procgi.exe?P=Login&WriteSheet=ReadPass")
上記数式の赤文字の箇所を、遷移したいプロジェクト名とメインコマンドに変更してください。
・ログインプロジェクトの設定(パスワードの暗号化を無効に)
デフォルトはパスワードをSHA256で暗号化しています。これをやめてパスワードを平文で扱いたい場合、設定を変更してください。
Login.xlsmのModule1先頭にある
Private Const noenc As Boolean = False
を、Trueにしてください
ただし、現状のadminユーザのパスワードは暗号化されているので、「ログインの応用シート」にある
・adminのパスワードを忘れてしまった場合」を参考にadminパスワードを再設定してください。
・ログインプロジェクトの設定(二重ログインの防止)
二重ログインを防止したい場合は、以下の設定を変更してください。
Login.xlsmのModule1先頭にある
Private Const nomulti As Boolean = True
を、Falseにしてください
こちらを変更する事により、すでにログイン済みのIDが、強制的にログアウトさせられます。
・ログインプロジェクトの設定(ldap)
Login.xlsm!LoginシートのR10C2セルのプルダウンで「ldap」を選択ます。
更に、Login.xlsm!CheckInput_ldapシートのR4C10セルの数式を変更します。
=IF(R5C1="次へ",IF(R15C4="admin","procgi.exe?P=Login&WriteReport=A_Login","procgi.exe?P=Sample&WriteSheet=Menu"),
"procgi.exe?P=Login&WriteSheet=ReadPass")
上記数式の赤文字の箇所を、遷移したいプロジェクト名とメインコマンドに変更してください。
次に、下記のLDAPの設定を修正します。この情報を基に、ログイン名(CN)にてLDAPサーバに問い合わせ、ログインを試みます。
R23C4セル LDAPマスター
R24C4セル Base dn
R25C4セル User dn
結果は、R19C4の「メッセージ」部分に帰ってきます。なんらかのメッセージが返ってきた場合は、ログイン失敗です。
お使いの環境によっては、マクロに修正が必要になる可能性があります。その際は、「LdapUserPass」というマクロを参照し、修正してください。
・ログインプロジェクトの設定(シングルサインオン)
下記のLDAPの設定を修正し、SingleSignOnシートを呼び出し先に設定してください。
R23C4セル LDAPマスター
R24C4セル Base dn
R25C4セル User dn
結果は、R19C4の「メッセージ」部分に帰ってきます。なんらかのメッセージが返ってきた場合は、ログイン失敗です。
お使いの環境によっては、マクロに修正が必要になる可能性があります。その際は、「LdapUserPass」というマクロを参照し、修正してください。
・Sampleプロジェクトの設定
ログインを通過すると、MyCookieにログイン情報が保存されると同時にMyCookieの引き値がブラウザのcookieに記憶されます。
これらをログイン後の各画面に対して書き出すため次のように設定してください。
R1C2セル COOKIE=r4c1,ProCookie
セル上にて 右クリック > Xcuteナビゲーション > COOKIE 押下でセットされます。
R1C7セル ="MYCOOKIE0_r4c5:r4c8=" & R4C1
セル上にて 右クリック > Xcuteナビゲーション > MyCookie 押下でセットされます。セット後にMyCookieの範囲をr4c5:r4c8に書き換えます。
R3C7セル ="MYCOOKIE0_r4c5:r4c8=" & R4C1
セル上にて 右クリック > Xcuteナビゲーション > MyCookie 押下でセットされます。セット後にMyCookieの範囲をr4c5:r4c8に書き換えます。
R4C1セル R1C2のCookieコマンドによって生成された値が出力されます。
R1C7とR3C7のMyCookieコマンドのキーとして参照するため、他のコマンド等で上書きしないよう注意してください。
R4C5〜R4C8セル MyCookieによりログイン情報が書き出されるセル位置です。
・ひな型の構成とフロー
以下にひな型シートの構成と処理概要のフローを示します。
 
   
1:ブラウザに表示されたLogin画面よりID・PASS・押されたボタン「次へ」or「パスワード変更」の情報がCheckInputシートに渡る
2:受け渡されたIDでFilterを掛けCheckInputレポートを書き出す、0件の場合ID不一致エラーを表示。
  書き出されたPASSとブラウザから入力された文字列を照合、不一致の場合パスワードエラーのメッセージを表示。
3:IDとPASSが一致した場合、R3C8のMyCookie0スイッチが有効になり、R15C4:R18C4の範囲がサーバ上に保存される。
  その際、R2C10セルのRUNコマンドによりマクロが実行されMyCookieの引き値がR4C1に生成される。
  R4C1に生成されたMyCookieの引き値を画面毎に安全に引き継ぐためR2C11のCookieコマンドでブラウザに記憶させる。
4:R2C9のINCコマンドにより画面を自動遷移させる「META HTTP-EQUIV='Refresh'」タグがHTMLに差し込まれる。
5:R4C10セルで指定した「P=Sample&WriteSheet=Menu」が4でINCされたタグにより呼び出されログイン後の画面に遷移する。
6:遷移先Menuシート、R1C2に設定のCookieコマンドによりブラウザに記憶されたMyCookieの引き値がR4C1に書き出される。
  R4C1の引き値を元にR1C7のMyCookieが呼び出されR4C5:R4C8の範囲にログイン情報が書き出される。
Loginプロジェクト応用テクニックについては
「ログインの応用」シートをご覧下さい。
Loginプロジェクトの詳細な遷移図をご覧になるには
「ログイン認証の仕組み」シートをご覧下さい。
MyCookieの仕組みをお知りになりたい方は
「MyCookieの解説」シートをご覧下さい。