0

今後のBizTalk2010プロジェクトでは、クライアントがデータを送信するために呼び出すWebサービスと、クライアントがデータを要求するために呼び出すWebサービスがあります。biztalkアプリケーションレベルでは、これはオーケストレーションをwcfサービスとして公開することで発生します。

サーバーレベルでは、2ノードのWebファーム、2ノードのbiztalkグループ、およびSQLクラスターがあります。Webサービスは明らかにWebファームに展開され、オーケストレーション、送信/受信ポートはBizTalkグループサーバーで実行されます。

発信者を認証し、そのIDをActive Directoryアカウントにマップして、オーケストレーションレベルで、発信者のAD IDにアクセスし、アカウント名をデータベースのストアドプロシージャに渡すことができるようにします。

おそらくSSL証明書を介してIDマッピングを処理できますが、これは以前に行ったことがありません。そこにいくつかの良いサンプル/チュートリアルがありますか?

4

1 に答える 1

0

WindowsIdentity からの名前を WCF ヘッダーに追加するエンドポイント動作を追加するとどうなるでしょうか? そうすれば(少なくとも私の状況では)、アイデンティティはパイプラインのさらに下の方でより簡単に利用できますが、それはあなたの「アカウント名」の目的には十分ですか?

#region IDispatchMessageInspector Members

public object AfterReceiveRequest(
    ref System.ServiceModel.Channels.Message request,
    System.ServiceModel.IClientChannel channel,
    System.ServiceModel.InstanceContext instanceContext)
{
    if (ServiceSecurityContext.Current == null || 
        ServiceSecurityContext.Current.WindowsIdentity == null) 
        return null;

    WindowsUserName windowsUserName = new WindowsUserName();
    request.Headers.Add(MessageHeader.CreateHeader(
        windowsUserName.Name, windowsUserName.Namespace,
        ServiceSecurityContext.Current.WindowsIdentity.Name));
    return null;
}

public void BeforeSendReply(ref Message reply, object correlationState)
{
    return;
}

#endregion

クライアント証明書を使用する場合も同じことが当てはまりますが、BizTalk パーティ名を取得するPrimaryIdentity代わりに使用します。WindowsIdentityただし、これには Active Directory アカウントとの直接のリンクはありません。

于 2012-12-28T23:35:47.507 に答える