WEB开发网
开发学院数据库MSSQL Server 使用一次性密码解决方案更安全地验证身份 阅读

使用一次性密码解决方案更安全地验证身份

 2009-02-09 10:20:21 来源:WEB开发网   
核心提示: IIS HTTP OTP 插件模块是该网站的一个组件,该模块与 IIS 交互,使用一次性密码解决方案更安全地验证身份(6),并将用户重定向到可在其中输入用户名和 OTP 的 Web 窗体,当用户提交用户名和 OTP 时,存在以下两种可能的状态:该请求是应处理的 OTP 身份验证请求,或者该

IIS HTTP OTP 插件模块是该网站的一个组件。该模块与 IIS 交互,并将用户重定向到可在其中输入用户名和 OTP 的 Web 窗体。当用户提交用户名和 OTP 时,该模块会检验输入并将用户重定向到相应的成功或失败页面。该模块还会将用户的身份验证状态与用户会话关联起来。

为实现可维护性和可支持性,我希望能够对该模块进行管理,因此我使用 C# 来编写该模块。插件模块是身份验证 Web 服务(稍后我将进行介绍)的客户端。

OTP 模块实现了 IHttpModule 接口。实际上,该模块非常简单,仅包括三个公共方法。第一个是 Init,如下所示:

public void Init(HttpApplication application)
{
 application.BeginRequest += new EventHandler(application_BeginRequest);
}

如您所见,该模块使用此方法来注册 BeginRequest 处理程序 application_BeginRequest。OTP BeginRequest 处理程序的目的是确保所有 HTTP 请求均来自通过身份验证的用户。具体实现方式为使用以下几个帮助函数:一个函数用于确定调用方是否已通过身份验证,还有几个函数用于在调用方尚未通过身份验证时对其执行身份验证。还有一点值得一提:在 BeginRequest 事件过程中截取请求的方式不会遵循 ASP.NET 应用程序所使用的标准身份验证模式。但是,如果不希望其他模块看到此请求(甚至是那些设计为在进行身份验证之前截取请求的模块),则建议使用此方法。

IsAuthenticated 帮助函数将确定请求是否指明需要一个已通过身份验证的用户。实现方法是:使用 System.Web 命名空间中的 HttpContext、HttpCookie 和 Security.FormsAuthenticationTicket 类来检查应用程序上下文中是否包含正确加密的身份验证 cookie。如果存在 cookie 并且能够正确解密,则认为调用方已通过身份验证。否则,存在以下两种可能的状态:该请求是应处理的 OTP 身份验证请求,或者该 Web 客户端请求无效(未通过身份验证),这时会显示登录窗体。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 一次性 密码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接