git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2437 e93f8b46-1217-0410-a6f0-8f06a7374b81
76 lines
3.0 KiB
Ruby
76 lines
3.0 KiB
Ruby
require 'openid/util'
|
|
|
|
module OpenID
|
|
|
|
# Stores for Associations and nonces. Used by both the Consumer and
|
|
# the Server. If you have a database abstraction layer or other
|
|
# state storage in your application or framework already, you can
|
|
# implement the store interface.
|
|
module Store
|
|
# Abstract Store
|
|
# Changes in 2.0:
|
|
# * removed store_nonce, get_auth_key, is_dumb
|
|
# * changed use_nonce to support one-way nonces
|
|
# * added cleanup_nonces, cleanup_associations, cleanup
|
|
class Interface < Object
|
|
|
|
# Put a Association object into storage.
|
|
# When implementing a store, don't assume that there are any limitations
|
|
# on the character set of the server_url. In particular, expect to see
|
|
# unescaped non-url-safe characters in the server_url field.
|
|
def store_association(server_url, association)
|
|
raise NotImplementedError
|
|
end
|
|
|
|
# Returns a Association object from storage that matches
|
|
# the server_url. Returns nil if no such association is found or if
|
|
# the one matching association is expired. (Is allowed to GC expired
|
|
# associations when found.)
|
|
def get_association(server_url, handle=nil)
|
|
raise NotImplementedError
|
|
end
|
|
|
|
# If there is a matching association, remove it from the store and
|
|
# return true, otherwise return false.
|
|
def remove_association(server_url, handle)
|
|
raise NotImplementedError
|
|
end
|
|
|
|
# Return true if the nonce has not been used before, and store it
|
|
# for a while to make sure someone doesn't try to use the same value
|
|
# again. Return false if the nonce has already been used or if the
|
|
# timestamp is not current.
|
|
# You can use OpenID::Store::Nonce::SKEW for your timestamp window.
|
|
# server_url: URL of the server from which the nonce originated
|
|
# timestamp: time the nonce was created in seconds since unix epoch
|
|
# salt: A random string that makes two nonces issued by a server in
|
|
# the same second unique
|
|
def use_nonce(server_url, timestamp, salt)
|
|
raise NotImplementedError
|
|
end
|
|
|
|
# Remove expired nonces from the store
|
|
# Discards any nonce that is old enough that it wouldn't pass use_nonce
|
|
# Not called during normal library operation, this method is for store
|
|
# admins to keep their storage from filling up with expired data
|
|
def cleanup_nonces
|
|
raise NotImplementedError
|
|
end
|
|
|
|
# Remove expired associations from the store
|
|
# Not called during normal library operation, this method is for store
|
|
# admins to keep their storage from filling up with expired data
|
|
def cleanup_associations
|
|
raise NotImplementedError
|
|
end
|
|
|
|
# Remove expired nonces and associations from the store
|
|
# Not called during normal library operation, this method is for store
|
|
# admins to keep their storage from filling up with expired data
|
|
def cleanup
|
|
return cleanup_nonces, cleanup_associations
|
|
end
|
|
end
|
|
end
|
|
end
|