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 アカウントとの直接のリンクはありません。