我是初学者,我尝试用 Java 为 Active Directory 实现客户端。到目前为止,我已经编写了以下代码:
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
public class NewUser {
public static void main(String[] args) {
NewUser user = new NewUser("aaa", "bbb", "ccc", "orgunit");
try {
System.out.print(user.addUser());
} catch (NamingException e) {
e.printStackTrace();
}
}
private static final String DOMAIN_NAME = "whatever";
private static final String DOMAIN_ROOT = "dc=xyz"; // ?
private static final String ADMIN_NAME = "CN=Administrator,CN=Users,DC=xyz,DC=xyz";
private static final String …Run Code Online (Sandbox Code Playgroud) 我正在尝试在同一活动目录 Group Managed Service Account 下运行 Windows 服务和 IIS 网站SomeServiceAccount。
我有 2 台服务器App和Web. 我创建了一个名为 的组SomeGroup,添加App并Web使用命令
Add-ADGroupMember "SomeGroup" -Members (Get-ADComputer "App")和Add-ADGroupMember "SomeGroup" -Members (Get-ADComputer "Web")
重新启动两台机器以确保它们是组的一部分
在域控制器上运行命令 New-ADServiceAccount -Name SomeServiceAccount -Enabled $true -DNSHostName domain-controller -PrincipalsAllowedToRetrieveManagedPassword "SomeGroup"
去了两台机器并跑了 Set-AdServiceAccount SomeServiceAccount
App使用用户SOMEDOMAIN\SomeServiceAccount$和无密码在机器上启动 Windows 服务,然后启动正常
去Web机器,分配应用程序池标识如上。点击网站,应用程序池停止。
在事件日志中有一个错误:
Application pool SomePool has been disabled. Windows Process Activation Service (WAS) encountered a failure when it started a …
asp.net iis powershell active-directory active-directory-group
我需要检查当前用户是否是活动目录组的成员.我开始将当前用户设置如下.现在我想知道如何检查此CurrentUser是否在活动目录组"CustomGroup"中
string CurrentUser = WindowsIdentity.GetCurrent().Name;
Run Code Online (Sandbox Code Playgroud) c# active-directory active-directory-group activedirectorymembership
我有一个带有嵌套组的活动目录(AD)测试实例:Employees(Parent)有两个子组:Executives和Engineers.
Tree:
Employees
|
-Executives
| |
| -Mister Executive
|
-Engineers
|
-Joe Engineer
Run Code Online (Sandbox Code Playgroud)
我看到AD扩展名LDAP_MATCHING_RULE_IN_CHAIN将搜索子树; 我可以搜索具有此查询的所有员工:
query:
( & (objectClass=person) (memberOf:1.2.840.113556.1.4.1941:=CN=Employees,CN=Users,DC=cloud,DC=com))
Run Code Online (Sandbox Code Playgroud)
问题:递归搜索,但没有递归结果
但是,我找不到获取"子树搜索结果"的方法,即当查询将"Mister Executive"作为"Employee"返回时,"memberOf"属性仅列出"Executives",即他直接所属的组.我检查了所有其他属性,但没有看到任何"员工"
概括
因此,为了最终澄清:AD是否允许以任何方式检索"subtree memberOf"结果以及"子树"LDAP_MATCHING_RULE_IN_CHAIN("memberOf:1.2.840.113556.1.4.1941:=")搜索
提前致谢,
active-directory active-directory-group activedirectorymembership
我正在尝试使用一种方法,该方法接受用户名,如果该用户是本地管理员(不是整个域,只是本地计算机),则返回 true,否则返回 false。我试图改变在 .NET/C# 测试中找到的技术,如果进程有管理权限可以工作,但它没有。我曾尝试使用 NetUserGetInfo 方式,但无法使其正常工作。现在我正在尝试使用 UserPrincipal。下面的代码是我所拥有的全部……主要只是测试基础知识是否有效并且它们确实有效。
PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
UserPrincipal usr = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userId);
if(usr == null)
{
Console.WriteLine("usr is null");
}
else
{
Console.WriteLine(usr.Enabled);
Console.WriteLine(usr.IsAccountLockedOut());
foreach (Principal p in usr.GetAuthorizationGroups())
{
Console.WriteLine(p.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
看起来我应该可以使用 isMemberOf 方法,但是如何为本地管理员创建一个组?或者有比 isMemberOf 方法更好的方法吗?
c# admin active-directory active-directory-group userprincipal
我有一个包含2列的csv,一列是AD组名,一列是用户帐户名.我正在尝试阅读csv并将用户导入其相应的组.
这是我到目前为止所要做的.它说两个参数(identity,member)都是null,这没有任何意义,因为标题是正确指定的.
import-module activedirectory
$list = import-csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv"
Foreach($user in $list){
add-adgroupmember -identity $_.Group -member $_.Accountname
}
Run Code Online (Sandbox Code Playgroud)
什么是csv文件中的什么
Group Accountname
group1 user1
group1 user2
group1 user3
group2 user4
group2 user5
group3 user6
group3 user7
group3 user8
group4 user9
group5 user10
Run Code Online (Sandbox Code Playgroud)
编辑命令和错误
这是我的脚本,错误我收到和csv.
Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups.csv" |
ForEach { get-aduser $_.Accountname | add-adgroupmember $_.Group}
Run Code Online (Sandbox Code Playgroud)



import powershell bulk active-directory active-directory-group
我想以编程方式允许 AD 中的给定安全主体(用户或组)对memberAD 组上的属性具有写入权限。
我假设它的形式如下:
$GroupObject = Get-ADGroup $group
$ACL = Get-ACL AD:$GroupObject
$ACE = New-Object System.Security.AccessControl.ActiveDirectoryAccessRule (
$manager,
...
)
$ACL.AddAccessRule($ACE)
Set-ACL -Path AD:$GroupObject -AclObject $ACL
Run Code Online (Sandbox Code Playgroud)
我找不到的是有关如何完成...这项工作还需要做什么的文档。即使是手动进行潜水并检查生成的 ACL 对象也被证明是困难的!
下面的代码完美*如果我将光标限制为几个组,但如果我让它在我的整个域上运行,我在AD中遇到1000个记录限制.关于如何获得此分页的任何想法?
*完美是因为它应该只返回数量低于1000记录限制的有限数量的记录.
CREATE TABLE #MemberOfGroups
(
groupName VARCHAR (400),
cn VARCHAR (400),
displayName VARCHAR (400)
);
SET NOCOUNT ON;
DECLARE @t AS VARCHAR (100),
@t2 AS VARCHAR (1000),
@ot AS VARCHAR (4000),
@tt AS VARCHAR (4000);
DECLARE gC CURSOR
FOR SELECT cn,
distinguishedName
FROM OPENQUERY (ADSI, 'SELECT cn, distinguishedName
FROM ''LDAP://DC=coal,DC=local''
WHERE objectCategory = ''group''');
OPEN gC;
FETCH NEXT FROM gC INTO @t, @t2;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ot = '''SELECT cn, displayName
FROM ''''LDAP://DC=coal,DC=local''''
WHERE objectCategory = …Run Code Online (Sandbox Code Playgroud) sql t-sql sql-server active-directory active-directory-group
为什么Principal.IsMemberOf(GroupPrincipal)(MSDN)Domain Computers在以下测试中为组返回假阴性?
[TestMethod]
public void DomainComputerTest()
{
var distinguishedName = "CN=MyMachine,DC=SomeDomain,DC=local";
using( var pc = new PrincipalContext( ContextType.Domain, "SomeDomain.local", "UserName", "Password" ) )
using( var computer = ComputerPrincipal.FindByIdentity( pc, IdentityType.DistinguishedName, distinguishedName ) )
{
Assert.IsNotNull( computer );
// Get the groups for the computer.
var groups = computer.GetGroups().Cast<GroupPrincipal>();
foreach( var group in groups )
{
// Immediately turn around and test that the computer is a member of the groups it returned.
Assert.IsTrue( computer.IsMemberOf( …Run Code Online (Sandbox Code Playgroud) 我尝试从我的机器验证属于远程ActiveDirectory的用户,该机器与当前机器或用户域不是同一个域.我的机器和远程ActiveDirectory机器之间不会有任何信任.
初步尝试
我试图验证用户(输入:sAMAccountName,机器的ipaddress,机器的域用户名("管理员")和机器的密码(***).能够获得具有'sAMAccountName'的用户确实存在于ActiveDirectory中的结果.
我的要求:
想象一下,已经在ActiveDirectory中创建了一个用户("qwerty")
从我的本地机器,我将有以下信息,
一个.远程ActiveDirectory ipaddress
湾 远程ActiveDirectory机器的用户名和密码.
C.用户"qwerty"的用户名和密码
我需要检查用户"qwerty"是否存在于远程ActiveDirectory的用户列表中,并验证在ActiveDirectory的用户列表中输入的密码是否相同
我试过的代码:
DirectoryEntry entry = new DirectoryEntry("LDAP://ipaddress/DC=dinesh,DC=com", name, password);
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "(sAMAccountName=" + name + ")";
try
{
SearchResult adsSearchResult = adsSearcher.FindOne();
isValid = true;
adsEntry.Close();
}
catch (Exception ex)
{
adsEntry.Close();
}
Run Code Online (Sandbox Code Playgroud)
在验证远程ActiveDirectory中的用户之前,是否需要在本地计算机和远程ActiveDirectory计算机之间创建信任?如果是,请说明如何完成;
创建信任后,如何验证用户?
================================================== =========================
我可以使用Rainer建议的解决方案,但遇到了一个新问题.当我通过来自不同计算机的C#代码创建新用户时,某些属性未正确设置.
这是否需要在创建用户时强制设置?
active-directory ×10
c# ×4
powershell ×3
acl ×1
admin ×1
asp.net ×1
bulk ×1
client ×1
iis ×1
import ×1
java ×1
ldap ×1
sql ×1
sql-server ×1
t-sql ×1