1、 ASP. NET 中认证安全特征评述 Narcisio Tumushabe ,谭冠正 (音译 ) (中南大学计算机科学与信息技术学院 , 湖南长沙 410083) 摘 要 : 讨论了服务应用时支持安全的 ASP. NET 认证特征 ,微软的互联网信息服务 ( IIS) 和 ASP.NET 提供了安全模式 ,使 Web 开发者恰当地认证其使用者 ,并在应用过程中获得正确的安全之本 . 三个层次的认证是基于表单的 ,身份证书和视窗认证 . 综述文献仅限于上述三个领域 . 关 键 词 : 表单 ; 身份证书 ; 视窗认证 中图分类号 : TP 393108 文献标识码 : A 文章编号 : 100
2、0 - 1646 (2003) 03 - 0250 - 05 安全是开发人员和应用程序架构师首要关注的问题 。 由于不同类型的网站 有不同的安全需要,开发人员需要知道 需要什么程度的 安全 运行 ,并 为他们的程序选择适当的 安全模式 。 有 些网站 发布的 信息 不来自 用户 ,而是通过搜索引擎等广泛渠道来收集 。 另外 一些网站,可能 要收集 用户的敏感信息 ,比如 信用卡号码 ,这些网站需要 非常严格的 安全 措施 ,以避免 来自外部的 恶意攻击。 1 安全的基本操作 在 ASP . NET 应用程序 的 环境中安全的 基本 操作 涉及 三步即 验证,授权和模拟。验证的过程中 认 证用
3、户身份 ,允许或拒绝请求 。 这涉及到接受 用户 凭据(如用户名和密码) 和凭证核对 。经过身份验证, 合法 用户 对 资源 的请 求 将 得到满足。接下来一段时间 ,用户 请求资源无需再进行 身份验证,直到用户 退出这个 WEB应用 程序 。 授权是给予 用户访问特定资源 的资格 。模拟的过程, 是 使应用程序 确认 用户的身份,从而 获得 要求的其他资源 。 基于模拟 的 身份 ,请求 资源将被授予或者拒绝 。 2 ASP.NET 的验证 验证 是 Web 应用程序的安全一个重要的 特征 。在 ASP.NET 中,验证 表现 在两个层次上 , 2 首先, Internet 信息服务( II
4、S )将 执行 必要的验证,然后 把用户 请求发 送到 ASP.NET 中 ,如 图 1 所描述的。 ASP.NET 应用程序的 Web 服务器基本是 IIS 。因此,每 个 ASP.NET 应用程序可以继续利用 IIS 所提供的的安全 性选项。当用户请求特定资源 时 ,这一要求将 发送 到 IIS 。 IIS 验证用户的请求,然后 把 认证用户 发送给 ASP.NET 工作进程。 ASP.NET 工作进程将决定是否模拟验证 IIS 所提供的 用户 。如果 Web.config 文件 中的 模仿配置是启用的 , ASP.NET工作进 程 将 模拟验证使用者。否则, ASP.NET 将自行验证用
5、户 身份。毕竟, ASP.NET 决定 用户是否有权访问这些资源。如果他们 被 允许 , ASP. NET 提供请求的服务 ; 否者他将 一个 “ 拒绝登入 ”的 错误讯息传回给用户。 图 1 IIS 和 ASP.NET 的安全流程 ASP.NET 通过几 种 认证 机制 提供了内置 的 用户身份验证 , 1.4它们 是基于 表单 的身份验证,应用程序使用自定义身份验证模式的 Cookie 支持 来确保安全;身份证书, 应用程序使用微软 的身份证书来 身份验证 ,身份证书 是微软开发的 一个 Web 单点登录技术 ,还有视 窗 验证 , Web 应用程序使用 从 集成 视窗 身份验证中 获得
6、的 用户 名单来验证用户 。 也 有些应用程序不使用身份验证,或 自行开发 验证 机制 。在这种情况下, 可以 把 ASP. NET 中身份验证模式设置 为关闭 。本文将简要地 涉及基于表单的 ,身份证书和视窗认证。 2.1 基于表单的 认证 基于表单的 认证验证 是 用定制逻辑执行 来 验证用户, 运 用 了 Cookie 而无需担心 Session 管理。这使开发 人员 获得更多的 权限去 指定哪些文件在网站上可获取和由何人 获取 ,并可以识别的登录页 。 3这一机制将自动重定向未 验证 用户到 登录页,并请他们提供适当 的凭据(例如,用户名 /密码组合 ) 。如果登录成功 ,ASP.NE
7、T 分配 cookie 给用户,并重定向到他们原先 请 求 的 特定资源。此 Cookie允许用户 反复访问 特 定 资源,而不必 重新执行 登录机制 。 显示如下: 图 2 表 单 认证流 程 在上图中, 首先 用户 请求资源 。这一 请 求将 先 到 达 IIS,由 IIS 进行 用户身份验证的。如果 IIS 启用匿名访问,或者 用户 已成功 通过 验证, IIS 会 将 把 请求转到 ASP.NET 应用程序。 ASP.NET 中查 看 是否 有 有效的身份验证 cookie 附 加 请求 中 。如果 有 ,它意味着用户 先前已通过 验证。 ASP.NET 将执行授权检查。如果用户 有 访问这些资源 的权限 ,将被 允许 访问。否则 返回登入失败的信息 。如果提出的请求没有 附带 任何 Cookie, ASP.NET 将 重定向用户登录页面,并 要求用户进行身份验证 。应用程序代码检查 身份 证书。如果身份验证 通过 , ASP.NET