Sophie

Sophie

distrib > Fedora > 13 > x86_64 > by-pkgid > f4e6c85b5f2d5b9dc81bf0dbfcf9c622 > files > 5

php-ezc-AuthenticationDatabaseTiein-1.1-1.fc12.noarch.rpm

eZ Components - AuthenticationDatabaseTiein
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. contents:: Table of Contents

Introduction
============

Description
-----------

The purpose of the `Authentication`_ component is to provide support for
different means of identification and authentication of users using different
providers and protocols.

AuthenticationDatabaseTiein provides a Database filter for the
`Authentication`_ component by using the `Database`_ component, and an
implementation of a database store (backend) for OpenID authentication.


Class overview
==============

An overview of the most important classes in the `Authentication`_ component
and this component.


Base classes
------------

ezcAuthentication
  Main class of `Authentication`_. It is a container for authentication
  filters, which will be run in sequence. The method run() returns true or
  false depending on the success of the authentication filters. Implemented
  in `Authentication`_.

ezcAuthenticationCredentials
  Structure which holds user credentials. Types are id credentials
  (ezcAuthenticationIdCredentials) and id + password credentials
  (ezcAuthenticationPasswordCredentials).  Implemented in `Authentication`_.


Authentication filters
----------------------

ezcAuthenticationDatabaseFilter
  Filter to authenticate against a database. Uses a database instance provided
  by the `Database`_ component (via the ezcDbInstance::get() function).


Stores
------

OpenID uses a store to hold the generated nonces and the associations (in
"smart" mode). If there is no store specified, then nonces are not checked.

ezcAuthenticationOpenidStore
  Abstract class from which the different stores inherit.  Implemented in
  `Authentication`_.

ezcAuthenticationOpenidFileStore
  Uses file storage. Nonces are stored in files named after the nonce itself,
  and associations are stored in files named after the OpenID provider with
  which the association is made. Implemented in `Authentication`_.

ezcAuthenticationOpenidDbStore
  Database storage. Nonces and associations are stored in two tables, with
  names defined as options in ezcAuthenticationOpenidDbStoreOptions.


Authentication filters
======================

Database
--------

The following example shows how to authenticate against a database.

.. include:: tutorial/tutorial_database.php
   :literal:

First, a credentials object is created with username jan.modaal and password
'b1b3773a05c0ed0176787a4f1574ff0075f7521e' (sha1() hash).

An authentication object is created using the credentials object, and a
Database filter is added to it. The $database structure specifies the database
instance (ezcDbInstance::get()), the table name ('users') and the username and
password fields in the table ('user', 'password').

After running the authentication (line 8), if the username and the password do
not pass through the Database filter, then the credentials are incorrect and
the user must be informed. The getStatus() method is used for this. The values
in the status returned must be cycled through and for each value a response is
created for the user ("Username incorrect", "Password incorrect").

If run() returned true (line 24) then the user is logged-in and he can see his
content.


Fetch extra data during Database authentication
```````````````````````````````````````````````

Any value from the table which holds the users can be fetched. The exact column
names must be specified. Example: ::

    // $filter is an ezcAuthenticationDatabaseFilter object
    $filter->registerFetchData( array( 'name', 'country' ) );

After the authentication process is finished (after run()), retrieve the extra
data: ::

    // $filter is an ezcAuthenticationDatabaseFilter object
    $data = $filter->fetchData();

For the previous example, the $data array will be something like this: ::

    array( 'name' => array( 'John Doe' ),
           'country' => array( 'US' )
         );


OpenID
------

OpenID "smart" (stateful) mode
``````````````````````````````

The following example shows how to authenticate against OpenID in "smart"
(stateful) mode, using a database store.

.. include:: tutorial/tutorial_openid_smart_db.php
   :literal:

A database store is defined at line 25. This store will also hold the nonces
which are used to prevent replay attacks.

The database store requires that certain tables are present in the database. To
load the .dba definition for these tables into your database you must have the
DatabaseSchema component installed. Use the following code to load the schema:

.. include:: tutorial/load_openid_db_store_schema.php
   :literal:


Securing applications
=====================

`Securing applications`_ - A guide to improve the security of online
applications. It is not exhaustive, but it provides solutions against common
attacks.

.. _Securing applications: Authentication_security.html


.. _Authentication: introduction_Authentication.html
.. _Database: introduction_Database.html


..
   Local Variables:
   mode: rst
   fill-column: 79
   End:
   vim: et syn=rst tw=79 nocin