Windows身份验证-如何使用代码拒绝用户

3
我的Windows身份验证在IIS7上工作,但现在我想根据我在SQL服务器中的数据拒绝特定用户。我知道我可以发送信息访问被拒绝,但我想向用户发送Windows登录表单以输入不同的凭据,这样IIS就可以验证新的凭据并将其发送给C#再次授权用户。
编辑-重新表述问题
我想同时使用基于Windows身份验证和基于数据库数据的身份验证。首先,我希望用户通过Windows身份验证进行身份验证,然后应用程序将对用户进行身份验证。但我的问题是,如果应用程序拒绝用户,则希望Windows身份验证对话框向用户显示以获取Windows凭据,以便从头开始启动该过程。

我理解的是,您不想使用Windows身份验证(域用户),而只想使用数据库中的数据来验证用户?还是两者混合使用? - Kai Hartmann
@ Kai Hartmann 我想要两者的混合。我想使用 Windows 身份验证验证用户,然后根据数据库中的数据进行身份验证,但是如果我拒绝一个用户,那么我希望浏览器要求不同的 Windows 凭据,并从头开始处理。 - Sabareesh Kkanan
嗯,这可能有所帮助:http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/ - Kai Hartmann
@Kai 我更倾向于不使用第三方模块进行身份验证。 - Sabareesh Kkanan
我同意,我认为这篇文章可能会提供一些解决问题的提示。但我认为这可能有所帮助:以下链接中的文章描述了如何在服务器端使用表单身份验证,并模拟域用户。该用户的凭据将与Windows系统进行检查。因此,它使用表单身份验证来使用域用户。http://visualstudiomagazine.com/articles/2004/05/01/activate-windows-impersonation-selectively.aspx - Kai Hartmann
@kai 我已经有了那个解决方案,但我认为可能有一种方法可以使用不同的凭据重复相同的过程。我的解决方案现在是使用LDAP查询进行Windows身份验证等。 - Sabareesh Kkanan
2个回答

0

如果您想使用数据库中的信息进行身份验证,您将需要使用表单认证。

  • 构建一个登录网页(在本示例中为login.aspx)
  • 将以下代码添加到您的web.config中,以指定登录页面并最初拒绝所有用户访问:

代码:

<authentication mode="Forms">
  <!-- Login.aspx is the login page forms authentication should use. -->
  <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="30" slidingExpiration="true" >
  </forms>
</authentication>
<authorization>
  <!-- deny all users access to ressources of this app, if not logged in. -->
  <deny users="?" />
</authorization>
  • 在您的登录页面中,调用以下代码以允许用户通过:

代码:

FormsAuthentication.SetAuthCookie("UserName", False)

我想要两者的混合。 - Sabareesh Kkanan

0

你可以采用的一种方法是创建自己的登录表单,并使用LDAP查询验证用户。

因此,最初它通过Windows身份验证对用户进行身份验证,如果其他条件不满足用户访问权限,则可以发送自己的登录表单并使用LDAP查询验证用户。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接