3

誰かが助けてくれることを願っています!

JSONを使用してWCFサービスを呼び出していますが、ユーザーの資格情報を取得できません。
Kerberosを使用しているため、IISは次のように設定されています。

サーバー側のタスク:

  1. IISサーバーはドメインのメンバーです
  2. AD Users&ComputersMMCのIISサーバーコンピューターアカウントを「TrustedforDelegation」として設定します
  3. このポリシーを有効にするには、IISサーバーを再起動する必要があります。
  4. 統合Windows認証は、サイト/仮想ディレクトリに対してのみ選択する必要があります
  5. IISでは、認証方法としてNTLMのみを設定することはできません(これは通常問題ではありません。NEGOTIATEがデフォルトであるため、これを変更するスクリプトを特に実行しない限り、心配する必要はありません)。
  6. IISサーバー名は、ADのアカウント名と完全に一致する必要があります。または、IISサイトが代替名として設定されている場合はSetSPNツールを使用する必要があります(たとえば、サーバーはserver01.domain.com、Webサイトはwww.application.com)。

クライアント側のタスク

  1. クライアントはIE5.x+を使用している必要があります。クライアントがIE6を実行している場合は、[ツール]>[インターネットオプション]>[詳細設定]から[統合Windows認証を有効にする(再起動が必要)]が選択されていることを確認します。
  2. Webサイトは、クライアントにとってローカルイントラネット(インターネットゾーンではない)サイトとして認識される必要があります。理由を説明するドキュメントは見たことがありませんが、それ以外の方法で機能させることができたことがありません。必要に応じて、これをローカルイントラネットサイトリストに具体的に追加します。
  3. クライアントアカウントは、ADユーザーおよびコンピューターMMCで「機密、委任しない」としてマークされてはなりません。

wsHTTPBindingを使用すると、すべてがうまく機能します。ただし、JSONを機能させるには、WebHttpBindingを使用する必要があります。次に、偽装を使用してバックエンドサービスと通信できるように、ユーザーの資格情報を取得する必要があります。

WFC構成でのバインディングは次のとおりです。http: //underground.infovark.com/2008/03/21/wcf-webhttp-binding-and-authentication/を使用して次のことを行いました 。

<webHttpBinding>
    <binding name="AjaxBinding">
        <security mode="None">
             <transport clientCredentialType="Ntlm" />
         </security>
     </binding>
</webHttpBinding>

<endpoint name="DataJson" address="Datajson" binding="webHttpBinding" 
        bindingConfiguration="AjaxBinding" 
        behaviorConfiguration="jsonbehaviour" contract="MyContract"/>

<behavior name="jsonbehaviour">
     <!--<webHttp/>-->
     <enableWebScript/>
</behavior>

WCFサービスを正常に呼び出していますが、匿名以外から何も取得できないHttpContext.Current.User.IdentityためServiceSecurityContext.Current.WindowsIdentity、次の操作を実行できません。

WindowsIdentity identity = (WindowsIdentity)HttpContext.Current.User.Identity();

using (identity.Impersonate())
{
    // ... code to call application B goes here ...
}

私が読んだ複数のIDの場合、これをweb.configに追加しようとしました。

              <deny users="?"/>

誰かアイデアはありますか?

4

1 に答える 1

1
  • 構成にこのセクションがありますか?

    <system.web>
    <identity impersonate="true"/>
    
    • アプリケーション プールはどのアカウントで実行されていますか? (ネットワークサービスですよね?)
    • ドメインに SPN が重複していませんか?

これらは、統合認証を行うときに確認する「リスト」にある唯一のものであり、質問で明示的に言及していません。それが役に立てば幸い?

于 2009-06-05T09:41:11.403 に答える