1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20843 -->
4 <sect1 id="zend.openid.introduction">
7 <classname>Zend_OpenId</classname> は、OpenID 対応のサイトや
8 ID プロバイダを作成するためのシンプルな <acronym>API</acronym>
9 を提供する Zend Framework のコンポーネントです。
12 <sect2 id="zend.openid.introduction.what">
13 <title>OpenID とは?</title>
15 OpenID は、ユーザ中心のデジタル識別子用のプロトコル群のことです。
16 これらのプロトコルによって、ID プロバイダを使用したオンライン ID
17 を作成します。この ID は、OpenID がサポートする場所ならどこでも使用可能です。
19 ユーザ名やパスワードといった旧来の認証情報を覚えておく必要がなくなるわけです。
20 すべての OpenID 対応サイトで単一の OpenID による ID を使用できます。
21 この ID は、通常は <acronym>URL</acronym> となります。
22 これはそのユーザの個人ページの <acronym>URL</acronym> かもしれませんし、
23 blog などの他の情報を含むリソースの <acronym>URL</acronym> かもしれません。
24 ユーザ名やパスワードの組み合わせをたくさん覚える必要はもうありません。
25 ひとつの ID ですべてのインターネットサービスが使用できるのです。
26 OpenID はオープンで、中央管理されておらずフリーなユーザ中心のソリューションです。
27 各自がどの OpenID プロバイダを使用するかを選択できますし、
28 独自の ID サーバを作成することもできます。
29 OpenID 対応のサイトや ID プロバイダを作成する際に、
35 <ulink url="http://www.openid.net/">OpenID の公式サイト</ulink>
40 <sect2 id="zend.openid.introduction.how">
43 <classname>Zend_OpenId</classname> コンポーネントの主要な目的は、
44 次の図のような OpenID 認証プロトコルを実装することです。
48 <inlinegraphic align="center" fileref="figures/zend.openid.protocol.jpg" format="JPEG" scale="100" valign="middle" width="559" />
55 まず OpenID 識別子をユーザエージェント経由で
61 OpenID コンシューマはユーザから受け取った識別子を正規化し、
62 その内容を確認します。確認した結果として得られるのは、
63 識別子、OpenID プロバイダ <acronym>URL</acronym> そして OpenID プロトコルのバージョンです。
68 OpenID コンシューマは、Diffie-Hellman
69 キーを使用してプロバイダとのオプションの関連を確立します。
70 その結果、両者が共通の "共用する秘密" を保持することになり、
71 これを用いてその後のメッセージの署名や検証を行います。
76 OpenID コンシューマは、ユーザエージェントを
78 OpenID プロバイダの <acronym>URL</acronym> にリダイレクトします。
83 OpenID プロバイダはユーザエージェントが認証済みかどうかを確認し、
89 エンドユーザは所定のパスワードを入力します。
94 OpenID プロバイダは、指定されたコンシューマでその
95 ID が許可されているかどうかを調べ、必要に応じてユーザに問い合わせます。
100 エンドユーザは、その ID を渡してもよいかどうかを指定します。
105 OpenID プロバイダはユーザエージェントを
106 OpenID コンシューマにリダイレクトします。その際のリクエストには
107 "認証に通った" あるいは "失敗した" といった情報が含まれます。
112 OpenID コンシューマはプロバイダから受け取った情報を検証します。
113 この検証には、ステップ 3 で取得した "共用する秘密"
114 を用いるか、あるいは OpenID プロバイダにさらに直接リクエストを行います。
120 <sect2 id="zend.openid.introduction.structure">
121 <title>Zend_OpenId の構造</title>
123 <classname>Zend_OpenId</classname> は 2 つのサブパッケージで構成されています。
124 まず最初が <classname>Zend_OpenId_Consumer</classname> で、これは
125 OpenID 対応のサイトを開発するためのものです。もうひとつは
126 <classname>Zend_OpenId_Provider</classname> で、これは OpenID
127 サーバを開発するためのものです。これらはお互いに完全に独立しており、
132 これらのサブパッケージの唯一の共通部分は、
133 <classname>Zend_OpenId_Extension_Sreg</classname> が実装している
134 OpenID Simple Registration Extension と
135 <classname>Zend_OpenId</classname> クラスのユーティリティ関数群です。
140 <classname>Zend_OpenId</classname> は、<ulink url="http://php.net/gmp">GMP
141 拡張モジュール</ulink> が使用可能な場合はそれを使用します。
142 <classname>Zend_OpenId</classname> を使う場合は、
143 GMP 拡張モジュールを有効にしておくとよりよいパフォーマンスが得られるでしょう。
148 <sect2 id="zend.openid.introduction.standards">
149 <title>サポートする OpenID 標準規格</title>
151 <classname>Zend_OpenId</classname> コンポーネントは、
158 OpenID Authentication protocol version 1.1
163 OpenID Authentication protocol version 2.0 draft 11
168 OpenID Simple Registration Extension version 1.0
173 OpenID Simple Registration Extension version 1.1 draft 1