Я довольно зеленый с веб-службами и WCF, и я использую встроенную проверку подлинности Windows - как я могу получить имя пользователя на интерфейсе на стороне сервера? Я считаю, что я должен реализовать пользовательское поведение или, возможно, что-то с сеансами WCF? Любые подсказки были бы супер-удобными.
Получить имя пользователя Windows со стороны сервера WCF
Ответ 1
Вот фрагмент кода службы, который показывает, как вы можете получить и использовать WindowsIdentity, связанную с вызывающим абонентом службы WCF.
Этот код предполагает, что вы принимаете большинство настроек по умолчанию с вашей конфигурацией. Он должен работать без каких-либо проблем с привязкой Named Pipe или Net TCP.
p.Demand() определит, находится ли пользователь в группе окон, заданной переменной permissionGroup.
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();
}
Ответ 2
Попробуйте найти ServiceSecurityContext.Current.WindowsIdentity
Ответ 3
Чтобы получить имя пользователя вызывающего абонента службы WCF:
var callerUserName = ServiceSecurityContext.Current.WindowsIdentity.Name;
Ответ 4
Вы пробовали WindowsIdentity.GetCurrent();
?