質問者
IISサイト間のシングルサインオンの実現性について

質問
-
いつも大変参考にさせて頂いております。
フジイと申します。
WEBサーバ内にIISで2つのWEBサイトの構築をしているのですが
これらのサイト間のシングルサインオンを実現したいと考えております。
その実現が可能かについてご意見、ご教示ください。何卒よろしくお願いします。
ここでシングルサインオンと申しておりますのは以下のような動作を期待しております。
①片方のサイトにアクセスする。
②Windows資格情報「ID/パスワード」が求められる画面が表示されるので入力する。
③サイトにログイン後、サイト内のリンクより、もう片方のサイトを開く。
→この時、再度Windows資格情報を求められないようにしたいのです。
資格情報は②で入力した内容で自動ログインさせたい。
■サーバ構成およびその他情報
・サーバ構成は以下です。
AD兼WEBサーバ:WindowsServer2008R2
DBサーバ :WindowsServer2008R2
SQLServer2012
・各サーバは同一ドメインに所属しています。。
・WEBサーバ上にはIISにより2つサイトが作成されています。(ポートおよびアプリケーションプールはそれぞれ異なります。)
・ドメインに参加していないクライアントPC(ワークグループ)からのアクセスを想定しています。
よろしくお願い致します。2014年4月29日 8:37
すべての返信
-
質問者さんの言われる「シングルサインオン」の定義は、具体的にどういうものですか?
自分の理解では、「シングルサインオン」というと、Active Directory を使ったドメイン環境で、統合 Windows 認証を利用して最初に自分の PC を起動するときにサインオンしてドメインにログインし、Web サイトへのログインはその資格情報で自動的に(サインオンしないで)アクセスできるようにするというものなのですが、それとは違うようですね。
フォーム認証での話のように思えますが、具体的に説明いただけませんか?
【追伸】
フォーム認証で、ユーザーが同一ドメイン内で、別のアプリケーション間を行き来する際に再認証を受ける必要をなくするという意味であれば、両方アプリケーションで web.config で name, protection, path, validationKey, validation, decryptionKey および decryption を同じにすることで可能です。
詳しくは以下のページを見てください。
アプリケーション間のフォーム認証
http://msdn.microsoft.com/ja-jp/library/eb0zx8fc(VS.90).aspx- 編集済み SurferOnWww 2014年4月29日 9:48 追伸追加
2014年4月29日 9:42 -
早速の返信ありがとうございます。
私が期待する今回の「シングルサインオン」の定義ですが、
クライアントがワークグループであるため、統合Windows認証とは少し違うと思われます。
>ここでシングルサインオンと申しておりますのは以下のような動作を期待しております。
>①片方のサイトにアクセスする。
>②Windows資格情報「ID/パスワード」が求められる画面が表示されるので入力する。
>③サイトにログイン後、サイト内のリンクより、もう片方のサイトを開く。
> →この時、再度Windows資格情報を求められないようにしたいのです。
> 資格情報は②で入力した内容で自動ログインさせたい。
上記をもう少し詳細に記載しますと、
WEBサーバはドメイン(AD)のユーザを元に認証します。
初回にサイトにアクセスした際にWindows既定の資格情報入力画面(タイトル:Windowsセキュリティ)が表示されます。
ID/パスワード入力後にサイト内のリンクより、もう片方のサイトへアクセス際に再度の資格情報入力画面が表示されないようにしたいのです。
すみません、現在構築中のWEBサイトは特段のログイン画面(フォーム画面)を設けておりませんが
フォーム認証とすることで当方が考えている「シングルサインオン」となりそうな気がします。2014年4月29日 10:43 -
ASP.NET Web アプリ開発にどのぐらいの経験・知識をお持ちなのですか? 差し支えなければそのあたりを書いていただけませんか?
以下の発言を見ると、あまり詳しくはなくて、話が通じてないように思われます。
> クライアントがワークグループであるため、統合Windows認証とは少し違うと思われます。
> WEBサーバはドメイン(AD)のユーザを元に認証します。
> 初回にサイトにアクセスした際にWindows既定の資格情報入力画面(タイトル:Windowsセキュリティ)が表示されます。
> フォーム認証とすることで当方が考えている「シングルサインオン」となりそうな気がします。
どのぐらいの経験・知識をお持ちかが分かれば、それにあわせた回答ができると思いますので。
2014年4月29日 11:01 -
> サイト間のアクセス発生した際に毎回資格情報を入力する手間をなんとかしたく思っておりました。
そのためには、先にも書きましたように、
(1) Active Directory を使ったドメイン環境で、統合 Windows 認証を利用して最初に自分の PC を起動するときにサインオンしてドメインにログインし、Web サイトへのログインはその資格情報で自動的に(サインオンしないで)アクセスできるようにする。
または、
(2) 何らかの理由で、クライアントをドメインに入れることができないのであれば、フォーム認証を利用して、ユーザーが同一ドメイン内で、別のアプリケーション間を行き来する際に再認証を受ける必要をなくため、両方のアプリケーションの web.config で name, protection, path, validationKey, validation, decryptionKey および decryption を同じにする。
という方法が考えられます。(自分が知る限りですが)
上記 (2) で、フォーム認証のためのユーザーの資格情報を Active Directory から取得する方法も公開されてます。例えば、以下のページ。
ASP.NET からの Active Directory ドメイン サービス認証
http://msdn.microsoft.com/ja-jp/library/ms180890(v=vs.90).aspx他にも「asp.net」「フォーム認証」「active directory」で検索するといろいろ参考になるページが見つかると思いますので、探してみてください。
ところで、別のスレッド(下記)で Kerberos 認証について聞かれていますけど、統合 Windows 認証で Kerberos を使って委任を実現する(= NTLM のダブルホップ問題を解決する)というようなことを考えておられたのではないでしょうか?Kerberos認証の確認方法について
http://social.msdn.microsoft.com/Forums/ja-JP/9d1287c1-0620-4713-839d-911f2a5fa55a/kerberos?forum=iis7jaもしそうだとすると、今回のような質問をされるのが解せませんが・・・
- 編集済み SurferOnWww 2014年5月2日 2:55 誤記訂正
2014年5月2日 2:51 -
> Kerberos委任させることと今回の問題と関係があるのでしょうか。
質問者さんの言う「Kerberos委任させる」の意味は、具体的に言うと「Active Directory ドメイン環境内で、Kerberos を利用した統合 Windows 認証のもとで、クライアントのクレデンシャルを Web サーバー (IIS) から外部のリソース(例えば DB サーバー)へ委任を利用して渡す」ということですか?
すなわち、以下の MSDN ライブラリのページの「制約付き委任を使用して複数層にアクセスする」のセクションの図2のような構成にしたいということですか?
How To: ASP.NET 2.0 でプロトコル トランジションと制約付き委任を使用する方法
http://msdn.microsoft.com/ja-jp/library/ms998355.aspxであれば、図2の状態で「シングルサインオン(私が言う意味での)」は実現されているわけで、今回の問題は図2の構成にするのと同時に解決されるはずです。
2014年5月2日 5:18 -
別スレッドのものについてですが、Keberos委任を実現したいと考えていました。
すみません、全く知識不足で申しわけないのですがKerberos委任させることと
今回の問題と関係があるのでしょうか。目的が「1カ所でログインしたら、別のサイトではログインせずに使えるようにしたい」で、それで調査した結果、キーワードとして「シングルサインオン」や「Kerberos」を得たのでしょうか?
ただ、Kerberos って、クライアントがドメインに参加しており、そのクライアントの認証情報を使う仕組みのはずです。
(ワークグループのままにしたいなら、Kerberos って言葉は忘れた方がよいような気がしますが)参考
http://itpro.nikkeibp.co.jp/article/Keyword/20140114/529698/
(ここではクライアントがチケットを保有し、サーバーに対してチケットを提示することで認証を受ける仕組みが説明されています。ドメインに参加すればその仕組みがクライアントで稼働しますが、非ドメイン環境ではクライアントはその役割を持たないので、サーバー側・サーバー同士で何とかしないといけないのでは?)- 編集済み AzuleanMVP 2014年5月2日 5:42
2014年5月2日 5:39 -
フジイです。
ご返信ありがとうございます。
>目的が「1カ所でログインしたら、別のサイトではログインせずに使えるようにしたい」で、
>それで調査した結果、キーワードとして「シングルサインオン」や「Kerberos」を得たのでしょうか?
はい、そうです。
言葉が足りずすみません。
>ただ、Kerberos って、クライアントがドメインに参加しており、
>そのクライアントの認証情報を使う仕組みのはずです。
>(ワークグループのままにしたいなら、Kerberos って言葉は忘れた方がよいような気がします)
はい。WEBサーバにアクセスしてくるクライアントは
ドメインに参加しているクライアントとワークグループのクライアントの双方があります。
ドメインに参加しているクライアントは、統合Windows認証でログインできるのでよいのですが
ワークグループのクライアントだとサイトを跨るたびに何回も資格情報を聞かれるので
それをなんとかしたいと思っていました。
→これまでにご回答頂いているなかの「フォーム認証」で解決なのかなと思っています。もう少し調べてみます。2014年5月2日 6:31 -
フジイです。
ご返信ありがとうございます。
別スレッドのものは、ドメイン参加したクライアントからのアクセスを想定した時の質問でした。
Kerberos認証がうまく行われていることを確認する方法について質問させて頂きました。
このスレッドは、ワークグループのクライアントからのアクセスを想定した時のものだったのですが
ワークグループのクライアントからのアクセスでも以下のことは可能なのでしょうか。>「Active Directory ドメイン環境内で、Kerberos を利用した統合 Windows 認証のもとで、
>クライアントのクレデンシャルを Web サーバー (IIS) から外部のリソース(例えば DB サーバー)へ委任を利用して渡す」2014年5月2日 6:41 -
> ですのでドメインに参加しているクライアントからのアクセスがあるかを
> 意識して頂く必要がないかなと思っていました。それを意識しないで話をしても意味がありません。何故意味がないかはご自分で調べて欲しいと思います。
ドメインユーザー/ワークグループユーザー混在ということが最初から分かっていれば、「ワークグループのユーザーもドメインに入れる以外に現実的な解決策はありません」という答えで終わっていた話だと思います。
もし、ドメインユーザー/ワークグループユーザー混在で、ユーザー全員がシングルサインオンできる現実的な(あくまで現実的なですよ)方法があれば、是非、私に教えていただきたいです。
2014年5月2日 8:23 -
おそらくですが、フォーム認証に変えるとあなたが書かれていた「ドメインに参加しているクライアントは、統合Windows認証でログインできるのでよいのですが」がなくなります。
どちらからのユーザーであっても、フォーム認証画面を経ることになりので、ドメインに参加していたユーザーは不便になることを許容するという方針で進めているのでしょうか。(あと、ワークグループのマシンからのアクセスも、AD に登録されているユーザーでログインするのですよね?)
- 編集済み AzuleanMVP 2014年5月2日 10:32
2014年5月2日 10:26 -
言葉足らずで申し訳ありません、全てご推察の通りです。
>どちらからのユーザーであっても、フォーム認証画面を経ることになりので、
>ドメインに参加していたユーザーは不便になることを許容するという方針で進めているのでしょうか。
はい、ドメイン参加のマシンからのアクセスが少し不便になることは許容します。
ワークグループからのアクセスを重視し改善したいと思っています。
>(あと、ワークグループのマシンからのアクセスも、AD に登録されているユーザーでログインするのですよね?)
はい、ADに登録されているユーザでログインです。ワークグループのマシンからのアクセスもADに登録されているユーザです。
- 編集済み TA-FUJII 2014年5月2日 12:43
2014年5月2日 12:41