1

IIS Express 7.5 (WebMatrix 経由) でホストされている node.js を使用して、単純なサイトを作成しようとしました。統合 Windows 認証を使用したいと考えています。

同様の投稿で説明されているように、applicationhost.configを構成しました。また、 web.configも構成しました。

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

現在、サイトをリクエストすると、資格情報が求められます。それは今のところかなり良いです。次に、正しいドメイン資格情報を提供し、エラー401.1を受け取りました

さて、トラスト ゾーンのサイトと Fidler は、Kerberos チケットが提供されたと述べています。

どうしたの?

トレースを確認したところ、次のエラーが発生しました。

<EventData>
  <Data Name="ContextId">{00000000-0000-0000-3F03-0080000000F8}</Data>
  <Data Name="ModuleName">WindowsAuthenticationModule</Data>
  <Data Name="Notification">2</Data>
  <Data Name="HttpStatus">401</Data>
  <Data Name="HttpReason">Unauthorized</Data>
  <Data Name="HttpSubStatus">1</Data>
  <Data Name="ErrorCode">2147942485</Data>
  <Data Name="ConfigExceptionInfo"></Data>
</EventData>
<RenderingInfo Culture="en-US">
<Opcode>MODULE_SET_RESPONSE_ERROR_STATUS</Opcode>
<Keywords>
  <Keyword>RequestNotifications</Keyword>
</Keywords>
<freb:Description Data="Notification">AUTHENTICATE_REQUEST</freb:Description>
<freb:Description Data="ErrorCode">The local device name is already in use. (0x80070055)</freb:Description>
</RenderingInfo>

わかりました、それから私は数時間問題を理解しようとしていましたが、web.configからルールまたはURL書き換えモジュールを削除した場合にのみ見つかりました

    <rewrite>
        <rules>
            <!-- Don't interfere with requests for logs -->
            <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">
                <match url="^[a-zA-Z0-9_\-]+\.js\.logs\/\d+\.txt$" />
            </rule>

            <!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
            <rule name="StaticContent">
                <action type="Rewrite" url="public{REQUEST_URI}" />
            </rule>

            <!-- All other URLs are mapped to the Node.js application entry point -->
            <rule name="DynamicContent">
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <action type="Rewrite" url="app.js" />
            </rule>
        </rules>
    </rewrite>

その後、すべてがうまく機能します(app.jsの正しい処理を除く)

では、問題は、WebMatrix の元の node.js テンプレートを保持し、そのようなエラーなしで Windows 認証を使用する方法です。

もう1つの質問は、node.jsのIISモジュールのパイプラインによって収集されたすべてのコンテキスト情報を取得する方法です??

4

1 に答える 1

1

iisnode v0.1.13 の時点で、IIS パイプラインによって収集された情報は node.js アプリケーションに公開されません。これは既知の制限であり、 https ://github.com/tjanczuk/iisnode/issues/87およびhttps://github.com/tjanczuk/iisnode/issues/94で対処される予定です。

書き換えルールを使用する場合の認証の問題を調査する必要があります。https://github.com/tjanczuk/iisnode/issues/127を作成しました。

于 2011-12-21T18:27:05.583 に答える