在一个域中设置命名管道安全(Setting named pipe security in a Dom

2019-06-26 05:14发布

我有我设立了一个命名管道的服务器。 它工作正常的域管理员,但是当我测试客户端上的普通用户,它提供了异常“访问路径被拒绝”。 所以这是我正在尝试设置权限,向访问域中的所有身份验证的用户。 我在做什么错在这里?

服务器:

        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”。

任何帮助是极大的赞赏

Answer 1:

您需要使用的构造函数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为例。



文章来源: Setting named pipe security in a Domain