web-dev-qa-db-ja.com

IIS Express Windows認証

Silverlightアプリケーションをホストするために、VS2010でIIS Expressを使用しようとしています。 applicationhost.configファイルを変更して、適切な構成設定を変更できるようにしました。 web.configに次のものがあります。

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

認証されていないため、ドメインサービスコールはユーザーとしてnullレコードを返します。 VS2010 SP1ベータ版をインストールした後、これを動作させることができましたが、IIS Expressのみで動作するようにしようとしています。

Windows認証をIIS Expressと連携させるにはどうすればよいですか。欠落している構成設定はありますか?

242
Mark

option-1

\My Documents\IISExpress\config\applicationhost.configファイルを編集してwindowsAuthenticationを有効にします。つまり:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

option-2

次のように\ My Documents\IISExpress\config\applicationhost.configのwindowsAuthenticationセクションのロックを解除します

<add name="WindowsAuthenticationModule" lockItem="false" />

必要な認証タイプのオーバーライド設定を「許可」に変更します

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

アプリケーションのweb.configに以下を追加します

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

以下のリンクが役立ちます: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

VS 2010 SP1をインストールした後、Windows認証を機能させるにはオプション1 + 2の適用が必要になる場合があります。さらに、IIS Express applicationhost.configで匿名認証をfalseに設定する必要がある場合があります。

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

VS2015の場合、IIS Expressアプリケーションホスト構成ファイルは次の場所にあります:

$(solutionDir)\.vs\config\applicationhost.config

プロジェクトファイルの<UseGlobalApplicationHostFile>オプションは、デフォルトまたはソリューション固有の構成ファイルを選択します。

272
vikomall

Visual Studio 2010 SP1および2012では、IIS Expressのサポートが追加され、山括弧を編集する必要がなくなりました。

  1. Web風味のプロジェクトをまだクリックしていない場合は、[IIS Expressを使用...]を選択します。
  2. 完了したら、Webプロジェクトを選択してを押します F4 プロパティパネルにフォーカスします。
  3. [Windows認証]プロパティを[有効]に設定し、[匿名認証]プロパティを[無効]に設定します。

enter image description here

このソリューションはvikomallのオプションよりも優れていると思います。

  • オプション#1は、すべてのIIS Expressサイトに対するグローバルな変更です。
  • オプション#2を使用すると、web.configに開発の残骸が残ります。
    • さらに、IISサーバーのapplicationHost.configで「ロック解除」手順に従わない限り、IIS 7.5にデプロイするとエラーになる可能性があります。

上記のUIベースのソリューションは、IIS ExpressのapplicationHost.configでサイト固有のロケーション要素を使用し、アプリはそのままにします。

詳細はこちら: http://msdn.Microsoft.com/en-us/magazine/hh288080.aspx

398
roryWoods

Booij boyからの回答に基づいて、コントロールパネル->プログラム-> Windows機能の有効化または無効化->インターネットインフォメーションサービス-> World Wide Webサービス->セキュリティで「ウィンドウ認証」機能をチェックしたかどうかを確認します。

また、firefoxまたはInternet Explorerを使用する場合には大きな違いがあるようです。 「Windows認証」を有効にした後、IEでのみ機能します。

9
bees73

これらの優れた答えに加えて、IISExpress開発環境のコンテキストで、悪名高い「system.web/identity@impersonate」エラーを阻止するために、applicationhost.configファイルで次の設定を確実に行うことができます。 。

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

これにより、開発およびテスト中の柔軟性が向上しますが、実稼働環境でこの設定を使用することの意味を理解してから確認してください。

役立つ投稿:

5
Chiramisu

IIS Managerでサイトをクリックします。 「コンテンツビュー」ではなく「機能ビュー」である必要があります

「機能ビュー」のIISセクションで、いわゆる機能「認証」を選択し、それをクリックします。ここで、Windows認証を有効にできます。これは、web.configの設定によっても可能です(スレッド内の提案の1つで)

しかし、多分あなたはあまりスクラブしたくないweb.configを持っています。その後、このスレッドはあまり助けにはなりません。だから、この答えを追加しました。

2
user1436076

いずれの回答も役に立たない場合は、プロジェクトのプロパティを調整する必要があります。その方法については、他のStackOverflowの回答をご覧ください。

https://stackoverflow.com/a/20857049/56621

0
Alex

1)Visual Studio 2015にアップグレードする前にサイトがWindows認証を使用していた場合、および2)サイトが/login.aspxをロードしようとしています(サイトにそのようなファイルが存在しない場合でも)。

サイトのWeb.configappSettingssectionに次の2行を追加します。

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
0
Theophilus

上記の回答のすべてを実行した後、Visual Studioを管理者として実行していないことがわかりました。管理者として実行した後、問題は解決しました。

0
Alisson

同じメモ-VS 2015では、.vs\config\applicationhost.configは表示されないか、使用できません。

デフォルトでは、.vsフォルダーは非表示になっています(少なくとも私の場合)。

.vsフォルダーが見つからない場合は、以下の手順に従ってください。

  1. ソリューションフォルダーを右クリックします。
  2. 「プロパティ」を選択します
  3. [Attributes]セクションで、[Hidden]チェックボックス(デフォルトはオフ)をクリックし、
  4. 次に、「適用」ボタンをクリックします
  5. 「このフォルダ、サブフォルダ、およびファイルに変更を適用する」オプションが選択されていることを確認するウィンドウが表示され、「OK」を押します。

    ステップ1から5を繰り返します(step 3を除く)。今回は、以前にチェックした 'Hidden'オプションをuncheckする必要があります。

これで.vsフォルダーが表示されるはずです。

0
SatheeshN