SSOとしてのNTLM、および偽装管理者としての特定のアクションの実行
-
22-07-2019 - |
質問
IIS / ASP.NET設定の正しい組み合わせにつまずいて、次のことを達成できないようです:
- 内部ドメインのすべてのユーザーはIISサイトにアクセスできる必要があり(NTLM認証付き)、ASP.NETアプリケーションは現在のユーザーのユーザー名を取得できるはずです(別名< strong>ユーザーは自分自身として認証されている)。
- 実行中のASP.NETアプリケーションは、管理者アカウントで特定のアクションを実行できる必要があります。たとえば、Active Directoryの変更、制限された場所へのファイルの書き込みなど。
おそらく推測できますが、アプリケーションのポイントは、「通常」を許可することです。ユーザーは特定の「管理」を行います; Webアプリケーションを介した変更。同時に、変更は「通常」でログに記録する必要があります。ユーザーのアカウントなので、認証されたユーザーの資格情報を失いたくありません。
IIS6で特定の設定を探して#1(ドメインの任意のユーザーがサイトにアクセスし、自分自身として認証される)を#2のコードとともに実行する
解決
少なくとも2つのオプションがあります:
両方に共通:
- IIS設定をWindows認証に設定する必要があります。
- ユーザーのIDはhttpcontextから読み取ることができます。
オプション1:
- 偽装の設定= false
- アプリケーションプールのIDを、ADを変更する権限を持つユーザーに設定します
- 上記のユーザーをIIS_WPGグループに追加します
オプション2:
- ADの変更を行う場合、スレッドのIDをADの変更を許可されているユーザーのIDに設定します
オプション2の場合、偽装ユーザーを使用するコード例は次のとおりです。
http://msdn.microsoft.com /en-us/library/system.security.principal.windowsimpersonationcontext.aspx
他のヒント
セキュリティの観点から、最善のアプローチは、すべての管理操作を、認証はするが偽装はしない独自のWebサービスに分離することです。サイトのNormalpartは、他のクライアントと同様に、localhostサービスの呼び出しであっても、Webサービスを呼び出すことで管理操作を実行します。
このようにして、通常のアプリプール(偽装する)と特権アプリプール(管理者)を分離します。
最後に、これはおそらく髪を分割していますが、NTLMは制約付き委任。ローカルIISホストの外部の何かにアクセスする場合は、「通常の」アプリケーションを委任に対して有効にする必要があります。
所属していません StackOverflow