Подтвердить что ты не робот

Получить имя пользователя Windows со стороны сервера WCF

Я довольно зеленый с веб-службами и WCF, и я использую встроенную проверку подлинности Windows - как я могу получить имя пользователя на интерфейсе на стороне сервера? Я считаю, что я должен реализовать пользовательское поведение или, возможно, что-то с сеансами WCF? Любые подсказки были бы супер-удобными.

4b9b3361

Ответ 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();?