私はWebサービスとWCFにかなり慣れており、Windows統合認証を使用しています-サーバー側のインターフェイスでユーザー名を取得するにはどうすればよいですか?カスタムビヘイビア、またはおそらくWCFセッションで何かを実装することになっていると思いますか?手がかりはとても便利です。
これは、WCFサービスの呼び出し元に関連付けられたWindowsIdentityを取得して使用する方法を示すサービスコードのスニペットです。
このコードは、構成でほとんどのデフォルトを受け入れていることを前提としています。名前付きパイプまたはネットTCPバインディングで問題なく動作するはずです。
p.Demand()は、ユーザーがpermissionGroup変数で指定されたWindowsグループに属しているかどうかを判別します。
private static void DemandManagerPermission()
{
// Verify the use has authority to proceed
string permissionGroup = ConfigurationManager.AppSettings["ManagerPermissionGroup"];
if (string.IsNullOrEmpty(permissionGroup))
throw new FaultException("Group permissions not set for access control.");
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
var p = new PrincipalPermission(ServiceSecurityContext.Current.WindowsIdentity.Name, permissionGroup, true);
p.Demand();
}
ServiceSecurityContext.Current.WindowsIdentityを見てみてください
WCFサービスの呼び出し元のユーザー名を取得するには:
var callerUserName = ServiceSecurityContext.Current.WindowsIdentity.Name;