アレルギー対策、自宅でできる効果的な方法とは?

今度新しく作成する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入力画面を用意しない)で
 実現することは可能でしょうか?


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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QIIS7.0上でASP.netでAD情報取得したい

ASP.netをVS2008(言語はVB)で開発しています。ローカル(WinXP)ではAD情報が取得できるのに、
WindowsServer2008(IIS7.0)上で実行したらエラーになりました。

エラー内容:「操作エラーが発生しました」
場所 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
-------------------------------------
コード:
Dim nameCheck As String = System.Security.Principal.WindowsIdentity.GetCurrent.Name.ToString()
Dim serverPath As String = "LDAP://servername/DC=hogehoge,DC=local"

Dim entry As New System.DirectoryServices.DirectoryEntry(serverPath)
'ログオンユーザーを変数へ代入
Dim lgUser As String = Environment.UserName

Dim search As New System.DirectoryServices.DirectorySearcher()
' 検索のルートになるDirectoryEntryを指定
search.SearchRoot = entry
' 検索条件を指定します。下ではアカウント名と変数lgUserの一致が条件
search.Filter = "(samAccountName=" + lgUser + ")"
Dim result As System.DirectoryServices.SearchResult
result = search.FindOne
-------------------------------------
この↑FindOneでエラーになります。
lgUserにはユーザーID、
nameCheckにも、ドメイン名/ユーザーIDで、予定通りの値が取得出来ていることを確認しています
(※nameCheckはコード上必要ありませんが
思った通りの動きをしているか確認のため取得し、エラー時に表示して確認しました)

IIS7.0上では、IISマネージャを使用して、
「認証」で
・ASP.NET偽装
・Windows認証
を有効とし、他(フォーム認証、基本認証、匿名認証)はすべて無効にしています

lgUserにセットされる値はIDなので、
AD情報から、該当する人の名前と、メールアドレスを取得したいです。
(イントラネット上でデフォルト表示に使用します)
IIS7.0上で、ADに接続できるような設定が必要なのかな?と思っているのですが
具体的にどこをどうしたらよいのかわからず、途方に暮れています

こちらの情報が少ないようでしたら追加致します。
もう3日くらい詰まっているので、ヒントだけでも教えていただけると助かります。
よろしくお願いいたします。

ASP.netをVS2008(言語はVB)で開発しています。ローカル(WinXP)ではAD情報が取得できるのに、
WindowsServer2008(IIS7.0)上で実行したらエラーになりました。

エラー内容:「操作エラーが発生しました」
場所 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
-------------------------------------
コード:
Dim nameCheck As String = System.Security.Principal.WindowsIdentity.GetCurrent.Name.ToString()
Dim serverPath As String = "LDAP://servername/DC=hogehoge,DC=local"

Dim...続きを読む

Aベストアンサー

ただのユーザで偽装しているので、AD内オブジェクトの検索ができない(権限がない)のではないかと。

アプリケーションプールアカウントにそれなりの権限を付与し、偽装をやめて、操作者のユーザID 自体は My.User.Name で取得するか、
アプリケーションプールアカウントはデフォルトで、ADの検索する時だけコーディングで偽装するかでいけると思います。

Q文字列の後ろから必要分だけ削除したい。

例1 Dim str As String = "あいうえお1234"

文字列の中の1234だけ削除したい場合は、
str = str.Remove(5,4)
という風に、5文字目の後から4文字削除にすればよいのですが、

例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、
文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。

.NET環境です。

Aベストアンサー

Length(str)で文字数を取得できますので、後ろから4文字目は先頭から何文字目かは計算できると思いますが、どうでしょうか?

QSQL Server のキャラクターセット(内部文字コード)は何処で定義するのでしょうか?

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。
以下2点についてどなたかコメント願います。
1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか?
2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?
 (ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?)

根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。
『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。
以上よろしくお願いします。

SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問...続きを読む

Aベストアンサー

Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。照合順序については参考URLをご覧下さい。

SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。

このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。

参考URL:http://www.microsoft.com/japan/msdn/sqlserver/sql2005/bb330962.aspx

QHTTP 401.1エラー 権限がありません の解決方法

