MVC Web App(C#)のActive Directoryで資格情報を検証しようとしています。回答を検索する際に、私はNotImplementedExceptionsやその他の不思議なことに気付きました。 私が試したことや失敗したことの(包括的でない)リストです。Active Directoryに対するログイン検証C# - Visual Studio for Mac
まず、このコード:
string domainAndUsername = domain + @"\" + username;
DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, pwd);
try
{
//Bind to the native AdsObject to force authentication.
// This line throws a not implemented exception
object obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry)
{
Filter = "(SAMAccountName=" + username + ")"
};
search.PropertiesToLoad.Add("cn");
Console.WriteLine(search.ToString());
SearchResult result = search.FindOne();
//Debug.WriteLine(result.ToString());
if (null == result)
{
return false;
}
//Update the new path to the user in the directory.
_path = result.Path;
_filterAttribute = (string)result.Properties["cn"][0];
}
catch (Exception ex)
{
throw new Exception("Error authenticating user. " + ex.Message);
}
return true;
はラインobject obj = entry.NativeObject
は、私は(obj
は他の場所で使用されることはありませんので)行をコメントアウトしようとしたが、無駄にしましたNotImplementedException
をスローします。私は非常に似たようなコードの他のバリエーションも試しました。同じ考えの
var creds = new NetworkCredential(username, password);
var srvid = new LdapDirectoryIdentifier(adPath);
// This line throws a NotImplementedException
var conn = new LdapConnection(srvid, creds);
try
{
conn.Bind();
}
catch (Exception)
{
return false;
}
conn.Dispose();
return true;
そして、他のバリエーション:私が試み
他のルートは、このコードでした。ラインはvar conn = new LdapConnection(srvid, creds);
がNotImplementedException
を投げる最後に、私はシンプルなルートを行って、これは、Web APIで、私は、コントローラを使用しておりますので
Membership.ValidateUser(model.username, model.password)
を使用しました。これにはWeb.config available hereのコードが必要です。それもNotImplementedException
を投げます。
これらの3つの一般的な方法はすべて、VS for Macでまだ実装されていない同じ基本機能に依存していますか?それとも私は行方不明のものがありますか?誰かが提供できる回避策がある場合でも、それは非常によく評価されるでしょう。
ありがとうございます!
この段階では、Novell Ldapライブラリ経由で手動で達成することができます。 Microsoftはクロスプラットフォームの 'System.DirectoryServices'を開発中です。NET Coreを使用していますが、それがMonoへの適用範囲を拡張するかどうかは不明です。 –
この質問/回答は役に立ちました: https://stackoverflow.com/questions/37330705/working-with-directoryservices-in-asp-net-core – bnem
コメントありがとうございました。私は今Novell.Directory.Ldapを試しています。私は、正しい方向に一歩を踏み出すことになる 'Invalid Credentials'エラーを受けています。 – rtherman