diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2010-04-18 22:29:23 -0400 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2010-04-18 22:29:23 -0400 |
commit | fef932af78eac2b775452c4a851e84a813027548 (patch) | |
tree | 7df395b2b795987d8ac4a7da231f30208916a88d /samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs | |
parent | 5b47cd88af9d7b1fc04e69a98a6f912624d275a6 (diff) | |
download | DotNetOpenAuth-fef932af78eac2b775452c4a851e84a813027548.zip DotNetOpenAuth-fef932af78eac2b775452c4a851e84a813027548.tar.gz DotNetOpenAuth-fef932af78eac2b775452c4a851e84a813027548.tar.bz2 |
Converted the OAuth consumer and SP sample web site projects to web application projects.
Diffstat (limited to 'samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs')
-rw-r--r-- | samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs b/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs new file mode 100644 index 0000000..c535fca --- /dev/null +++ b/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using DotNetOpenAuth.Messaging.Bindings; + +/// <summary> +/// A database-persisted nonce store. +/// </summary> +public class DatabaseNonceStore : INonceStore { + /// <summary> + /// Initializes a new instance of the <see cref="DatabaseNonceStore"/> class. + /// </summary> + public DatabaseNonceStore() { + } + + #region INonceStore Members + + /// <summary> + /// Stores a given nonce and timestamp. + /// </summary> + /// <param name="context">The context, or namespace, within which the + /// <paramref name="nonce"/> must be unique. + /// The context SHOULD be treated as case-sensitive. + /// The value will never be <c>null</c> but may be the empty string.</param> + /// <param name="nonce">A series of random characters.</param> + /// <param name="timestampUtc">The UTC timestamp that together with the nonce string make it unique + /// within the given <paramref name="context"/>. + /// The timestamp may also be used by the data store to clear out old nonces.</param> + /// <returns> + /// True if the context+nonce+timestamp (combination) was not previously in the database. + /// False if the nonce was stored previously with the same timestamp and context. + /// </returns> + /// <remarks> + /// The nonce must be stored for no less than the maximum time window a message may + /// be processed within before being discarded as an expired message. + /// This maximum message age can be looked up via the + /// <see cref="DotNetOpenAuth.Configuration.MessagingElement.MaximumMessageLifetime"/> + /// property, accessible via the <see cref="DotNetOpenAuth.Configuration.DotNetOpenAuthSection.Configuration"/> + /// property. + /// </remarks> + public bool StoreNonce(string context, string nonce, DateTime timestampUtc) { + Global.DataContext.Nonces.InsertOnSubmit(new Nonce { Context = context, Code = nonce, Timestamp = timestampUtc }); + try { + Global.DataContext.SubmitChanges(); + return true; + } catch (System.Data.Linq.DuplicateKeyException) { + return false; + } + } + + #endregion +}
\ No newline at end of file |