<identity> 要素
Web アプリケーションのアプリケーション ID を制御します。この要素は、コンピュータ、サイト、アプリケーション、サブディレクトリ、ページの各レベルで宣言できます。
<configuration>
<system.web>
<identity>
<identityimpersonate="true|false" userName="domain\username" password="password"/>
必須属性
属性 | オプション | 説明 |
---|---|---|
impersonate | 各要求に対してクライアント偽装を使用するかどうかを指定します。 | |
true | クライアント偽装を使用することを指定します。 | |
false | クライアント偽装を使用しないことを指定します。 |
省略可能属性
属性 | 説明 |
---|---|
userName | impersonate が true に設定された場合に使用するユーザー名を指定します。
userName と password は、クリア テキストで構成ファイルに格納されます。インターネット インフォメーション サービス (IIS: Internet Information Services) では、ユーザー エージェントの要求に対する応答として構成ファイルが送信されませんが、別の手段で構成ファイルを読み取ることができます。たとえば、サーバーが参加しているドメイン上で適切な資格情報を持つ認証されたユーザーなどは構成ファイルを読み取ることができます。セキュリティを高めるために、identity セクションでは、暗号化された userName 属性と password 属性のレジストリへの格納がサポートされています。資格情報は、Windows 2000 および Windows XP のデータ保護 API 暗号化関数によって REG_BINARY 形式で暗号化されている必要があります。詳細については、下記の解説と例を参照してください。 |
password | impersonate が true に設定された場合に使用するパスワードを指定します。暗号化されたワーカー プロセス資格情報のレジストリへの格納については、userName を参照してください。 |
解説
ユーザー名とパスワードのレジストリへの格納
ユーザー名とパスワードを暗号化し、レジストリに格納するには、userName と password を次のように設定します。
userName="registry:HKLM\Software\AspNetProcess,Name"
password="registry:HKLM\Software\AspNetProcess,Pwd"
キーワード registry とコンマの間の文字列は ASP.NET が開くレジストリ キーの名前を示します。コンマの後ろの部分には ASP.NET が資格情報を読み取る文字列値の名前が 1 つ含まれます。コンマが必要であり、資格情報が HKLM ハイブに格納されている必要があります。構成形式が不正な場合、ASP.NET ではワーカー プロセスが起動されず、現在のアカウント作成エラー コード パスが表示されます。
資格情報は REG_BINARY 形式で、Windows API 関数 CryptProtectData の呼び出しの出力を含んでいる必要があります。ASP.NET レジストリ設定コンソール アプリケーション (Aspnet_setreg.exe) を使用して、暗号化された資格情報を作成し、レジストリに格納できます。ASP.NET レジストリ設定コンソール アプリケーションでは、暗号化を実行するために CryptProtectData が使用されます。Visual C++ ソース コードおよびドキュメントと共に Aspnet_setreg.exe をダウンロードするには、www.asp.net の Web サイトで "aspnet_setreg" を検索してください。
暗号化された資格情報を格納するキーに対するアクセス権を設定して、Administrators および SYSTEM だけがアクセス権を持つようにしてください。キーは SYSTEM として実行されている ASP.NET プロセスによって読み取られるため、次のアクセス許可を設定してください。
Administrators:F
SYSTEM:F
CREATOR OWNER:F
ProcessAccount:R
これにより、データを保護するために二重の防御手段が取られることになります。
- ACL アクセス許可では、データにアクセスする ID が Administrator である必要があります。
- アカウントの資格情報を復元するには、攻撃者はサーバー上で CryptUnprotectData コードを実行する必要があります。
例
クライアント ID 偽装を true に設定する例を次に示します。
<configuration>
<system.web>
<identity impersonate="true"/>
</system.web>
</configuration>
暗号化したユーザー名とパスワードをレジストリのユーザー定義のキー AspNetIdentity
に格納する例を次に示します。
<configuration>
<system.web>
<identity>
userName="registry:HKLM\Software\AspNetIdentity,Name"
password="registry:HKLM\Software\AspNetIdentity,Pwd"
</identity>
</system.web>
</configuration>
必要条件
格納されている場所 : <system.web>
Web プラットフォーム**** : IIS 5.0、IIS 5.1、IIS 6.0
構成ファイル : Machine.config、Web.config
構成セクション ハンドラ : System.Web.Configuration.IdentityConfigHandler