データセンターで実行されている asp.NET Web アプリケーションがあり、顧客はシングル サインオンでログオンする必要があります。IIS 統合セキュリティを使用できれば、これは非常に簡単です。しかし、これはできません。お客様のドメイン コントローラーへの信頼はありません。そして、私たちはウェブサイトを一般のインターネットで利用できるようにしたいと考えています。人々がクライアント ネットワーク内から接続している場合にのみ、自動的にログインする必要があります。
私たちが持っているのは、ドメイン アカウントのリストと、asp.net コードで LDAP を介して DC にクエリを実行する方法です。IIS で匿名アクセスが許可されている場合、IIS はブラウザーに資格情報を要求しません。したがって、アプリケーションはユーザーの資格情報を取得しません。
IIS が匿名要求を受け入れて、ブラウザに資格情報を強制的に送信させる (したがって、シングル サインオンを使用できるようにする) 方法はありますか。
アップデート:
401: 無許可、www-authenticate: NTLM ヘッダーを自分で送信してみました。次に何が起こるか (Fiddler が教えてくれたように)、IIS が完全な制御を取得し、要求のチェーン全体を処理します。さまざまなソースから理解しているように、IIS はユーザー名を取得し、チャレンジをブラウザーに送り返します。ブラウザーは暗号化された応答を返し、IIS はドメイン コントローラーに接続して、この応答でユーザーを認証します。
ただし、私のシナリオでは、IIS はクライアントとは異なる Windows ドメインにあり、ユーザーを認証する方法がありません。そのため、Windows 認証を有効にして別のサイトを構築することもできません。
今のところ、私が研究しているオプションを残さなければなりません:
- ホスティング ドメインとクライアント ドメイン間のドメイン信頼の作成 (IT 部門はこれに満足していません)
- NTML プロキシを使用して、IIS 認証要求をクライアントのドメイン コントローラーに転送します (LDAP 経由で接続できる VPN 接続があります)。