Zend_OpenId
is a Zend Framework component that provides a
simple API for building OpenID-enabled sites and identity providers.
OpenID is a set of protocols for user-centric digital identities. These protocols allows users to create an identity online, using an identity provider. This identity can be used on any site that supports OpenID. Using OpenID-enabled sites, users do not need to remember traditional authentication tokens such as usernames and passwords for each site. All OpenID-enabled sites accept a single OpenID identity. This identity is typically a URL. It may be the URL of the user's personal page, blog or other resource that may provide additional information about them. That mean a user needs just one identifier for all sites he or she uses. services. OpenID is an open, decentralized, and free user-centric solution. Users may choose which OpenID provider to use, or even create their own personal identity server. No central authority is required to approve or register OpenID-enabled sites or identity providers.
For more information about OpenID visit the OpenID official site.
The purpose of the Zend_OpenId
component is to
implement the OpenID authentication protocol as described in the following
sequence diagram:
-
Authentication is initiated by the end user, who passes their OpenID identifier to the OpenID consumer through a User-Agent.
-
The OpenID consumer performs normalization and discovery on the user-supplied identifier. Through this process, the consumer obtains the claimed identifier, the URL of the OpenID provider and an OpenID protocol version.
-
The OpenID consumer establishes an optional association with the provider using Diffie-Hellman keys. As a result, both parties have a common "shared secret" that is used for signing and verification of the subsequent messages.
-
The OpenID consumer redirects the User-Agent to the URL of the OpenID provider with an OpenID authentication request.
-
The OpenID provider checks if the User-Agent is already authenticated and, if not, offers to do so.
-
The end user enters the required password.
-
The OpenID provider checks if it is allowed to pass the user identity to the given consumer, and asks the user if necessary.
-
The user allows or disallows passing his identity.
-
The OpenID Provider redirects the User-Agent back to the OpenID consumer with an "authentication approved" or "failed" request.
-
The OpenID consumer verifies the information received from the provider by using the shared secret it got in step 3 or by sending an additional direct request to the OpenID provider.
Zend_OpenId
consists of two sub-packages. The first one
is Zend_OpenId_Consumer
for developing OpenID-enabled sites,
and the second is Zend_OpenId_Provider
for developing OpenID
servers. They are completely independent of each other and may be used
separately.
The only common code used by these sub-packages are the OpenID Simple
Registration Extension implemented by
Zend_OpenId_Extension_Sreg
class and a set of utility
functions implemented by the Zend_OpenId
class.
Nota
Zend_OpenId
takes advantage of the GMP extension, where available. Consider
enabling the GMP extension for enhanced performance when using
Zend_OpenId
.