| 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: ../Authentication/tutorial.html#introduction |
| .. _Database: ../Database/tutorial.html#introduction |
| |
| |
| .. |
| Local Variables: |
| mode: rst |
| fill-column: 79 |
| End: |
| vim: et syn=rst tw=79 nocin |