2

私は、社内ネットワークとインターネットの両方で利用できる会社の Web サイトに取り組んでいます。そして、私には不可能と思われることを尋ねられましたが、実際にそれを言う前に質問したかったのです!

社内には 2 種類のユーザーがいます。実際に Active Directory に登録されている (Windows ログイン アカウントなどを持っている) 人とそうでないユーザーです。

内部ネットワークでは、によって与えられた ID を使用しますHTTPContext.Current.User.Identity.Name 。この認証により、ユーザーが実際に存在するかどうかを Active Directory で確認し、Web サイトへのアクセスを承認できます。これは、当社の内部ネットワーク経由でアクセスするためのものです。内部ネットワーク経由で Web サイトにアクセスするすべての人が AD アカウントを持っている必要があるため、これで問題ありません。

さて、主な問題はインターネットアクセスです!現時点では、ポップアップが表示され、ログイン/パスワードを要求されます (かなり基本的なことで、AD を使用していないすべての人に同じです。理由は聞かないでください。これは要件です.....) . ユーザーが正しいログイン パスワードを入力すると、ユーザーの正体がわからなくても、ユーザーは Web サイトにアクセスできます。しかし、私が求められているのは、このポップアップに「Windows 資格情報を使用してログインする」というリンクを表示することです。次に、資格情報を取得し、AD が正しいかどうかを確認する必要があります。

インターネットで調べたところ、いくつかの識別方法を管理することになっている Windows Identity Fundation を見つけましたが、これは私が必要としているものではないと感じています。

誰もこれを試したことがありますか?? 私は知っています(そして私は彼らに言いました)これは非常に奇妙な要件ですが、とにかく見てみると言いました...

[編集 2013/09/13] 何か試してみましたが、うまくいかない理由を教えてください。匿名接続を許可するように IIS で Web サイトを設定しました。ログインフォーム(基本認証用で、認証なしでアクセスできます)のあるページと、匿名接続を拒否するためにweb.configで構成された別のページへのリンクを追加しました。認証用の Internet Explorer ウィンドウが表示されるのではないかと思っていましたが、代わりに 401 - Unauthorized アクセスが発生しました。それは通常の動作ですか、それとも構成の問題ですか?

4

2 に答える 2

1

私の理解が正しければ、あなたは 2 つの困難に直面しています。

  1. 1 つの ASP.NET アプリケーションで 2 つの異なる認証方法を持つ
  2. 会社の AD 内で、特定のユーザー名とパスワードのペアが有効かどうかを手動でテストする

それぞれの問題に関して、私は 1 つの提案があります。

  1. 異なるフォルダーに配置された 2 つの異なる web.config ファイルを使用します。1 つは Windows 統合認証を使用し、もう 1 つは FormsAuthentication を使用します。認証されていないユーザーが最初に Windows 統合モードのログイン ページにアクセスし、失敗した場合に FormaAuthentication ログイン ページにフォールバックするようにします。

  2. FormsAuthentication ログイン ページ内で、ユーザー名とパスワードを要求し、DirectoryEntry クラスを使用して LDAP 経由で AD と通信します。そのために秘密の資格情報は必要ありません。ユーザーから受け取った実際のペアを使用できます。ADに「私の名前は何ですか?」と尋ねるだけです。それらの正確な資格情報を使用して。成功した場合は問題ありませんが、そうでない場合はそうではありません。

于 2013-09-11T14:02:04.803 に答える
0

私は会社の複数のアプリケーションに対してこれとほぼ同じことを行い、次のように解決しました。

  1. アプリケーションにログイン ページを設定し、認証モードをフォームに設定します。

  2. ユーザーがログインしたら、そのユーザーが Active Directory で有効かどうかを確認します

  3. 資格情報が Active Directory に対して正常に検証されなかった場合は、資格情報がカスタム プロバイダーに対して有効かどうかを確認してください。

    次に、ドメインに接続されたマシンで認証されたユーザーに「自動ログイン」も提供します。これは、Windows 認証で構成された IIS の個別のアプリケーションです。次に、すべてのマシンが*.ourcompanyname.comイントラネット アプリケーションを信頼するように設定され、そのドメインのサイトが Windows 資格情報を要求すると、マシンは自動的に提供します。この場合、ID を検出し、マシン キーで暗号化された Cookie を設定して、元のアプリケーションにリダイレクトします。

元のアプリケーションでは、ログイン前にこの Cookie の存在を確認し、復号化し (両方のアプリケーションがマシン キーを共有します)、ユーザーを自動的にログインさせます。

これにより、次の結果が得られます。

  1. 会社以外のユーザーは、アプリが管理するカスタムのユーザー名/パスワードで認証できます
  2. 会社のユーザーは、Active Directory 資格情報を使用して手動で認証できます
  3. 会社のユーザーは、ドメインに接続された PC を使用するときに資格情報を入力する必要はありません。
于 2013-09-11T14:09:49.210 に答える