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
)
*/