アプリ版:「スタンプのみでお礼する」機能のリリースについて

今度新しく作成するIE8ベースのイントラのWebシステムにおいて、
簡易なシングルサインオンのような仕組みを実装したいと考えております。

<機器構成>
・仮想デスクトップサーバ
・Webサーバ
・APサーバ
・DBサーバ(Oracle 10g)

現在考えている大まかな流れは以下の通りです。
1.各ユーザはWindows Server 2008 R2の仮想デスクトップサーバにドメインアカウントでログオンする。
2.仮想デスクトップからIE8を使用してWebサーバ(htmlファイル)にアクセスする。
3.Webサーバ(htmlファイル)へのアクセスを契機に、仮想デスクトップにログオンしている
 アカウント情報を取得(%username%などの環境変数から取得?)してWebサーバに返す。
4.Webサーバから、APサーバ経由でDBサーバのユーザマスターテーブルを参照して
 仮想デスクトップから取得したアカウント情報を検索(マッチング)する。
5.マッチすれば正当なユーザ認めてWebシステムに自動ログオンして画面が開く。
 マッチしなければ接続できず、ポップアップもしくはIE上でエラーメッセージを表示する。

私はWebシステムの開発をするのが初めてで、具体的にどのような技術を使用すれば
上記の仕組みを実現できるのかが全然イメージできておりません。

例えば…
・上記3でWebサーバから仮想デスクトップのアカウント情報を取得する際、
 一般的にはどのような方法を使用するものでしょうか?
 的外れかもしれませんが、私が想定しているようにWebサーバへのアクセスを契機にした場合、
 html内でユーザが操作しなくても自動的に処理(バッチ実行など)を行う仕組みが必要になると
 考えているのですが、htmlでそのような処理を行うことは可能でしょうか?
 
・仮想デスクトップにログオンしているアカウント情報を取得した後、その情報を
 Web、AP、DBサーバに渡す場合はどのような方法を使用するべきでしょうか?
 接続時のhttpの記載にアカウント情報を埋め込む…というのは偽装の恐れがあるので
 できれば避けたいと考えております。
 ユーザには見えないログオンID入力画面をに内部的に用意し、採取したアカウント情報を
 自動入力するような作りにする必要があるのか、もしくは別の方法(ID入力画面を用意しない)で
 実現することは可能でしょうか?


何か基本的な考え方だけでもアドバイスを頂ければと思い投稿致しました。
初めての投稿なのでいろいろと不備があるかと思いますが、何卒よろしくお願い致します。

A 回答 (1件)

シングルサインオンの元ネタがADの場合は全部ADに任せるのが常道だ。



> ・私が想定しているようにWebサーバへのアクセスを契機にした場合、
> html内でユーザが操作しなくても自動的に処理(バッチ実行など)を行う仕組みが必要になると
> 考えているのですが、htmlでそのような処理を行うことは可能でしょうか?
htmlだと無理。動的Webページ(ClassicASPやASP.NET)を使えば可能。
WebサーバーのIISとIE8を統合Windows認証するように設定→IE8でアクセスすると勝手にドメインユーザー名がWebサーバーのIISに渡る→WebサーバーのIIS側のASPなどでドメインユーザー名を得てDBを見に行く。DBを見てOKならAPサーバーのWebシステムへリダイレクト(301でいい)。NGならエラーHTMLを返す。
APサーバーのWebシステムもIISとIE8による統合Windows認証を行ってドメインユーザー名で自動ログインする。

とこう書いてみると別にWebサーバー要らないな。
全てのAPサーバーのWebシステムが個別に統合Windows認証+ドメインユーザー名で自動ログインできるなら矢面に立つWebサーバーは要らないワンクッションかも。
WebサーバーのASPはDBを見に行った情報でアクセス者が利用できるWebシステム一覧を出すとかしたら約に立つかも知れん。

とにかく、APサーバーのWebシステム(のログイン周り)をいじらずに自動ログインさせるというのは無理(それが出来るならクロスサイトスクリプティング脆弱性の存在を疑った方がいい)だろう。

質問内容から本当に何もかもが初めてなんだろうなという印象を受けるので、
・統合Windows認証(IIS)
・AD+Kerberos
・AD+LDAP
の3つで検索し、それぞれの技術があなたがイメージするシステムに適用できるかを検討してもう少し疑問が具体的になったら改めて質問するといいんじゃないかな。

やりたい事がログイン画面を出さずに正当なユーザーかどうかを判断する方法っぽいので
統合Windows認証でいけるのならそれが一番簡単で楽だと思う。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!