3.3. 数字认证

3.3.1. 简介

数字认证是一个HTTP认证的方法,它通过不需要通过网络传递明文密码的方法对基本认证加以改进。

这个适配器允许依靠文本文件认证,该文本包括数行数字认证的基本元素:

  • 用户名,例如 "joe.user"

  • 领域,例如 "Administrative Area"

  • 用户名,领域和密码的MD5 hash用冒号隔开

在下面的例子中,上面的元素用冒号隔开(密码是"somePassword"):

someUser:Some Realm:fde17b91c3a510ecbaf7dbd37f59d4f8

3.3.2. 规范(Specifics)

数字认证适配器Zend_Auth_Adapter_Digest需要若干输入参数:

  • 文件名 - 认证查询被执行是所需的文件名

  • 领域 - 数字认证领域

  • 用户名 - 数字认证用户

  • 密码 - 该领域用户的密码

在调用authenticate()之前必需要设定这些参数。

3.3.3. 身份(Identity)

数字认证返回一个Zend_Auth_Result 对象,它由包含realmusername健值的数组的身份形成。在authenticate()被调用之前,分别设置和这些健值关联的数组值为相符的值。

<?php
require_once 'Zend/Auth/Adapter/Digest.php';

$adapter = new Zend_Auth_Adapter_Digest($filename, $realm, $username, $password);

$result = $adapter->authenticate();

$identity = $result->getIdentity();

print_r($identity);

/*
Array
(
    [realm] => Some Realm
    [username] => someUser
)
*/