会社のイントラネット内で、サーバに構築したシステムにアクセスする際に、
「このページを表示する権限がありません
提供された資格情報にはこのディレクトリまたはページを表示する権限がありません。」
と、HTTP 401.1エラーが出てしまいます。

しかし、他の人のパソコンからは、問題なくアクセスすることができました。
なので、サーバ側ではなくクライアント側の設定のせいだと考えています。

インターネットオプションの「統合Windows認証」が関係する、というのを
ネットで調べていくつか見たのですが、これを使用しても、チェックをはずしても、
どちらでもアクセスできません。
ちなみにアクセスできた人のパソコンでは統合Windows認証はオンになっていました。
また、サーバの設定は、IIS→既定のwebサイト→プロパティ→ディレクトリセキュリティで、
匿名認証と統合Windows認証にチェックを入れています。

さらに、C:\Inetpub\wwwroot\testに、実行ファイルがあるのですが、
testディレクトリで「Everyone」に権限を与えています。

ほかに、何が関係するのでしょうか。また、それをどのように変更すればいいのでしょうか。
本当に初心者なので、お手上げ状態です・・・。
みなさんの知恵をお貸しください。

会社のイントラネット内で、サーバに構築したシステムにアクセスする際に、
「このページを表示する権限がありません
提供された資格情報にはこのディレクトリまたはページを表示する権限がありません。」
と、HTTP 401.1エラーが出てしまいます。

しかし、他の人のパソコンからは、問題なくアクセスすることができました。
なので、サーバ側ではなくクライアント側の設定のせいだと考えています。

インターネットオプションの「統合Windows認証」が関係する、というのを
ネットで調べていく...続きを読む

Aベストアンサー

名前解決の確認はとりあえず、pingを打って応答があればOK。
NGなら、名前解決がうまくいっていません。

うまくいかない場合は、DNSの登録を確認。
DNSを使用していない時は、とりあえずhostsファイルに登録すればOKです。
【例:Windowsのhostsファイルの場所(デフォルト)】
C:\WINDOWS\system32\drivers\etc\hosts

しかし、返信を見るとIISの設定もうまくいっていないようですね。
すいません。私もそんなにIISに詳しくないし、そちらの実環境も見ていないのでなんとも言えませんが、仮想ディレクトリの設定も確認しましたか?
あとは。。。認証を許可するフォルダも間違ってないですよね?
ちなみにサブディレクトリではないですよね?
認証はサブディレクトリにも反映されますのでご注意ください。

あまり、力になれなくてごめんなさい。。。

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QIP-VPNとインターネットVPNの違い

就職活動をしている大学生です。
セキュリティとネットワークに興味があり、そこから自分が何をやりたいのか突き詰めて行った結果VPNを提供している企業が浮かび上がって来ました、業界研究をしている際に疑問が出てきました。

IP-VPNとインターネットVPNの違いの違いがいまいちわかりません。

インターネットVPNはインターネット上を介したVPN、IPは事業者のネットワーク内のVPNって解釈でよいのですかね??

そうなるとプライベート回線を引くのとIP-VPNの違いは???

提供している事業者の違い、VPNに関すること、VPNの今後&求められるもの等、教えてください。

よろしくお願いします。

Aベストアンサー

こんちは。hirasakuです。

簡単に言うと
インターネットVPNはその名の通り、インターネット網を利用した拠点間をあたかもLANのように使うためのWAN構築です。
基本的にVPN接続するためのルータの設定(トンネリングや暗号化・認証など)はユーザーが設定し、運用管理もユーザーが行います。
インターネット網なので通信に対する保障がありませんので、VPNに通すデータを検討しなければならない場合もあります。
一番安価に構築できランニングコストが抑えられます。

IP-VPNは通信事業者の閉域IPネットワーク網を通信経路として用い、自社専用ネットワークであるかのようなWANを構築できるサービスのことです。
通信事業者側で用意している網は品質を保証してあり、ユーザー側はIP-VPN網に接続するだけで、セキュアな通信ができ、インターネットVPN同様LANのように使えます。

