如何通过 Razor 使用 ASP.NET 网页对 Active Directory 进行身份验证?
How do I authenticate against Active Directory using ASP.NET Web Pages with Razor?
我正在寻找一个使用 Razor 语法的示例,该示例将放入 ASP.NET 网页的 cshtml 文件中。我正在寻找的解决方案将排除在 Visual Studio 中编写 C# class。我们的项目不是 MVC 项目,而是 Web Pages 项目。
我需要提示用户输入内联网 Web 应用程序的用户名和密码,并使用 LDAP 查询针对 Active Directory 对他们进行身份验证。
我希望 Web Matrix 中有一个我忽略的内置帮助器,例如(例如,像 WebSecurity 帮助器,但我不查询数据库,而是查询 AD 服务器)。
知道了。在 Web Matrix 中,打开 NuGet 包管理器并安装 Novell.Directory.Ldap 包。这是一个用法示例:
@using Novell.Directory.Ldap;
@{
Validation.RequireField("username", "username is required");
Validation.RequireField("password", "password is required");
var username = "";
var userdn = "";
var domain = "domain.com";
var pwd = "";
var error = "";
if (IsPost) {
if (Validation.IsValid()) {
username = Request["username"];
userdn = "cn=" + username + ",ou=Users,o=INTRANET";
pwd = Request["password"];
try {
LdapConnection ldapConnection = new LdapConnection();
ldapConnection.Connect(domain, 389);
ldapConnection.Bind(userdn, pwd);
}
catch (LdapException e) {
error = e.LdapErrorMessage;
}
}
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Hello LDAP Page</title>
</head>
<body>
<h1>Hello LDAP Page</h1>
@if (IsPost) {
if (error.IsEmpty()) {
<p>'@username' was successfully authenticated against <i>@domain</i>!</p>
}
else {
<p>error! @error</p>
}
}
else {
@Html.ValidationSummary()
<form method="post">
<fieldset>
<legend>Login</legend>
<p><label for="username">Username:</label>
<input type="text" name="username" value="" />
@Html.ValidationMessage("title")</p>
<p><label for="password">Password:</label>
<input type="password" name="password" value="" />
@Html.ValidationMessage("password")</p>
<p><input type="submit" name="buttonSubmit" value="Login" /></p>
</fieldset>
</form>
}
</body>
</html>
我正在寻找一个使用 Razor 语法的示例,该示例将放入 ASP.NET 网页的 cshtml 文件中。我正在寻找的解决方案将排除在 Visual Studio 中编写 C# class。我们的项目不是 MVC 项目,而是 Web Pages 项目。
我需要提示用户输入内联网 Web 应用程序的用户名和密码,并使用 LDAP 查询针对 Active Directory 对他们进行身份验证。
我希望 Web Matrix 中有一个我忽略的内置帮助器,例如(例如,像 WebSecurity 帮助器,但我不查询数据库,而是查询 AD 服务器)。
知道了。在 Web Matrix 中,打开 NuGet 包管理器并安装 Novell.Directory.Ldap 包。这是一个用法示例:
@using Novell.Directory.Ldap;
@{
Validation.RequireField("username", "username is required");
Validation.RequireField("password", "password is required");
var username = "";
var userdn = "";
var domain = "domain.com";
var pwd = "";
var error = "";
if (IsPost) {
if (Validation.IsValid()) {
username = Request["username"];
userdn = "cn=" + username + ",ou=Users,o=INTRANET";
pwd = Request["password"];
try {
LdapConnection ldapConnection = new LdapConnection();
ldapConnection.Connect(domain, 389);
ldapConnection.Bind(userdn, pwd);
}
catch (LdapException e) {
error = e.LdapErrorMessage;
}
}
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Hello LDAP Page</title>
</head>
<body>
<h1>Hello LDAP Page</h1>
@if (IsPost) {
if (error.IsEmpty()) {
<p>'@username' was successfully authenticated against <i>@domain</i>!</p>
}
else {
<p>error! @error</p>
}
}
else {
@Html.ValidationSummary()
<form method="post">
<fieldset>
<legend>Login</legend>
<p><label for="username">Username:</label>
<input type="text" name="username" value="" />
@Html.ValidationMessage("title")</p>
<p><label for="password">Password:</label>
<input type="password" name="password" value="" />
@Html.ValidationMessage("password")</p>
<p><input type="submit" name="buttonSubmit" value="Login" /></p>
</fieldset>
</form>
}
</body>
</html>