42 |
aurelien |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
/**
|
|
|
4 |
* This file specifies the interface for PHP OpenID store implementations.
|
|
|
5 |
*
|
|
|
6 |
* PHP versions 4 and 5
|
|
|
7 |
*
|
|
|
8 |
* LICENSE: See the COPYING file included in this distribution.
|
|
|
9 |
*
|
|
|
10 |
* @package OpenID
|
|
|
11 |
* @author JanRain, Inc. <openid@janrain.com>
|
|
|
12 |
* @copyright 2005 Janrain, Inc.
|
|
|
13 |
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
|
|
14 |
*/
|
|
|
15 |
|
|
|
16 |
/**
|
|
|
17 |
* This is the interface for the store objects the OpenID library
|
|
|
18 |
* uses. It is a single class that provides all of the persistence
|
|
|
19 |
* mechanisms that the OpenID library needs, for both servers and
|
|
|
20 |
* consumers. If you want to create an SQL-driven store, please see
|
|
|
21 |
* then {@link Auth_OpenID_SQLStore} class.
|
|
|
22 |
*
|
|
|
23 |
* @package OpenID
|
|
|
24 |
* @author JanRain, Inc. <openid@janrain.com>
|
|
|
25 |
*/
|
|
|
26 |
class Auth_OpenID_OpenIDStore {
|
|
|
27 |
/**
|
|
|
28 |
* @var integer The length of the auth key that should be returned
|
|
|
29 |
* by the getAuthKey method.
|
|
|
30 |
*/
|
|
|
31 |
var $AUTH_KEY_LEN = 20;
|
|
|
32 |
|
|
|
33 |
/**
|
|
|
34 |
* This method puts an Association object into storage,
|
|
|
35 |
* retrievable by server URL and handle.
|
|
|
36 |
*
|
|
|
37 |
* @param string $server_url The URL of the identity server that
|
|
|
38 |
* this association is with. Because of the way the server portion
|
|
|
39 |
* of the library uses this interface, don't assume there are any
|
|
|
40 |
* limitations on the character set of the input string. In
|
|
|
41 |
* particular, expect to see unescaped non-url-safe characters in
|
|
|
42 |
* the server_url field.
|
|
|
43 |
*
|
|
|
44 |
* @param Association $association The Association to store.
|
|
|
45 |
*/
|
|
|
46 |
function storeAssociation($server_url, $association)
|
|
|
47 |
{
|
|
|
48 |
trigger_error("Auth_OpenID_OpenIDStore::storeAssociation ".
|
|
|
49 |
"not implemented", E_USER_ERROR);
|
|
|
50 |
}
|
|
|
51 |
|
|
|
52 |
/**
|
|
|
53 |
* This method returns an Association object from storage that
|
|
|
54 |
* matches the server URL and, if specified, handle. It returns
|
|
|
55 |
* null if no such association is found or if the matching
|
|
|
56 |
* association is expired.
|
|
|
57 |
*
|
|
|
58 |
* If no handle is specified, the store may return any association
|
|
|
59 |
* which matches the server URL. If multiple associations are
|
|
|
60 |
* valid, the recommended return value for this method is the one
|
|
|
61 |
* that will remain valid for the longest duration.
|
|
|
62 |
*
|
|
|
63 |
* This method is allowed (and encouraged) to garbage collect
|
|
|
64 |
* expired associations when found. This method must not return
|
|
|
65 |
* expired associations.
|
|
|
66 |
*
|
|
|
67 |
* @param string $server_url The URL of the identity server to get
|
|
|
68 |
* the association for. Because of the way the server portion of
|
|
|
69 |
* the library uses this interface, don't assume there are any
|
|
|
70 |
* limitations on the character set of the input string. In
|
|
|
71 |
* particular, expect to see unescaped non-url-safe characters in
|
|
|
72 |
* the server_url field.
|
|
|
73 |
*
|
|
|
74 |
* @param mixed $handle This optional parameter is the handle of
|
|
|
75 |
* the specific association to get. If no specific handle is
|
|
|
76 |
* provided, any valid association matching the server URL is
|
|
|
77 |
* returned.
|
|
|
78 |
*
|
|
|
79 |
* @return Association The Association for the given identity
|
|
|
80 |
* server.
|
|
|
81 |
*/
|
|
|
82 |
function getAssociation($server_url, $handle = null)
|
|
|
83 |
{
|
|
|
84 |
trigger_error("Auth_OpenID_OpenIDStore::getAssociation ".
|
|
|
85 |
"not implemented", E_USER_ERROR);
|
|
|
86 |
}
|
|
|
87 |
|
|
|
88 |
/**
|
|
|
89 |
* This method removes the matching association if it's found, and
|
|
|
90 |
* returns whether the association was removed or not.
|
|
|
91 |
*
|
|
|
92 |
* @param string $server_url The URL of the identity server the
|
|
|
93 |
* association to remove belongs to. Because of the way the server
|
|
|
94 |
* portion of the library uses this interface, don't assume there
|
|
|
95 |
* are any limitations on the character set of the input
|
|
|
96 |
* string. In particular, expect to see unescaped non-url-safe
|
|
|
97 |
* characters in the server_url field.
|
|
|
98 |
*
|
|
|
99 |
* @param string $handle This is the handle of the association to
|
|
|
100 |
* remove. If there isn't an association found that matches both
|
|
|
101 |
* the given URL and handle, then there was no matching handle
|
|
|
102 |
* found.
|
|
|
103 |
*
|
|
|
104 |
* @return mixed Returns whether or not the given association existed.
|
|
|
105 |
*/
|
|
|
106 |
function removeAssociation($server_url, $handle)
|
|
|
107 |
{
|
|
|
108 |
trigger_error("Auth_OpenID_OpenIDStore::removeAssociation ".
|
|
|
109 |
"not implemented", E_USER_ERROR);
|
|
|
110 |
}
|
|
|
111 |
|
|
|
112 |
/**
|
|
|
113 |
* Stores a nonce. This is used by the consumer to prevent replay
|
|
|
114 |
* attacks.
|
|
|
115 |
*
|
|
|
116 |
* @param string $nonce The nonce to store.
|
|
|
117 |
*
|
|
|
118 |
* @return null
|
|
|
119 |
*/
|
|
|
120 |
function storeNonce($nonce)
|
|
|
121 |
{
|
|
|
122 |
trigger_error("Auth_OpenID_OpenIDStore::storeNonce ".
|
|
|
123 |
"not implemented", E_USER_ERROR);
|
|
|
124 |
}
|
|
|
125 |
|
|
|
126 |
/**
|
|
|
127 |
* This method is called when the library is attempting to use a
|
|
|
128 |
* nonce. If the nonce is in the store, this method removes it and
|
|
|
129 |
* returns a value which evaluates as true. Otherwise it returns a
|
|
|
130 |
* value which evaluates as false.
|
|
|
131 |
*
|
|
|
132 |
* This method is allowed and encouraged to treat nonces older
|
|
|
133 |
* than some period (a very conservative window would be 6 hours,
|
|
|
134 |
* for example) as no longer existing, and return False and remove
|
|
|
135 |
* them.
|
|
|
136 |
*
|
|
|
137 |
* @param string $nonce The nonce to use.
|
|
|
138 |
*
|
|
|
139 |
* @return bool Whether or not the nonce was valid.
|
|
|
140 |
*/
|
|
|
141 |
function useNonce($nonce)
|
|
|
142 |
{
|
|
|
143 |
trigger_error("Auth_OpenID_OpenIDStore::useNonce ".
|
|
|
144 |
"not implemented", E_USER_ERROR);
|
|
|
145 |
}
|
|
|
146 |
|
|
|
147 |
/**
|
|
|
148 |
* This method returns a key used to sign the tokens, to ensure
|
|
|
149 |
* that they haven't been tampered with in transit. It should
|
|
|
150 |
* return the same key every time it is called. The key returned
|
|
|
151 |
* should be {@link AUTH_KEY_LEN} bytes long.
|
|
|
152 |
*
|
|
|
153 |
* @return string The key. It should be {@link AUTH_KEY_LEN} bytes in
|
|
|
154 |
* length, and use the full range of byte values. That is, it
|
|
|
155 |
* should be treated as a lump of binary data stored in a string.
|
|
|
156 |
*/
|
|
|
157 |
function getAuthKey()
|
|
|
158 |
{
|
|
|
159 |
trigger_error("Auth_OpenID_OpenIDStore::getAuthKey ".
|
|
|
160 |
"not implemented", E_USER_ERROR);
|
|
|
161 |
}
|
|
|
162 |
|
|
|
163 |
/**
|
|
|
164 |
* This method must return true if the store is a dumb-mode-style
|
|
|
165 |
* store. Unlike all other methods in this class, this one
|
|
|
166 |
* provides a default implementation, which returns false.
|
|
|
167 |
*
|
|
|
168 |
* In general, any custom subclass of {@link Auth_OpenID_OpenIDStore}
|
|
|
169 |
* won't override this method, as custom subclasses are only likely to
|
|
|
170 |
* be created when the store is fully functional.
|
|
|
171 |
*
|
|
|
172 |
* @return bool true if the store works fully, false if the
|
|
|
173 |
* consumer will have to use dumb mode to use this store.
|
|
|
174 |
*/
|
|
|
175 |
function isDumb()
|
|
|
176 |
{
|
|
|
177 |
return false;
|
|
|
178 |
}
|
|
|
179 |
|
|
|
180 |
/**
|
|
|
181 |
* Removes all entries from the store; implementation is optional.
|
|
|
182 |
*/
|
|
|
183 |
function reset()
|
|
|
184 |
{
|
|
|
185 |
}
|
|
|
186 |
|
|
|
187 |
}
|
|
|
188 |
?>
|