问题标签 [principalcontext]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 C# 使用目录服务配置 ActiveDirectory 组安全性
我正在尝试创建一个应用程序来配置全新安装的 AD 或将 AD 重置为默认值。这意味着使用 DirectoryServices API。
我的计划是创建一些 OU,然后创建一些组(每个组都有自己的安全属性 - 还安装了 ForeFront 和 CA)。然后我将创建一些用户并将他们添加到组中。
我知道如何创建 OU、组和用户,并且知道如何将用户添加到组中。
但我不知道如何设置组或用户的安全属性。
我找到了这段代码,但它对我不起作用:
我从代码中得到这个错误:
Some or all identity references could not be translated.
请指出我正确的方向。
c# - System.Security.Principal.NTAccount 的正确语法,用于传输到 SecurityIdentifier
我想创建一个System.Security.Principal.NTAccount对象,以便为System.Security.Principal.SecurityIdentifier传输它,因此我可以使用它在 .Net C# 中向 Active Directory 添加新的访问规则
如果我使用这种格式:
我可以转移它,但随后用户在 AD 中翻译为“未知用户”
如果我使用:
或者
或者
我收到错误消息:
关于它是如何完成的任何想法?
提前致谢。
c# - 什么是模拟以及它如何与 PrincipalContext 一起使用
我需要在我的应用程序上登录用户以验证他的凭据。我找到了旧LogonUser
API 和新PrincipalContext
对象。我真的很想使用它,PrincipalContext
因为它既简单又聪明,但我知道LogonUser
你可以得到一个用于模拟用户的令牌?究竟什么是模仿?有没有办法使用 做同样的事情PrincipalContext
?
谢谢
c# - System.DirectoryServices PrincipalContext 与只读域控制器
我有一个应用程序,它通过 DirectoryServices 执行 Active Directory 查找来保护某些功能。
我正在将此代码从我们旧域中的网络主机迁移到新域。该代码在旧域上完美运行。但是,在针对新域进行测试时会出现错误。我们在域之间完全信任,因为我们的目标是迁移旧域。新域使用域内的只读域控制器,但通过防火墙规则限制内部网络。只有域中的外围 DMZ 服务器可以访问只读域控制器。
这是有问题的代码行:
在针对新域进行测试时,我收到以下信息:
[COMException (0x8007203a):服务器无法运行。
和这个:
[ActiveDirectoryServerDownException:服务器无法运行。
连同只读域控制器的 FQDN。
既然我指定了 DC 的名称,那么我的请求不应该转到那个 DC 吗?这可能是我们的 LDAP SRV 记录中的 DNS 路由问题吗?我只能查看对 DNS 的访问权限,并且我发现在 Web 主机所在的内部站点中引用了只读 DC。此外,这些 SRV 记录没有设置优先级。它们都是 0。系统管理员坚持必须有一种编程方法来指向主 DC。我试图通过使用对 PrincipalContext 的调用的大约 6 种变体来做到这一点。
我宁愿坚持使用现代 API,而不是求助于编写 LDAP 字符串。在系统管理员方面,可以研究或检查什么?
在程序方面,我是否正确地指导我的请求?有没有替代方法或万无一失的方法来避免 DC?也许这取决于 DNS,但在这一点上我不确定。
故障排除:当我在 LDAP 请求期间从 Web 主机上的命令行运行 netstat 时,我看到了向我们的两个可写 DC 请求 ldap 连接的位置。之后,还会向只读 DC 发送请求并抛出错误。
c# - 在 C# 中使用 PrincipalContext 连接到 LDAP
我正在尝试使用 PrincipalContext 连接到 C# 中的 LDAP 服务器。我已经使用 Apache Directory Studio 验证了网络参数和身份验证设置都是正确的。这是我正在使用的代码:
我必须使用 SSL 进行连接,并且我的凭据是 SSO。我尝试过使用和不使用 sDefaultOU 作为容器参数。它在最后一行抛出的错误是:
System.NullReferenceException:对象引用未设置为对象的实例。在 System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig(String serverName, ServerProperties& properties) 在 System.DirectoryServices.AccountManagement.PrincipalContext.DoServerVerifyAndPropRetrieval() 在 System.DirectoryServices.AccountManagement.PrincipalContext..ctor(ContextType contextType, String name, String container, ContextOptions 选项、字符串用户名、字符串密码)
c# - 无法使用 PrincipalContext 检索 Active Directory 中的一个特定组用户
获取异常
system.directoryservices.accountmanagement.principaloperationexception :服务器上没有这样的对象
试图让一个组的所有成员。仅获得一个特定组的例外,能够获得具有相同代码的其他组的成员。
我正在尝试以下代码
该组包含600名成员,部分成员是跨域用户
c# - 从 SQL CLR 例程调用的 PrincipalContext 上出现错误 6522
我正在尝试将我的第一个 CLR 例程添加到 SQLServer 2008(将很快升级到 2014)。目标是向 Active Directory 添加一个用户对象,传入十几个属性值,以根据来自 ERP 接口的数据创建用户(接口工作正常,数据良好)。一位同事创建了一个包装 PrincipalContext 的紧凑 C# 类,实际上从另一个工作应用程序中获取了代码并对其进行了一些简化(见下文)。
我们能够打开 CLR,将 DB 设置为 TRUSTWORTHLY,等等,然后使用 UNSAFE 选项为他的代码及其所需资源执行 CREATE ASSEMBLY,因为该代码不是 Microsoft 审查的 .NET 类子集的一部分在 SQLServer 中运行:
(所有创建和后续的 ALTER 都运行良好,每当我们更改我在这里模糊的自定义类库 XXXXXXX_CLR 时,我们都会更改最后一个...... CLR 存储过程创建良好,并执行 OK,直到它尝试保存用户通过 PrincipalContext 对象。我们得到以下代码和错误消息。
我已经阅读了 50 个网页来寻找这个错误的答案;我们暂时让 SQLserver 以域管理员身份运行的用户(开发系统——我敢肯定这是糟糕的做法),从具有域管理员权限的登录 SQL 用户调用它,给定代码能够使用的域服务帐户传入显式 .NET AD 连接域管理员,将用户和密码选项从对 PrincipalContext 的调用中移除,以查看 SQLServer 的用户或调用用户的 privs 是否会控制它,在 PrincipalContext 构造函数调用中尝试不同的选项组合等.
.... 等剩余属性....我们已经使用 FIM 和其他 C# 中间件库调用多年,忽略细节...我们肯定有正确的 AD 属性覆盖在我们传入的参数中但我不想在这里暴露所有这些。
所以这是总是出现的错误消息(我知道它正在执行 C# CLR 代码,因为我在类库 CLR 中有其他属性验证问题要处理,它最终到了调用 PrincipalContext 并失败的地步那里):
我阅读了一些有关 Windows 身份“模拟”的内容,但我不明白为什么在所有涉及的服务都作为域管理员权限运行时,我什至无法让 AD 运行 PrincipalContext 调用。我知道我不能真正使用这种方法(安全非入门者),但想知道为什么它不起作用以及在这里尝试什么替代方法,这样我就可以找到一个可以用于生产实施的解决方案。在将运行它的服务帐户放入域管理员组 BTW 后,我确实退回了 SQLServer。
非常感谢您对这个冗长的问题的友好审查。
c# - 我如何仅将 PrincipalSearcher 中的 DisplayName 和 Name 分配给 List?
我有以下示例代码:
如何仅将 result.DisaplayName 和 result.Name 分配给结果列表?
您可以将 PrincipalSearcher 配置为仅拉回这两个值以开始
就像您可以使用 PowerShell 一样,即:
谢谢
c# - 使用目录服务从 Active Directory 域/AU 获取所有用户
我正确地创建了一个列表(结果),其中包含名称包含 James 的所有用户。
如何更改代码以使结果包含域/ou 中的所有用户?
如果我尝试像这样使用通配符返回所有结果,则列表结果为空: