次のセクションで使用可能な認証方法のみを有効または無効にすることができます。
system.webServer/authentication
これは、system.webServer/authentication
がコレクションではなく、add
およびremove
config 要素をサポートしていないためです。次の場所にある IIS 構成スキーマ ファイルを参照してください。
C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml
を検索するsystem.webServer/security/authentication
と、そのセクションの各子要素が明示的に定義されており、system.webServer/security/authentication
それ自体の定義がないことがわかります。
順序に関しては、認証方法の順序を変更しようとしても違いはありません。たとえば、次の順序で (基本は Windows 認証の前):
<system.webServer>
<security>
<authentication>
<basicAuthentication enabled="true" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
そして、注文を入れ替えると:
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<basicAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
...これにより、IIS は常に 401 チャレンジ (Fiddler を使用してキャプチャ) で次のヘッダーをブラウザーに送信します。
HTTP/1.1 401 Unauthorized
Server: Microsoft-IIS/7.5
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
WWW-Authenticate: Basic realm="172.16.3.87"
上記では、IIS はブラウザーに対して、Kerberos、NTLM、または基本認証方法をサポートしていることを示しています。これらの認証方法は、ブラウザーのベンダーに関係なく、既定では常にこの順序になっています (私は IE と Chrome を試しました)。
Fiddler を使用して観察したところ、IE と Chrome の両方が、そのブラウザーでサポートされている最初の使用可能な方法を使用してネゴシエーションを試みます。つまり、この場合、IE と Chrome の両方が Kerberos 認証をネゴシエートしました。
GET http://172.16.3.87:81/ HTTP/1.1
Host: 172.16.3.87:81
Connection: keep-alive
Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
値を base64 でデコードすると、次のようにNegotiate
表示されます。
NTLMSSP
次のようにして、Kerberos (ネゴシエート) メソッドを削除することができます。
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true">
<providers>
<remove value="Negotiate" />
</providers>
</windowsAuthentication>
<basicAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
ただし、次のようにしてこれらの順序を変更しようとしても効果はありません。
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true">
<providers>
<remove value="Negotiate" />
<remove value="NTLM" />
<add value="NTLM" />
<add value="Negotiate" />
</providers>
</windowsAuthentication>
<basicAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
WWW-Authenticate:
次の順序でヘッダーが送信されます。
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
WWW-Authenticate: Basic realm="172.16.3.87"