summaryrefslogtreecommitdiffstats
path: root/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2012-02-02 19:55:29 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2012-02-02 19:55:29 -0800
commitc1c763ef7ae943c7945c6d75459d02613329dd44 (patch)
tree3b39d9b629fc2435813fb666ad2e8bbb025714bf /samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs
parent492f4566b70142e5fc41a9c3fb4564c64c66ac5f (diff)
downloadDotNetOpenAuth-c1c763ef7ae943c7945c6d75459d02613329dd44.zip
DotNetOpenAuth-c1c763ef7ae943c7945c6d75459d02613329dd44.tar.gz
DotNetOpenAuth-c1c763ef7ae943c7945c6d75459d02613329dd44.tar.bz2
Added OAuth 1.0 samples from v3.4 branch and fixed them up a bit so that
they work here. Fixes #64
Diffstat (limited to 'samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs')
-rw-r--r--samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs55
1 files changed, 55 insertions, 0 deletions
diff --git a/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs b/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs
new file mode 100644
index 0000000..1f8f56e
--- /dev/null
+++ b/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs
@@ -0,0 +1,55 @@
+namespace OAuthServiceProvider.Code {
+ 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