Получить имя пользователя Windows со стороны сервера WCF - PullRequest
20 голосов
/ 15 ноября 2008

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

Ответы [ 4 ]

49 голосов
/ 15 ноября 2008

Попробуйте посмотреть на ServiceSecurityContext.Current.WindowsIdentity

9 голосов
/ 15 ноября 2008

Ниже приведен фрагмент кода службы, который показывает, как можно получить и использовать идентификатор WindowsIdentity, связанный с абонентом службы WCF.

Этот код предполагает, что вы принимаете большинство настроек по умолчанию с вашей конфигурацией. Он должен работать без проблем с именованным каналом или привязкой Net TCP.

p.Demand () определит, находится ли пользователь в группе окон, указанной в переменнойmissionGroup.

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();

}
7 голосов
/ 10 сентября 2012

Чтобы получить имя пользователя вызывающего абонента службы WCF:

var callerUserName = ServiceSecurityContext.Current.WindowsIdentity.Name;

0 голосов
/ 15 ноября 2008

вы пробовали WindowsIdentity.GetCurrent();?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...