我有一个使用表单身份验证的asp.net mvc应用程序,即用户/密码在数据库中。这个应用程序被他们自己的服务器上的几个客户使用,并且他们希望他们的员工按照Intranet自动登录,因为显然必须登录会阻止他们使用它!?!
我相信你不能混合使用Windows和Forms身份验证,所以我的问题是,无论如何都要识别windows / ad用户名或其他任何东西,以便我可以手动验证它们吗?我不需要通过Windows实际验证它们我只需要以某种方式获取信息,这将允许我将它们与数据库中的记录相匹配。
答案 0 :(得分:0)
我做过类似的事情。 您需要配置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' ";