3

現在、トランスポート セキュリティと Windows クライアント資格情報の種類を使用して WSHttpBinding エンドポイントを介して提供されている WCF Web サービスがあります。このサービスは IIS 5.1 上でホストされ、SSL はドメイン証明機関からの証明書を使用して構成されます。IIS 自体は、ドメイン コンピューター上で test@domain.com の ID を使用して実行されます。匿名アクセスは無効になっており、統合 Windows 認証が唯一の認証方法です。

このサービスには、現在の Windows ID 名と偽装レベルを返すメソッドがあります。メソッドの OperationBehaviourAttribute で Impersonation が Required に設定されています。

[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public IEnumerable<string> GetInformation()
{
    WindowsIdentity identity = WindowsIdentity.GetCurrent();
    return new List<string>()
    {
        identity.Name,
        identity.ImpersonationLevel.ToString()
    };
}

クライアントで WCF チャネルを手動で構築し、サービスの委任を許可しています。

WSHttpBinding binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.Transport;
binding.Security.Transport.ClientCredentialType =
    HttpClientCredentialType.Windows;

EndpointAddress endpoint =
    new EndpointAddress("https://host/DelegateService/Service.svc");

ChannelFactory<ServiceInterface.IService> cf =
    new ChannelFactory<ServiceInterface.IService>(binding, endpoint);

cf.Credentials.Windows.AllowedImpersonationLevel =
    TokenImpersonationLevel.Delegation;

ServiceInterface.IService service = cf.CreateChannel();

クライアントは、信頼できる発行元の証明書ストアに移動されたドメイン証明書で署名された完全に信頼できる XBAP です。

ホスト コンピューター、test@domain.com および current@domain.com には、ドメイン内で委任の許可が設定されており、機密としてマークされているユーザーはいません。偽装が機能するため、 SeImpersonatePrivilege も問題にはなりません。

クライアントがサービス メソッドを呼び出すと、メソッドは "domain\current" と "Impersonation" を返します。私が必要とするのは、「ドメイン\現在」と「委任」です。http://msdn.microsoft.com/en-us/library/ms730088.aspxの 2 番目の表によると、これは、クライアントまたはサービスが委任できないことを意味します。

ドメインの機能レベルは Windows 2000 Mixed です。これは NTLM 認証を意味するとどこかで読みましたが、それはドメイン コントローラー間のトラフィックに言及していると思います。https 上で実行されていない場合、WiresharksupportedMech: 1.2.840.48018.1.2.2 (MS KRB5 - Microsoft Kerberos 5)が http 応答に表示されるため、Kerberos が有効になっているように見えます。

技術的には、2 つのドメイン コントローラーがどちらも W2K3 サーバーであるため、機能レベルを Windows 2003 まで上げることができますが、IT 部門は現在、バックアップ操作などにリソースを割り当てることができず、機能レベルを上げる前に実行したいことです。レベル。

Windows Server 2003 の機能レベルにアップグレードできる仮想テスト ドメインがありますが、このドメインには証明機関や IIS がインストールされたクライアント コンピューターがないため、テスト目的で機能レベルを上げて残りのインフラストラクチャをセットアップすることができます。かなりの作業です。

これは私がしばらく解決できなかった問題です。Web には「こうすればいい」というような記事があふれているようですが、私はこれらの記事をまったく読んでいません。何が間違っているのですか?

4

1 に答える 1

0

XBAPとサービスを同じIISホストで実行していますか?

私がそれを正しく理解していれば-あなたは持っています:client->XBAP->WCF。

クライアントはIISでホストされているXBAPに接続しています。これはKerberosを介した認証である可能性があり、そうだと思われるかもしれません。

2番目のホップは、WCFサービスに接続するXBAPです。これら2つが同じIISホストでホストされている場合、Kerberosは試行されず、NTLMが使用されます。Kerberosは、WCFが別のホストマシン上にある場合にのみ試行されます。

XBAPとWCFを別々のボックスでホストしている場合は、2番目のホップ認証のセットアップで従来のKerberosを使用しているので、「これがどのように行うか」という種類の記事で説明する必要があります。

(この質問は少し前のことですが、最近見つけたばかりで、Kerberosと2ホップの問題を理解するようになったのはつい最近のことです。)

于 2010-12-24T10:04:36.180 に答える