Documentation

File extends AbstractDigest
in package

This is an authentication backend that uses a file to manage passwords.

The backend file must conform to Apache's htdigest format

Tags
copyright

Copyright (C) fruux GmbH (https://fruux.com/)

author

Evert Pot (http://evertpot.com/)

license

http://sabre.io/license/ Modified BSD License

Table of Contents

$principalPrefix  : string
This is the prefix that will be used to generate principal urls.
$realm  : string
Authentication Realm.
$users  : array<string|int, mixed>
List of users.
__construct()  : mixed
Creates the backend object.
challenge()  : mixed
This method is called when a user could not be authenticated, and authentication was required for the current request.
check()  : array<string|int, mixed>
When this method is called, the backend must check if authentication was successful.
getDigestHash()  : string
Returns a users' information.
loadFile()  : mixed
Loads an htdigest-formatted file. This method can be called multiple times if more than 1 file is used.
setRealm()  : mixed
Sets the authentication realm for this backend.

Properties

$principalPrefix

This is the prefix that will be used to generate principal urls.

protected string $principalPrefix = 'principals/'

$realm

Authentication Realm.

protected string $realm = 'SabreDAV'

The realm is often displayed by browser clients when showing the authentication dialog.

$users

List of users.

protected array<string|int, mixed> $users = []

Methods

__construct()

Creates the backend object.

public __construct([string|null $filename = null ]) : mixed

If the filename argument is passed in, it will parse out the specified file first.

Parameters
$filename : string|null = null
Return values
mixed

challenge()

This method is called when a user could not be authenticated, and authentication was required for the current request.

public challenge(RequestInterface $request, ResponseInterface $response) : mixed

This gives you the opportunity to set authentication headers. The 401 status code will already be set.

In this case of Basic Auth, this would for example mean that the following header needs to be set:

$response->addHeader('WWW-Authenticate', 'Basic realm=SabreDAV');

Keep in mind that in the case of multiple authentication backends, other WWW-Authenticate headers may already have been set, and you'll want to append your own WWW-Authenticate header instead of overwriting the existing one.

Parameters
$request : RequestInterface
$response : ResponseInterface
Return values
mixed

check()

When this method is called, the backend must check if authentication was successful.

public check(RequestInterface $request, ResponseInterface $response) : array<string|int, mixed>

The returned value must be one of the following

[true, "principals/username"] [false, "reason for failure"]

If authentication was successful, it's expected that the authentication backend returns a so-called principal url.

Examples of a principal url:

principals/admin principals/user1 principals/users/joe principals/uid/123457

If you don't use WebDAV ACL (RFC3744) we recommend that you simply return a string such as:

principals/users/[username]

Parameters
$request : RequestInterface
$response : ResponseInterface
Return values
array<string|int, mixed>

getDigestHash()

Returns a users' information.

public getDigestHash(string $realm, string $username) : string
Parameters
$realm : string
$username : string
Return values
string

loadFile()

Loads an htdigest-formatted file. This method can be called multiple times if more than 1 file is used.

public loadFile(string $filename) : mixed
Parameters
$filename : string
Return values
mixed

setRealm()

Sets the authentication realm for this backend.

public setRealm(string $realm) : mixed

Be aware that for Digest authentication, the realm influences the digest hash. Choose the realm wisely, because if you change it later, all the existing hashes will break and nobody can authenticate.

Parameters
$realm : string
Return values
mixed

Search results