65.9K
CodeProject 正在变化。 阅读更多。
Home

IIS 级别的身份验证

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.38/5 (7投票s)

2011年9月6日

CPOL

2分钟阅读

viewsIcon

21863

这篇文章讨论了在 IIS 中可以进行的身份验证过程。

引言

这篇文章基本上解释了如何在 IIS 级别进行身份验证。

背景

这一切源于我面试了一个经验相当丰富的家伙,我注意到许多有经验的人缺乏所谓的“基础”。 我记得问他这个问题:“我想在请求到达页面之前就验证用户是否为有效用户,我不想使用 Forms 或 Windows 身份验证”。 我得到的答案很糟糕——候选人回答说可以在 page_loadpage_init 中进行检查。

解释

在我的文章 http://bloggingbunk.com/2011/07/net-in-depth-understanding-request-life-cycle/ 中,我讨论了两个主要元素

  1. HttpModule
  2. HttpHandler

对于任何请求,IIS 首先调用 HttpModule,然后是 HttpHandler,然后是 Page,最后再次调用 HttpModule

在你的项目中,在设计 asp 页面时,创建一个继承 iHttpModule 的类。 这个类将实现 HttpModule 的所有方法。 现在在 BeginRequest 中放置你的身份验证代码。 例如,假设你的项目将重要数据存储在 cookie 中;将 cookie 信息与请求一起发送。下图描述了你的请求将如何获取页面。管道代表 HttpModuleHttpHandler

AuthenticationatIIS.jpg

现在,你看到的这些检查可以是调用数据库或任何身份验证系统,甚至可以调用访问控制策略例程。

由于 HttpModules 非常方便,我们可以在请求到达页面之前做任何事情。

这说明了,在页面生命周期完成之后,HttpModule 也可以帮助我们在 EndRequest 下进行任何操作;它可以是响应的检查或任何其他操作。

如果你可以利用 HttpModuleBeginRequestAuthoriseRequestEndRequest 以及 HttpHandlerProcessRequest,你可以拥有更多的安全性。

结论

基本上,总结一下——这种方法优雅地承载了我们的管道模式。 希望你理解了 IIS 级别的身份验证。 请将你的问题作为评论提出,我会回复。

© . All rights reserved.