自动登录基于Windows用户名的表单认证MVC应用程序,可能的

本文关键字:认证 表单 MVC 应用程序 登录 用户 Windows | 更新日期: 2023-09-27 18:03:19

我有一个使用表单身份验证的asp.net mvc应用程序,即用户/密码在数据库中。这个应用程序被几个客户在他们自己的服务器上使用,一个客户希望他们的员工按照内部网自动登录,因为显然必须登录会阻止他们使用它!

我敢肯定你不能混合Windows和窗体身份验证,所以我的问题是,无论如何要识别Windows/ad用户名或其他任何方式,所以我可以手动验证他们?我不需要通过windows验证它们,我只需要以某种方式获得信息,使我能够将它们与数据库中的记录相匹配。

自动登录基于Windows用户名的表单认证MVC应用程序,可能的

我也做过类似的事情。您需要配置IIS以启用Windows身份验证。如果他们的AD帐户匹配他们的web应用程序的标识(或者只是在您的表单身份验证数据库中添加一列AD id),您可以从他们的用户名中删除域,然后根据您的身份验证数据库验证它。

我有一个人力资源数据库,我们用它来跟踪员工和他们的头衔,基于这个数据库中包含的数据,我们在整个应用程序中允许某些特权:

我们的公司仍然在活动目录2003上,所以如果没有找到一个创造性的解决方案,就不可能管理凭据。

下面是我的代码://找出谁是Active Directory用户var username = Convert.ToString(User.Identity.Name);
    // strip the domain
    username = Regex.Replace(username, "DOMAIN", "");
    username = Regex.Replace(username, "''''", "");

    var first_initial = username[0];
    var last_initial = username[1];
    //The Ative directory structure is [first initial firstname][first inital lastname][badge number]
    var EIN = Regex.Replace(username, "[^0-9]", "");//get the badge number so we can query the badging database

    // check the employee database to see if this AD account matches something 
    var query = "SELECT BadgeNumber, FirstName, LastName,  DEPT_NUM, DEPT, TITLE, Supervisor " +
                     "FROM TABLE_WITH EMPLOYEE INFORMATION " +
                     "WHERE LEFT(FirstName, 1) = '" + first_initial + "' AND LEFT(LastName, 1) = '" + last_initial + "' AND BadgeNumber = '" + EIN + "' AND STATUS = 'Active' ";