Subversion Repositories Applications.annuaire

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
?>