プライベート回線とは専用線やフレームリレー網などのことを言っているのですかね?
専用線は料金が距離に比例し、拠点間の距離が離れるほどコストが大きくなり、セルリレー/フレームリレーは、フルメッシュ型接続ですけど、柔軟なネットワーク構築が難しいという問題があります。専用線・フレームリレーなどは回線帯域の割にはコストが高いので、インターネットVPNやIP-VPNでコストを安くしてネットワークを構築するようになってきてます。

インターネットVPNやIP-VPNはプロトコルにIPを使わなくてはならないので、データはIPに乗せる必要があります。
そこで、広域イーサネットというサービスを各通信事業者が行っています。広域イーサネットはプロトコルをIP以外(IPXやSNAなど)を通すことができ、またイーサなので、WAN側に接続するのに極端な話、スイッチでつなげられますので、今までのようにルータの設定などいらなくなります。(VLAN構成にするならスイッチの設定が必要ですけけど)また、QoSなどデータの優先制御や帯域制御などもできますので、VoIPなどにも使えますね。
ということで、簡単に拠点間のLAN構築が可能になります。

提供しているサービスの違いは、どこも似たり寄ったりかなって思いますけど。
サービス提供エリアや、構築にあったオプションサービスなどで選べばいいのでは。

こんちは。hirasakuです。

簡単に言うと
インターネットVPNはその名の通り、インターネット網を利用した拠点間をあたかもLANのように使うためのWAN構築です。
基本的にVPN接続するためのルータの設定(トンネリングや暗号化・認証など)はユーザーが設定し、運用管理もユーザーが行います。
インターネット網なので通信に対する保障がありませんので、VPNに通すデータを検討しなければならない場合もあります。
一番安価に構築できランニングコストが抑えられます。

IP-VPNは通信事業者の閉域IPネットワ...続きを読む

Qupdate文で改行を入れる

こんにちは。
いつもお世話になっています。

update文を使用して、データに改行を入れたいのですが、どうすればよいでしょうか。

対象列のデータ型はVARCHAR2です。

例えばSQLPLUSから、
SPL>update 「テーブル名」set 「対象列」='あ改行い改行う改行'
を投入し、そのあと
select 「対象列」 from 「テーブル名」
とすると
SQL>あ
SQL>い
SQL>う
と出てくればよいんですが、
SQL>update 「テーブル名」set 「対象列」='あ\nい\nう\n'
としても
SQL>あ\nい\nう\n
と、「\n」が文字列としてでてきてしまいます。

SPL>update 「テーブル名」set 「対象列」='あ
2い
3う'
と投入すると、期待通りになるのですが、
そうではなく一行にまとめたいのですがどうすれば良いでしょうか。

Oracle9iを使用しています。
宜しくお願いいたします。

Aベストアンサー

こんにちわyukio200263さん
以下のSQL文でどうでしょうか?

UPDATE 「テーブル名」
SET 「対象列」= 'あ' || CHR(13) || CHR(10) ||'い'

ちょっと長くなってしまいますが、一行で可能です。

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QOracle(オラクル)で、日付時刻型の検索方法について

質問させていただきます。
データベースはオラクルを使っていて、
SQL文で、抽出するときにエラーが出て困っています。

日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。
2005/05/26 を抽出したいのですが、
BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59'

だと、エラーでできません。
どなた様か、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

日付検索を行う場合は、以下のように書式を含める必要があります。

col BETWEEN TO_DATE('2005/05/26 00:00:00','YYYY/MM/DD HH24:MI:SS') AND TO_DATE('2005/05/26 23:59:59','YYYY/MM/DD HH24:MI:SS')

ただ、厳密には

col >= TO_DATE('2005/05/26', 'YYYY/MM/DD')
AND
col < TO_DATE('2005/05/27', 'YYYY/MM/DD')

と書くべきでしょうね。

QCSSでreadonlyの機能はありますか?

ASPにてCSSを使用しています。
inputタグを読取専用(readonly)にしたいのですが、
スタイルシートでの指定の仕方がわかりません。
よろしくお願いします。

Aベストアンサー

> スタイルシートでも「IME-mode」の設定等、入力に関する制御も可能でしたので

それは某ブラウザが勝手に CSS を拡張して付けた機能で、本来の CSS ではそのようなことはできません。
CSS はあくまでも見た目つまりスタイルをデザインするためのものだと考えるべきです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報