使用 PHP 进行身份管理
了解如何在基于 PHP 的 Web 应用程序中实现身份管理……
基本 HTTP/HTTPS 身份验证模型。基本 HTTP/HTTPS 身份验证模型针对一个领域授权一次,仅当所有浏览器窗口都关闭时才撤销领域验证。图 3 显示了在浏览器上下文中表示模型的活动图。Microsoft Internet Explorer 在身份验证失败之前提供了三次尝试机会,但您只需刷新页面,即可再获得三次连续尝试机会。Firefox 浏览器则不同,它会一直提示,直到用户取消身份验证过程。

图 3 基本 HTTP/HTTPS 身份验证活动图
您通过输入登录表单的 URL 启动一个 Web 应用程序会话,然后该会话将发布到服务器并将一条消息发送回浏览器,要求它收集并发送用户凭证以进行确认。当您将凭证提交给 SignOnDB.php 程序后,代码会尝试验证您的登录凭证。如果凭证有效,您就可以使用领域中的任何 Web 页。如果身份验证失败,系统会通过浏览器登录表单重新提示,如前所述。
实现基本 HTTP/HTTPS 身份验证后,PHP 将在 $_SERVER 数组中使用三个预先定义的变量名。基本 HTTP/HTTPS 身份验证将用户 ID 和口令分别放在 $_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 中。如果未设置第三个变量名 HTTP_AUTHORIZATION,您需要将这两个 $_SERVER 值提交到身份验证函数。服务器端程序验证用户身份之后,对 $_SERVER 数组的 HTTP_AUTHORIZATION 名的后续读取都将允许浏览器访问领域,直到浏览器关闭。
在基本 HTTP/HTTPS 身份验证模型中保护页面的一个简单方法是包含一个布尔控制变量,该变量的值为 false,直到通过身份验证。仅当布尔控制变量变为 true 时才显示内容。您的代码应该检查身份验证,并在您没有在领域中经过身份验证时提示您输入凭证。该代码应该存在于安全 Web 站点的所有页面上。
通过检查这些预定义的 $_SERVER 变量的值,可在服务器端脚本中触发 HTTP 头验证。对 SignOnRealm.php 页面的请求会将这些值放在返回的头中,这将指示浏览器调出凭证输入对话框。单击凭证的 OK 按钮将向服务器端脚本发送一个新请求。随后,服务器端脚本将尝试验证提交的凭证,除非用户取消该过程。如果用户取消该过程,这些领域登录脚本通常会返回一条失败消息。如果连续三次或四次身份验证失败,某些站点还会关闭用户帐户,因为他人可能通过已知用户名不断尝试入侵系统。
设置测试应用程序。演示应用程序使用了一个名为 IDMGMT1 的 Oracle 模式,口令与模式名相同。可通过以下步骤创建用户和环境:
1. 以 SYSTEM 特权用户身份登录数据库,并运行以下命令:
| SQL> CREATE USER IDMGMT1 IDENTIFIED BY IDMGMT1; SQL> GRANT CONNECT, RESOURCE TO IDMGMT1; |
2. 连接到新的用户模式:
| SQL> CONNECT IDMGMT1/IDMGMT1@XE |
- 本文关键词:

