Zend_OpenId-Introduction.xml 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <sect1 id="zend.openid.introduction">
  4. <title>Introduction</title>
  5. <para>
  6. <classname>Zend_OpenId</classname> is a Zend Framework component that provides a
  7. simple API for building OpenID-enabled sites and identity providers.
  8. </para>
  9. <sect2 id="zend.openid.introduction.what">
  10. <title>What is OpenID?</title>
  11. <para>
  12. OpenID is a set of protocols for user-centric digital identities.
  13. These protocols allows users to create an identity online, using an identity
  14. provider. This identity can be used on any site that supports OpenID.
  15. Using OpenID-enabled sites, users do not need to remember traditional
  16. authentication tokens such as usernames and passwords for each site. All OpenID-enabled
  17. sites accept a single OpenID identity. This identity is typically a URL.
  18. It may be the URL of the user's personal page, blog or other resource that
  19. may provide additional information about them. That mean a user needs just one identifier for all sites he or she uses.
  20. services. OpenID is an open, decentralized, and free user-centric
  21. solution. Users may choose which OpenID provider to use, or even create
  22. their own personal identity server. No central authority is required to
  23. approve or register OpenID-enabled sites or identity providers.
  24. </para>
  25. <para>
  26. For more information about OpenID visit the <ulink url="http://www.openid.net/">OpenID official site</ulink>.
  27. </para>
  28. </sect2>
  29. <sect2 id="zend.openid.introduction.how">
  30. <title>How Does it Work?</title>
  31. <para>
  32. The purpose of the <classname>Zend_OpenId</classname> component is to
  33. implement the OpenID authentication protocol as described in the following
  34. sequence diagram:
  35. </para>
  36. <para>
  37. <inlinegraphic align="center" fileref="figures/zend.openid.protocol.jpg" format="JPEG" scale="100" valign="middle" width="559" />
  38. </para>
  39. <orderedlist>
  40. <listitem>
  41. <para>
  42. Authentication is initiated by the end user, who passes their
  43. OpenID identifier to the OpenID consumer through a User-Agent.
  44. </para>
  45. </listitem>
  46. <listitem>
  47. <para>
  48. The OpenID consumer performs normalization and discovery on the user-supplied
  49. identifier. Through this process, the consumer obtains the claimed identifier, the URL of the OpenID provider and an OpenID protocol
  50. version.
  51. </para>
  52. </listitem>
  53. <listitem>
  54. <para>
  55. The OpenID consumer establishes an optional association with the
  56. provider using Diffie-Hellman keys. As a result, both parties have
  57. a common "shared secret" that is used for signing and verification
  58. of the subsequent messages.
  59. </para>
  60. </listitem>
  61. <listitem>
  62. <para>
  63. The OpenID consumer redirects the User-Agent to the URL of the OpenID
  64. provider with an OpenID authentication request.
  65. </para>
  66. </listitem>
  67. <listitem>
  68. <para>
  69. The OpenID provider checks if the User-Agent is already
  70. authenticated and, if not, offers to do so.
  71. </para>
  72. </listitem>
  73. <listitem>
  74. <para>
  75. The end user enters the required password.
  76. </para>
  77. </listitem>
  78. <listitem>
  79. <para>
  80. The OpenID provider checks if it is allowed to pass the user
  81. identity to the given consumer, and asks the user if necessary.
  82. </para>
  83. </listitem>
  84. <listitem>
  85. <para>
  86. The user allows or disallows passing his identity.
  87. </para>
  88. </listitem>
  89. <listitem>
  90. <para>
  91. The OpenID Provider redirects the User-Agent back to the OpenID
  92. consumer with an "authentication approved" or "failed" request.
  93. </para>
  94. </listitem>
  95. <listitem>
  96. <para>
  97. The OpenID consumer verifies the information received from the
  98. provider by using the shared secret it got in step 3 or by
  99. sending an additional direct request to the OpenID provider.
  100. </para>
  101. </listitem>
  102. </orderedlist>
  103. </sect2>
  104. <sect2 id="zend.openid.introduction.structure">
  105. <title>Zend_OpenId Structure</title>
  106. <para>
  107. <classname>Zend_OpenId</classname> consists of two sub-packages. The first one
  108. is <classname>Zend_OpenId_Consumer</classname> for developing OpenID-enabled sites,
  109. and the second is <classname>Zend_OpenId_Provider</classname> for developing OpenID
  110. servers. They are completely independent of each other and may be used
  111. separately.
  112. </para>
  113. <para>
  114. The only common code used by these sub-packages are the OpenID Simple
  115. Registration Extension implemented by
  116. <classname>Zend_OpenId_Extension_Sreg</classname> class and a set of utility
  117. functions implemented by the <classname>Zend_OpenId</classname> class.
  118. </para>
  119. <note>
  120. <para>
  121. <classname>Zend_OpenId</classname> takes advantage of the <ulink url="http://php.net/gmp">GMP extension</ulink>,
  122. where available. Consider enabling the GMP extension for enhanced performance when using
  123. <classname>Zend_OpenId</classname>.
  124. </para>
  125. </note>
  126. </sect2>
  127. <sect2 id="zend.openid.introduction.standards">
  128. <title>Supported OpenID Standards</title>
  129. <para>
  130. The <classname>Zend_OpenId</classname> component supports the following
  131. standards:
  132. </para>
  133. <itemizedlist>
  134. <listitem>
  135. <para>
  136. OpenID Authentication protocol version 1.1
  137. </para>
  138. </listitem>
  139. <listitem>
  140. <para>
  141. OpenID Authentication protocol version 2.0 draft 11
  142. </para>
  143. </listitem>
  144. <listitem>
  145. <para>
  146. OpenID Simple Registration Extension version 1.0
  147. </para>
  148. </listitem>
  149. <listitem>
  150. <para>
  151. OpenID Simple Registration Extension version 1.1 draft 1
  152. </para>
  153. </listitem>
  154. </itemizedlist>
  155. </sect2>
  156. </sect1>
  157. <!--
  158. vim:se ts=4 sw=4 et:
  159. -->