在C#中,如何在网络计算机上对用户进行身份验证?例如,我想从与网络连接的另一台机器在机器上testuser使用密码验证用户.例如,我在,我想验证与上.testpasswordEXAMPLEMACHINEEXAMPLEMACHINEMYMACHINEtestusertestpasswordEXAMPLEMACHINE
我尝试了以下但它一直告诉我,LDAP服务器不可用:
PrincipalContext context =
new PrincipalContext(ContextType.Domain, exampleMachineDomain);
return context.ValidateCredentials(username, password);
Run Code Online (Sandbox Code Playgroud) 我有一些代码使用PrincipalContext对象,并将特定的用户名和密码传递给其构造函数以绑定到Active Directory.
然后进行调用.ValidateCredentials()为正在验证的用户传递不同的用户名和密码.
我的问题是,为了让第一个用户在Active Directory中绑定,Active Directory中需要哪些权限?
我有2个应用程序,一个是表单身份验证,看起来像这样:
<authentication mode="Forms">
<forms loginUrl="~/Login"></forms>
</authentication>
public class LoginController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult LoginCheck()
{
string username = Request.Form["username"];
FormsAuthentication.RedirectFromLoginPage(username, true);
return RedirectToAction("Index", "Home");
}
}
Run Code Online (Sandbox Code Playgroud)
另一个应用程序是空的但使用Windows身份验证:
<authentication mode="Windows" />
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Title = "Home Page";
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是以下内容:
用户在表单身份验证应用程序中填写用户名和密码,然后单击"提交"
LoginCheck方法获取用户名和密码,并针对Windows身份验证应用程序进行身份验证
我希望我从Windows身份验证应用程序得到回复,说是这个用户名和密码是正确的,继续或不是他们不工作
我是否正确地想要完成什么?我的问题是我不知道如何完成第2部分,如果有人可以帮助我,这将是惊人的或指向我正确的方向.
c# asp.net authentication forms-authentication windows-authentication
我有一个前端,允许用户更改它的AD密码.
有没有办法获得特定用户的密码策略(例如细粒度)及其属性(长度,复杂性......)
有没有办法检查字符串"xyz121"对这个特定的政策?
编辑:我不想检查存储在活动目录中的当前密码.我想检查新密码是否可以安全进入活动目录.例如:用户在他的新密码"xyz121"中键入并想要更改它,但是活动目录只允许密码至少有8个字符.
我有一个具有登录表单的WPF应用程序.我想让所有属于某个特定组的现有Windows用户能够登录我的应用程序.
所以我需要的是用户提供用户名和密码以查看是否属于所需组的用户,以及密码是否正确之后的方式.我可以用来决定用户是否登录的反馈.
在MVC中执行Action之前,如何强制用户重新进行身份验证?
我们正在使用Windows身份验证.我们希望确保某些操作由用户执行(如果用户忘记锁定其工作站,则阻止其他用户执行这些操作).
理想情况下,我只能编写一个扩展的属性Authorize:
namespace AuthTest.Controllers
{
[Authorize(Roles="MyApp")]
public class HomeController : Controller
{
public ActionResult Index()
{
// A regular action
return View();
}
[ReAuthenticate]
public ActionResult CriticalAction()
{
// Do something important
return View();
}
}
}
Run Code Online (Sandbox Code Playgroud)
看来我可以通过让自定义ReAuthenticate属性HTTP 401在AuthorizeCore方法中发出响应来强制用户重新输入其凭据.但是,这需要一些技巧,因为Html.ActionLink发送了两个请求:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool ok = base.AuthorizeCore(httpContext);
if (!ok) return false;
if (httpContext.Session["ReAuthCnt"] == null)
{
httpContext.Session["ReAuthCnt"] = 1;
return false;
}
else if ((int) httpContext.Session["ReAuthCnt"] < …Run Code Online (Sandbox Code Playgroud) authentication asp.net-mvc windows-authentication asp.net-mvc-4
我正在尝试根据提供的用户名和密码对本地用户进行身份验证。我遇到了这个线程:针对 Active Directory 验证用户名和密码?
这是我验证用户的方式:
PrincipalContext pc = new PrincipalContext(ContextType.Machine);
bool isValid = pc.ValidateCredentials(user, pass);
Run Code Online (Sandbox Code Playgroud)
只要我在网络上它就可以工作,但是如果我断开计算机的连接,它会给我:
找不到网络路径。
我要做的就是在本地机器上进行验证,该机器可能是网络的一部分,也可能不是网络的一部分。
编辑:UserPrincipal.FindByIdentity 似乎在没有 AD 的情况下仍然有效,是 pc.ValidateCredentials 给我带来了麻烦。
我在弄清楚如何在我的IdentityServer4实现中实现自定义身份验证时遇到麻烦,该身份验证将针对活动目录进行身份验证。注意:我需要根据我公司的活动目录服务器进行身份验证,它不是azure活动目录。
我不清楚我是否需要创建一些新的中间件并在ASP.NET Core服务器中使用IApplicationBuilder将其添加,或者是否需要向IdentityServer本身添加一些东西。
我找到了另一个链接,该链接描述了如何与活动目录集成,但是它创建了IUserService接口的实现,并且似乎适用于IdentityServer的早期版本,因为我认为IdentityServer4中不存在IUserService。
任何帮助表示赞赏。
我知道这有一个简单的解决方案,但我似乎无法使其工作......
使用其他Stack Overflow答案和Microsoft的文档,我知道PrincipalContext必须设置如下:
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");
Run Code Online (Sandbox Code Playgroud)
或者像这样:
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain,"YOURDOMAIN", null,ContextOptions.Negotiate | ContextOptions.SecureSocketLayer);
Run Code Online (Sandbox Code Playgroud)
我的问题是,"YOURDOMAIN"如果我连接到本地主机,我会为该属性添加什么?
尝试这个结束于PrincipalServerDownException:
PrincipalContext pc = new PrincipalContext(ContextType.Domain, "localhost:3600")
Run Code Online (Sandbox Code Playgroud) 我需要针对VBScript中的给定域测试用户名和密码对.该脚本将知道它需要检查访问权限的用户名,密码和域,并且我需要返回的是关于帐户是否有效的真或假.
任何人都可以建议一个很好的方法来完成这个 谢谢!
我有活动目录的用户名和密码,我想使用 C# 登录活动目录。我如何在 Windows 窗体中执行此操作?
我使用以下代码来验证AD用户
string strLDAP = "LDAP://dc=ADServerIP/cn=Users,DC=Domain;
DirectoryEntry entry = new DirectoryEntry(strLDAP, usr, pwd);
object nativeObject = entry.NativeObject;
return true;
Run Code Online (Sandbox Code Playgroud)
执行时我收到以下异常
object nativeObject = entry.NativeObject;
Run Code Online (Sandbox Code Playgroud)
System.Runtime.InteropServices.COMException(0x80005000): 位于System.DirectoryServices.DirectoryEntry.get_NativeObject() 的System.DirectoryServices.DirectoryEntry.Bind()的
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
中的未知错误(0x80005000
)
相同的代码适用于另一台AD服务器.可能是什么问题?