Настройка безопасности именованных каналов в Домене - PullRequest
1 голос
/ 17 июля 2009

У меня есть сервер, который я настраиваю по именованному каналу. Он отлично работает для администраторов домена, но когда я тестирую клиента на обычном пользователе, он дает исключение «Доступ к пути запрещен». Итак, вот что я пытаюсь установить разрешения для предоставления доступа всем аутентифицированным пользователям в домене. Что я тут не так делаю?

Сервер:

        NamedPipeServerStream pipeServer = new NamedPipeServerStream("message-generator", PipeDirection.InOut, pipeThreads, PipeTransmissionMode.Message, PipeOptions.None);
        PipeSecurity pipeSecurity = pipeServer.GetAccessControl();
        pipeSecurity.AddAccessRule(new PipeAccessRule(@"localdomain\Authenticated Users", PipeAccessRights.FullControl, AccessControlType.Allow));
        pipeServer.SetAccessControl(pipeSecurity);

Клиент:

NamedPipeClientStream pipeClient = new NamedPipeClientStream("servername", "message-generator", PipeDirection.InOut, PipeOptions.None, TokenImpersonationLevel.Impersonation))

Имя сервера и домен, очевидно, различаются, но на сервере, когда он получает функцию pipeServer.SetAccessControl, он выдает мне исключение «UnauthorizedAccessException».

Любая помощь с благодарностью

1 Ответ

3 голосов
/ 22 декабря 2009

Вам необходимо использовать ctor для NamedPipeServerStream, который позволяет указать желаемые права доступа для дескриптора канала:

public NamedPipeServerStream(
    string pipeName,
    PipeDirection direction,
    int maxNumberOfServerInstances,
    PipeTransmissionMode transmissionMode,
    PipeOptions options,
    int inBufferSize,
    int outBufferSize,
    PipeSecurity pipeSecurity,
    HandleInheritability inheritability,
    PipeAccessRights additionalAccessRights
)

Когда вы звоните, вам нужно запросить PipeAccessRights.ChangePermissions в последнем аргументе. Тогда SetAccessControl должно получиться.

См. Мой блог http://blogs.charteris.com/blogs/chrisdi/archive/2009/12/04/exploring-the-wcf-named-pipe-binding-part-4.aspx для примера.

...