summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-03-06 15:02:15 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2009-03-06 15:02:15 -0800
commit94ffe18e39e72d1b424ebfee3aeaada8f9f22950 (patch)
treeb07cf0655620e8d96356d336b7563a696013dbeb
parent58669d51de6db631c3b56a53e4a7aa5a384e5fec (diff)
downloadDotNetOpenAuth-94ffe18e39e72d1b424ebfee3aeaada8f9f22950.zip
DotNetOpenAuth-94ffe18e39e72d1b424ebfee3aeaada8f9f22950.tar.gz
DotNetOpenAuth-94ffe18e39e72d1b424ebfee3aeaada8f9f22950.tar.bz2
Made all the types serializable that are necessary so Providers can use serialized session state to store pending authentication requests.
Fixes Google Code Issue 185.
-rw-r--r--src/DotNetOpenAuth/Messaging/EmptyDictionary.cs1
-rw-r--r--src/DotNetOpenAuth/Messaging/EmptyList.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchRequest.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchResponse.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreRequest.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreResponse.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/ExtensionBase.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Messages/CheckIdRequest.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Messages/IndirectResponseBase.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Messages/IndirectSignedResponse.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Messages/NegativeAssertionResponse.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Messages/PositiveAssertionResponse.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Messages/RequestBase.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Messages/SignedResponseRequest.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Provider/AuthenticationRequest.cs1
-rw-r--r--src/DotNetOpenAuth/OpenId/Provider/Request.cs28
-rw-r--r--src/DotNetOpenAuth/OpenId/Realm.cs1
21 files changed, 44 insertions, 4 deletions
diff --git a/src/DotNetOpenAuth/Messaging/EmptyDictionary.cs b/src/DotNetOpenAuth/Messaging/EmptyDictionary.cs
index df2f5a7..22c947a 100644
--- a/src/DotNetOpenAuth/Messaging/EmptyDictionary.cs
+++ b/src/DotNetOpenAuth/Messaging/EmptyDictionary.cs
@@ -14,6 +14,7 @@ namespace DotNetOpenAuth.Messaging {
/// </summary>
/// <typeparam name="TKey">The type of the key.</typeparam>
/// <typeparam name="TValue">The type of the value.</typeparam>
+ [Serializable]
internal class EmptyDictionary<TKey, TValue> : IDictionary<TKey, TValue> {
/// <summary>
/// The singleton instance of the empty dictionary.
diff --git a/src/DotNetOpenAuth/Messaging/EmptyList.cs b/src/DotNetOpenAuth/Messaging/EmptyList.cs
index e9a83e9..b418623 100644
--- a/src/DotNetOpenAuth/Messaging/EmptyList.cs
+++ b/src/DotNetOpenAuth/Messaging/EmptyList.cs
@@ -12,6 +12,7 @@ namespace DotNetOpenAuth.Messaging {
/// An empty, read-only list.
/// </summary>
/// <typeparam name="T">The type the list claims to include.</typeparam>
+ [Serializable]
internal class EmptyList<T> : IList<T> {
/// <summary>
/// The singleton instance of the empty list.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchRequest.cs b/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchRequest.cs
index 8386bce..0ba75bb 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchRequest.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchRequest.cs
@@ -15,6 +15,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.AttributeExchange {
/// <summary>
/// The Attribute Exchange Fetch message, request leg.
/// </summary>
+ [Serializable]
public sealed class FetchRequest : ExtensionBase, IMessageWithEvents {
/// <summary>
/// The factory method that may be used in deserialization of this message.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchResponse.cs b/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchResponse.cs
index 1b3c05b..8395253 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchResponse.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/FetchResponse.cs
@@ -16,6 +16,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.AttributeExchange {
/// <summary>
/// The Attribute Exchange Fetch message, response leg.
/// </summary>
+ [Serializable]
public sealed class FetchResponse : ExtensionBase, IMessageWithEvents {
/// <summary>
/// The factory method that may be used in deserialization of this message.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreRequest.cs b/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreRequest.cs
index 41f5a2f..b4df366 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreRequest.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreRequest.cs
@@ -14,6 +14,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.AttributeExchange {
/// <summary>
/// The Attribute Exchange Store message, request leg.
/// </summary>
+ [Serializable]
public sealed class StoreRequest : ExtensionBase, IMessageWithEvents {
/// <summary>
/// The factory method that may be used in deserialization of this message.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreResponse.cs b/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreResponse.cs
index 97178b6..5f80bbe 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreResponse.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/AttributeExchange/StoreResponse.cs
@@ -12,6 +12,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.AttributeExchange {
/// <summary>
/// The Attribute Exchange Store message, response leg.
/// </summary>
+ [Serializable]
public sealed class StoreResponse : ExtensionBase {
/// <summary>
/// The factory method that may be used in deserialization of this message.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/ExtensionBase.cs b/src/DotNetOpenAuth/OpenId/Extensions/ExtensionBase.cs
index 27700eb..3ca979d 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/ExtensionBase.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/ExtensionBase.cs
@@ -15,6 +15,7 @@ namespace DotNetOpenAuth.OpenId.Extensions {
/// <summary>
/// A handy base class for built-in extensions.
/// </summary>
+ [Serializable]
public class ExtensionBase : IOpenIdMessageExtension {
/// <summary>
/// Backing store for the <see cref="IOpenIdMessageExtension.TypeUri"/> property.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs
index e3611e9..5b319be 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyRequest.cs
@@ -13,6 +13,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy {
/// <summary>
/// The PAPE request part of an OpenID Authentication request message.
/// </summary>
+ [Serializable]
public sealed class PolicyRequest : ExtensionBase, IMessageWithEvents {
/// <summary>
/// The factory method that may be used in deserialization of this message.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs
index 4817a4e..ff03400 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/ProviderAuthenticationPolicy/PolicyResponse.cs
@@ -15,6 +15,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy {
/// <summary>
/// The PAPE response part of an OpenID Authentication response message.
/// </summary>
+ [Serializable]
public sealed class PolicyResponse : ExtensionBase, IMessageWithEvents {
/// <summary>
/// The factory method that may be used in deserialization of this message.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs
index 99e937e..827bca2 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsRequest.cs
@@ -17,6 +17,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration {
/// <summary>
/// Carries the request/require/none demand state of the simple registration fields.
/// </summary>
+ [Serializable]
public sealed class ClaimsRequest : ExtensionBase {
/// <summary>
/// The factory method that may be used in deserialization of this message.
diff --git a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs
index 5e17b44..1d40eec 100644
--- a/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs
+++ b/src/DotNetOpenAuth/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs
@@ -20,6 +20,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration {
/// A struct storing Simple Registration field values describing an
/// authenticating user.
/// </summary>
+ [Serializable]
public sealed class ClaimsResponse : ExtensionBase, IClientScriptExtensionResponse, IMessageWithEvents {
/// <summary>
/// The factory method that may be used in deserialization of this message.
diff --git a/src/DotNetOpenAuth/OpenId/Messages/CheckIdRequest.cs b/src/DotNetOpenAuth/OpenId/Messages/CheckIdRequest.cs
index a983bf3..09c36a5 100644
--- a/src/DotNetOpenAuth/OpenId/Messages/CheckIdRequest.cs
+++ b/src/DotNetOpenAuth/OpenId/Messages/CheckIdRequest.cs
@@ -20,6 +20,7 @@ namespace DotNetOpenAuth.OpenId.Messages {
/// This message type satisfies OpenID 2.0 section 9.1.
/// </remarks>
[DebuggerDisplay("OpenID {Version} {Mode} {ClaimedIdentifier}")]
+ [Serializable]
internal class CheckIdRequest : SignedResponseRequest {
/// <summary>
/// Initializes a new instance of the <see cref="CheckIdRequest"/> class.
diff --git a/src/DotNetOpenAuth/OpenId/Messages/IndirectResponseBase.cs b/src/DotNetOpenAuth/OpenId/Messages/IndirectResponseBase.cs
index 322ec60..1147790 100644
--- a/src/DotNetOpenAuth/OpenId/Messages/IndirectResponseBase.cs
+++ b/src/DotNetOpenAuth/OpenId/Messages/IndirectResponseBase.cs
@@ -14,6 +14,7 @@ namespace DotNetOpenAuth.OpenId.Messages {
/// <summary>
/// A common base class from which indirect response messages should derive.
/// </summary>
+ [Serializable]
internal class IndirectResponseBase : RequestBase {
/// <summary>
/// Initializes a new instance of the <see cref="IndirectResponseBase"/> class.
diff --git a/src/DotNetOpenAuth/OpenId/Messages/IndirectSignedResponse.cs b/src/DotNetOpenAuth/OpenId/Messages/IndirectSignedResponse.cs
index 7e9f054..e5c4e3a 100644
--- a/src/DotNetOpenAuth/OpenId/Messages/IndirectSignedResponse.cs
+++ b/src/DotNetOpenAuth/OpenId/Messages/IndirectSignedResponse.cs
@@ -24,6 +24,7 @@ namespace DotNetOpenAuth.OpenId.Messages {
/// payload is signed so the Relying Party can verify it has not been tampered with.
/// </summary>
[DebuggerDisplay("OpenID {Version} {Mode} (no id assertion)")]
+ [Serializable]
internal class IndirectSignedResponse : IndirectResponseBase, ITamperResistantOpenIdMessage, IProtocolMessageWithExtensions {
/// <summary>
/// The allowed date/time formats for the response_nonce parameter.
diff --git a/src/DotNetOpenAuth/OpenId/Messages/NegativeAssertionResponse.cs b/src/DotNetOpenAuth/OpenId/Messages/NegativeAssertionResponse.cs
index 2e742ea..433bd4d 100644
--- a/src/DotNetOpenAuth/OpenId/Messages/NegativeAssertionResponse.cs
+++ b/src/DotNetOpenAuth/OpenId/Messages/NegativeAssertionResponse.cs
@@ -16,6 +16,7 @@ namespace DotNetOpenAuth.OpenId.Messages {
/// The message OpenID Providers send back to Relying Parties to refuse
/// to assert the identity of a user.
/// </summary>
+ [Serializable]
internal class NegativeAssertionResponse : IndirectResponseBase {
/// <summary>
/// Initializes a new instance of the <see cref="NegativeAssertionResponse"/> class.
diff --git a/src/DotNetOpenAuth/OpenId/Messages/PositiveAssertionResponse.cs b/src/DotNetOpenAuth/OpenId/Messages/PositiveAssertionResponse.cs
index b167dc8..006ea93 100644
--- a/src/DotNetOpenAuth/OpenId/Messages/PositiveAssertionResponse.cs
+++ b/src/DotNetOpenAuth/OpenId/Messages/PositiveAssertionResponse.cs
@@ -21,6 +21,7 @@ namespace DotNetOpenAuth.OpenId.Messages {
/// user operating the user agent is in fact some specific user known to the Provider.
/// </summary>
[DebuggerDisplay("OpenID {Version} {Mode} {LocalIdentifier}")]
+ [Serializable]
internal class PositiveAssertionResponse : IndirectSignedResponse {
/// <summary>
/// Initializes a new instance of the <see cref="PositiveAssertionResponse"/> class.
diff --git a/src/DotNetOpenAuth/OpenId/Messages/RequestBase.cs b/src/DotNetOpenAuth/OpenId/Messages/RequestBase.cs
index 3339e2e..80ce308 100644
--- a/src/DotNetOpenAuth/OpenId/Messages/RequestBase.cs
+++ b/src/DotNetOpenAuth/OpenId/Messages/RequestBase.cs
@@ -15,6 +15,7 @@ namespace DotNetOpenAuth.OpenId.Messages {
/// A common base class for OpenID request messages and indirect responses (since they are ultimately requests).
/// </summary>
[DebuggerDisplay("OpenID {Version} {Mode}")]
+ [Serializable]
internal class RequestBase : IDirectedProtocolMessage {
/// <summary>
/// The openid.ns parameter in the message.
diff --git a/src/DotNetOpenAuth/OpenId/Messages/SignedResponseRequest.cs b/src/DotNetOpenAuth/OpenId/Messages/SignedResponseRequest.cs
index 9f3fbaf..9330af7 100644
--- a/src/DotNetOpenAuth/OpenId/Messages/SignedResponseRequest.cs
+++ b/src/DotNetOpenAuth/OpenId/Messages/SignedResponseRequest.cs
@@ -17,6 +17,7 @@ namespace DotNetOpenAuth.OpenId.Messages {
/// An indirect request from a Relying Party to a Provider where the response
/// is expected to be signed.
/// </summary>
+ [Serializable]
internal class SignedResponseRequest : RequestBase, IProtocolMessageWithExtensions {
/// <summary>
/// Backing store for the <see cref="Extensions"/> property.
diff --git a/src/DotNetOpenAuth/OpenId/Provider/AuthenticationRequest.cs b/src/DotNetOpenAuth/OpenId/Provider/AuthenticationRequest.cs
index 0a27f95..fba41f4 100644
--- a/src/DotNetOpenAuth/OpenId/Provider/AuthenticationRequest.cs
+++ b/src/DotNetOpenAuth/OpenId/Provider/AuthenticationRequest.cs
@@ -18,6 +18,7 @@ namespace DotNetOpenAuth.OpenId.Provider {
/// so that OpenID Provider sites can easily respond to authentication
/// requests.
/// </summary>
+ [Serializable]
internal class AuthenticationRequest : Request, IAuthenticationRequest {
/// <summary>
/// The positive assertion to send, if the host site chooses to send it.
diff --git a/src/DotNetOpenAuth/OpenId/Provider/Request.cs b/src/DotNetOpenAuth/OpenId/Provider/Request.cs
index 764e5b0..c32c149 100644
--- a/src/DotNetOpenAuth/OpenId/Provider/Request.cs
+++ b/src/DotNetOpenAuth/OpenId/Provider/Request.cs
@@ -16,6 +16,7 @@ namespace DotNetOpenAuth.OpenId.Provider {
/// Implements the <see cref="IRequest"/> interface for all incoming
/// request messages to an OpenID Provider.
/// </summary>
+ [Serializable]
internal abstract class Request : IRequest {
/// <summary>
/// The incoming request message.
@@ -29,6 +30,17 @@ namespace DotNetOpenAuth.OpenId.Provider {
private readonly IProtocolMessageWithExtensions extensibleMessage;
/// <summary>
+ /// The version of the OpenID protocol to use.
+ /// </summary>
+ private readonly Version protocolVersion;
+
+ /// <summary>
+ /// Backing store for the <see cref="Protocol"/> property.
+ /// </summary>
+ [NonSerialized]
+ private Protocol protocol;
+
+ /// <summary>
/// The list of extensions to add to the response message.
/// </summary>
private List<IOpenIdMessageExtension> responseExtensions = new List<IOpenIdMessageExtension>();
@@ -41,7 +53,7 @@ namespace DotNetOpenAuth.OpenId.Provider {
ErrorUtilities.VerifyArgumentNotNull(request, "request");
this.request = request;
- this.Protocol = Protocol.Lookup(this.request.Version);
+ this.protocolVersion = this.request.Version;
this.extensibleMessage = request as IProtocolMessageWithExtensions;
}
@@ -52,7 +64,7 @@ namespace DotNetOpenAuth.OpenId.Provider {
protected Request(Version version) {
ErrorUtilities.VerifyArgumentNotNull(version, "version");
- this.Protocol = Protocol.Lookup(version);
+ this.protocolVersion = version;
}
#region IRequest Members
@@ -109,9 +121,17 @@ namespace DotNetOpenAuth.OpenId.Provider {
protected abstract IProtocolMessage ResponseMessage { get; }
/// <summary>
- /// Gets the protocol version used in the request..
+ /// Gets the protocol version used in the request.
/// </summary>
- protected Protocol Protocol { get; private set; }
+ protected Protocol Protocol {
+ get {
+ if (this.protocol == null) {
+ this.protocol = Protocol.Lookup(this.protocolVersion);
+ }
+
+ return this.protocol;
+ }
+ }
#region IRequest Methods
diff --git a/src/DotNetOpenAuth/OpenId/Realm.cs b/src/DotNetOpenAuth/OpenId/Realm.cs
index b3b86e0..de8a83d 100644
--- a/src/DotNetOpenAuth/OpenId/Realm.cs
+++ b/src/DotNetOpenAuth/OpenId/Realm.cs
@@ -24,6 +24,7 @@ namespace DotNetOpenAuth.OpenId {
/// This fills the OpenID Authentication 2.0 specification for realms.
/// See http://openid.net/specs/openid-authentication-2_0.html#realms
/// </remarks>
+ [Serializable]
public class Realm {
/// <summary>
/// A regex used to detect a wildcard that is being used in the realm.