我有一个在Novell网络上运行的WinForms客户端 - 服务器应用程序,当连接到网络上的单独Windows 2003 Server时会产生以下错误:
TYPE: System.IO.IOException
MSG: Logon failure: unknown user name or bad password.
SOURCE: mscorlib
SITE: WinIOError
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalGetFileDirectoryNames(String path,
String userPathOriginal, String searchPattern, Boolean includeFiles,
Boolean includeDirs, SearchOption searchOption)
at System.IO.DirectoryInfo.GetFiles(String searchPattern,
SearchOption searchOption)
at System.IO.DirectoryInfo.GetFiles(String searchPattern)
at Ceoimage.Basecamp.DocumentServers.ClientAccessServer.SendQueuedFiles(
Int32 queueId, Int32 userId, IDocQueueFile[] queueFiles)
at Ceoimage.Basecamp.ScanDocuments.DataModule.CommitDocumentToQueue(
QueuedDocumentModelWithCollections doc, IDocQueueFile[] files)
Run Code Online (Sandbox Code Playgroud)
客户的网络管理员通过手动将工作站用户名和密码与服务器上的本地用户同步来管理Windows Server连接.关于错误的奇怪之处在于用户可以在错误之前和之后写入服务器,所有这些都没有明确登录.
你能解释一下错误发生的原因并提供解决方案吗?
我想在Windows操作系统上使用任何目录服务验证我的应用程序的用户名和密码.例如,它可以是microsoft active directory,Novell eDirecotry或SunOne.我已经知道如何使用c#本地为Microsoft Active Direcotry执行此代码.(我完全放弃使用ADSI并创建一个低级别的com组件)
尝试使用Novel eDirecotory进行身份验证的方式是我安装了Mono项目.在单声道项目中,它们为您提供Novell.Directory.ldap.dll代码看起来与Microsoft Active Directory相同.(http://www.novell.com/coolsolutions/feature/11204.html)
对于SunOne,我被告知使用与活动目录相同的代码,但是ldap connecton字符串有点不同.(http://forums.asp.net/t/354314.aspx)(http:// technet. microsoft.com/en-us/library/cc720649.aspx)
为了使我的项目复杂化,大多数客户使用"服务帐户:",这意味着我需要使用管理用户名和密码绑定,然后才能验证常规用户名和密码.我的问题分为两部分.
1)根据我上面所解释的,这是我应该针对每个单独的服务进行身份验证的正确方向吗?
2)我觉得我根本不需要做任何这些代码.我也觉得使用服务帐户的规定并不重要.如果我关心的是在Windows机器上验证用户名和密码,为什么我甚至需要使用ldap?我想说的是,考虑一下.当您在早上登录计算机时,您无需提供服务帐户即可登录.我可以通过使用runas功能在DOS提示符下轻松验证用户名和密码,我将被拒绝或无法解析文本文件.我确定还有其他方法可以将用户名和密码传递给我所使用的Windows操作系统,并告诉我用户名和密码是否对其所在的域有效.我对吗?如果是这样,你们有什么建议的方式?
Michael Evanchik www.MikeEvanchik.com
我正在尝试连接到运行LDAP的edirectory 8.8服务器.我将如何在.Net中这样做呢?我是否仍然可以使用System.DirectoryService中的类,例如DirectoryEntry和DirectorySearcher,或者它们是AD特定的吗?我是否需要以不同方式指定"连接字符串"?
我正在尝试类似下面的代码,但它似乎不起作用......
DirectoryEntry de = new DirectoryEntry ("LDAP://novellBox.sample.com","admin","password",AuthenticationTypes.None);
DirectorySearcher ds = new DirectorySearcher(de);
var test = ds.FindAll();
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在尝试使用Novell发布的库(Novell.Directory.Ldap).版本2.1.10.
到目前为止我做了什么:
我测试了与应用程序(LdapBrowser)的连接并且它正在工作,因此它不是通信问题.
它是用Mono编译的,但我正在使用Visual Studio.所以用源创建了一个项目.我还提到了对Mono.Security的引用,因为该项目取决于它.
我在连接的错误捕获部分中评论了一个调用(freeWriteSemaphore(semId);),因为它抛出了更多异常.我检查了那个调用做了什么,它只是一个错误跟踪机制.
我按照Novell(http://www.novell.com/coolsolutions/feature/11204.html)文档中提供的基本步骤进行操作.
//创建LdapConnection实例
LdapConnection ldapConn = new LdapConnection(); ldapConn.SecureSocketLayer = ldapPort == 636;
// Connect函数将创建与服务器的套接字连接
ldapConn.Connect(ldapHost,ldapPort);
//绑定功能将用户对象凭据绑定到服务器
ldapConn.Bind(用户DN,userPasswd);
现在它正在崩溃Bind()函数.我收到错误91.
那么,有人曾经使用过这个库并看到它有效吗?如果是这样,你做了什么让它工作,是否需要一些特殊的配置?有没有办法让它在没有Mono的.NET环境中工作(我可以引用Mono dll,但我不希望它安装在服务器上)?
(更新)连接在端口636上,因此使用SSL.我查看了WireShark的通信,并与我从LDAP浏览器中获得的内容进行了比较.我已经看到,SSL证书的通信步骤不是由LDAP库完成的.那么,让它做到它应该做的最好的方法是什么?
(更新)我检查了文档,它表明它不支持SSL.http://www.novell.com/coolsolutions/feature/11204.html
使用LdapConnection.Bind()对LDAP服务器进行身份验证.我们仅支持明文身份验证.尚未添加SSL/TLS支持.
但是文档的日期是2004年,从那时起,已经进行了许多更新.并且库中有一个参数来定义连接是否使用SSL.所以现在我很困惑.
(更新)找到了更新的文档:http://developer.novell.com/documentation//ldapcsharp/index.html?page = / documentation //ldapcsharp/cnet/data/bqwa5p0.html.建立SSL连接的方式是在服务器上注册证书.问题是我正在做的事情并没有绑定到特定的Novell服务器,因此必须动态获取证书.
我在.NET/MSSQL商店工作,这个商店在支持运行Novell的客户方面遇到了麻烦,部分原因是因为我们没有Novell(或其中的钱),部分原因是我们没有Novell经验.这个问题可以很容易地扩展到"当我们没有X技术时,我们如何才能提高对技术X的支持?" 显然,我希望有人说"获取技术或者有经验的人很容易",但请记住,我只是一名开发人员,而不是开发经理或掌管钱包的人.我找了一个Novell服务器虚拟设备(虽然我不确定"Novell服务器"是我应该寻找的)但在VMware的网站上找不到多少.
我在一个胖客户端应用程序上工作,该应用程序经常遇到访问网络共享的"问题".在使用服务器执行任何IO之前,我的应用程序会测试共享(通常是形式为\\ server\share $)是否存在.这适用于检测客户端已失去与服务器的连接的那些场景,但仍存在隐藏共享存在但用户无权从共享内部读取的奇怪场景.有人可以分享(没有双关语)测试当前用户是否可以读取共享文件所需的C#代码吗?我应该查询共享的ACL还是共享中的文件?如果份额是空的怎么办?如果用户是混合环境中的本地非管理员(XP Pro工作站,Novell网络上没有域的Windows 2003服务器),该怎么办?
首先,我无法使用Active Directory,因此无法System.DirectoryServices
直接使用。这将是一台向仅System.DirectoryServices.Protocol
受支持的 Novell 网络发送查询的 PC。
我非常确定我需要提供正确的 SearchRequest。
这是我到目前为止所拥有的:
private static String _certificatePath;
private static String _server;
private static SearchResponse Query(String user, String pwd, out String error)
{
SearchResponse result = null;
error = String.Empty;
if (File.Exists(_certificatePath))
{
var identifier = new LdapDirectoryIdentifier(_server, false, false);
try
{
using (var connection = new LdapConnection(identifier))
{
connection.SessionOptions.ProtocolVersion = 3;
var cert = new X509Certificate();
cert.Import(_certificatePath, null, X509KeyStorageFlags.DefaultKeySet);
connection.ClientCertificates.Add(cert);
connection.AuthType = AuthType.External;
connection.AutoBind = false;
var request = …
Run Code Online (Sandbox Code Playgroud) 我想在MonoTouch和Mono For Android项目中使用Novell.Directory.Ldap库. http://www.novell.com/coolsolutions/feature/11204.html
当我在iOS模拟器modus中编译我的项目时,它编译没有错误并正确运行(在iOS模拟器中).
当我在iOS设备模式中编译我的项目(用物理设备测试应用程序)时,我收到此错误:
Error MT2002: Failed to resolve "System.Void System.Security.Cryptography.RNGCryptoServiceProvider::.ctor(System.Byte[])" reference from "mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" (MT2002) (MyProject)
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?我找不到解决方案.
该库是否适用于MonoTouch和Mono For Android?Mono有更好的LDAP解决方案吗?
更新:我刚用Mono For Android进行了测试.这很好用.
我知道Mono是什么,但我不明白为什么它存在.为什么Novell赞助该项目?我问这个问题是因为我想使用Mono,但我担心它的未来/承诺.如果我更好地理解为什么项目存在,我会更好地使用/推荐它.
我正在使用活动目录,并想要所有用户的列表,基本上在dotnet核心中。但我收到一个例外:
收到搜索结果参考,并且关闭了参考链接
下面是我的代码。
LdapSearchResults lsc = lc.Search("DC = xyz, DC = local", LdapConnection.SCOPE_ONE , "(|(objectClass = person)(objectClass = user))", null, false);
Run Code Online (Sandbox Code Playgroud) 这是我第一次使用LDAP和Active Directory。我必须使用.NetCore制作一个必须通过ActiveDirectory进行身份验证的Web api(WindowsServer 2008 r2),我正在遵循Novell.Directory.Ldap.NETStandard中的示例, 但是我不明白我必须设置参数的方式。这是我在ActiveDirectory Server中创建的用户:
在Novell的样本中
if (args.Length != 5)
{
System.Console.Out.WriteLine("Usage: mono VerifyPassword <host name>" + " <login dn> <password> <object dn>\n" + " <test password>");
System.Console.Out.WriteLine("Example: mono VerifyPassword Acme.com " + "\"cn=Admin,o=Acme\" secret\n" + " \"cn=JSmith,ou=Sales,o=Acme\" testPassword");
System.Environment.Exit(0);
}
int ldapPort = LdapConnection.DEFAULT_PORT;
int ldapVersion = LdapConnection.Ldap_V3;
System.String ldapHost = args[0];
System.String loginDN = args[1];
System.String password = args[2];
System.String objectDN = args[3];
System.String testPassword = args[4];
LdapConnection conn = new LdapConnection();
try
{ …
Run Code Online (Sandbox Code Playgroud) novell ×11
c# ×7
ldap ×5
.net ×4
mono ×2
windows ×2
.net-core ×1
acl ×1
edirectory ×1
ioexception ×1
networking ×1
sql-server ×1
vmware ×1
xamarin.ios ×1