diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2009-01-10 00:11:39 -0800 |
---|---|---|
committer | Andrew <andrewarnott@gmail.com> | 2009-01-10 00:11:39 -0800 |
commit | abafbb88e5b08ff00805d868a14b4e9c5a106d6f (patch) | |
tree | fcbd070b14b0cffd1acd16f259d069cb2dd1b7f0 /src | |
parent | c02c53682ce1e609926b62f0f4fee1af0a5904fc (diff) | |
download | DotNetOpenAuth-abafbb88e5b08ff00805d868a14b4e9c5a106d6f.zip DotNetOpenAuth-abafbb88e5b08ff00805d868a14b4e9c5a106d6f.tar.gz DotNetOpenAuth-abafbb88e5b08ff00805d868a14b4e9c5a106d6f.tar.bz2 |
IDirectSslWebRequestHandler need not be given to an OpenID RP or OP instance any more. Ssl support is optional.
Diffstat (limited to 'src')
-rw-r--r-- | src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs | 2 | ||||
-rw-r--r-- | src/DotNetOpenAuth/Messaging/ErrorUtilities.cs | 4 | ||||
-rw-r--r-- | src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs | 9 | ||||
-rw-r--r-- | src/DotNetOpenAuth/Messaging/MessagingStrings.resx | 5 | ||||
-rw-r--r-- | src/DotNetOpenAuth/OpenId/Identifier.cs | 2 | ||||
-rw-r--r-- | src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs | 2 | ||||
-rw-r--r-- | src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs | 7 | ||||
-rw-r--r-- | src/DotNetOpenAuth/OpenId/Realm.cs | 2 | ||||
-rw-r--r-- | src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs | 7 | ||||
-rw-r--r-- | src/DotNetOpenAuth/OpenId/UriIdentifier.cs | 2 | ||||
-rw-r--r-- | src/DotNetOpenAuth/OpenId/XriIdentifier.cs | 6 | ||||
-rw-r--r-- | src/DotNetOpenAuth/Yadis/Yadis.cs | 13 |
12 files changed, 39 insertions, 22 deletions
diff --git a/src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs b/src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs index 782ba2b..669e4d3 100644 --- a/src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs +++ b/src/DotNetOpenAuth.Test/Mocks/MockIdentifier.cs @@ -50,7 +50,7 @@ namespace DotNetOpenAuth.Test.Mocks { return this.wrappedIdentifier.GetHashCode(); } - internal override IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler) { + internal override IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler) { return this.endpoints; } diff --git a/src/DotNetOpenAuth/Messaging/ErrorUtilities.cs b/src/DotNetOpenAuth/Messaging/ErrorUtilities.cs index daa3e00..a00292d 100644 --- a/src/DotNetOpenAuth/Messaging/ErrorUtilities.cs +++ b/src/DotNetOpenAuth/Messaging/ErrorUtilities.cs @@ -157,6 +157,7 @@ namespace DotNetOpenAuth.Messaging { /// Verifies something about the argument supplied to a method. /// </summary> /// <param name="condition">The condition that must evaluate to true to avoid an exception.</param> + /// <param name="parameterName">Name of the parameter.</param> /// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="condition"/> evaluates to <c>false</c>.</exception> internal static void VerifyArgumentInRange(bool condition, string parameterName) { if (!condition) { @@ -168,6 +169,9 @@ namespace DotNetOpenAuth.Messaging { /// Verifies something about the argument supplied to a method. /// </summary> /// <param name="condition">The condition that must evaluate to true to avoid an exception.</param> + /// <param name="parameterName">Name of the parameter.</param> + /// <param name="message">The unformatted message.</param> + /// <param name="args">The string formatting arguments.</param> /// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="condition"/> evaluates to <c>false</c>.</exception> internal static void VerifyArgumentInRange(bool condition, string parameterName, string message, params object[] args) { if (!condition) { diff --git a/src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs b/src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs index fbea069..dcddff8 100644 --- a/src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs +++ b/src/DotNetOpenAuth/Messaging/MessagingStrings.Designer.cs @@ -376,6 +376,15 @@ namespace DotNetOpenAuth.Messaging { } /// <summary> + /// Looks up a localized string similar to The provided instance of {0} does not implement the {1} interface, which is required for RequireSsl mode.. + /// </summary> + internal static string SslOnlyRequestNotSupported { + get { + return ResourceManager.GetString("SslOnlyRequestNotSupported", resourceCulture); + } + } + + /// <summary> /// Looks up a localized string similar to The stream's CanRead property returned false.. /// </summary> internal static string StreamUnreadable { diff --git a/src/DotNetOpenAuth/Messaging/MessagingStrings.resx b/src/DotNetOpenAuth/Messaging/MessagingStrings.resx index 4e06ba8..e11f874 100644 --- a/src/DotNetOpenAuth/Messaging/MessagingStrings.resx +++ b/src/DotNetOpenAuth/Messaging/MessagingStrings.resx @@ -222,6 +222,9 @@ <data name="SigningNotSupported" xml:space="preserve"> <value>This channel does not support signing messages. To support signing messages, a derived Channel type must override the Sign and IsSignatureValid methods.</value> </data> + <data name="SslOnlyRequestNotSupported" xml:space="preserve"> + <value>The provided instance of {0} does not implement the {1} interface, which is required for RequireSsl mode.</value> + </data> <data name="StreamUnreadable" xml:space="preserve"> <value>The stream's CanRead property returned false.</value> </data> @@ -270,4 +273,4 @@ <data name="WebRequestFailed" xml:space="preserve"> <value>Web request to '{0}' failed.</value> </data> -</root> +</root>
\ No newline at end of file diff --git a/src/DotNetOpenAuth/OpenId/Identifier.cs b/src/DotNetOpenAuth/OpenId/Identifier.cs index 0fd50c6..e59aa91 100644 --- a/src/DotNetOpenAuth/OpenId/Identifier.cs +++ b/src/DotNetOpenAuth/OpenId/Identifier.cs @@ -181,7 +181,7 @@ namespace DotNetOpenAuth.OpenId { /// <returns> /// An initialized structure containing the discovered provider endpoint information. /// </returns> - internal abstract IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler); + internal abstract IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler); /// <summary> /// Returns an <see cref="Identifier"/> that has no URI fragment. diff --git a/src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs b/src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs index 9729680..531356f 100644 --- a/src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs +++ b/src/DotNetOpenAuth/OpenId/NoDiscoveryIdentifier.cs @@ -72,7 +72,7 @@ namespace DotNetOpenAuth.OpenId { /// <returns> /// An initialized structure containing the discovered provider endpoint information. /// </returns> - internal override IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler) { + internal override IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler) { return Enumerable.Empty<ServiceEndpoint>(); } diff --git a/src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs b/src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs index 866aca6..5fa5d97 100644 --- a/src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs +++ b/src/DotNetOpenAuth/OpenId/Provider/OpenIdProvider.cs @@ -66,11 +66,8 @@ namespace DotNetOpenAuth.OpenId.Provider { /// Gets the web request handler to use for discovery and the part of /// authentication where direct messages are sent to an untrusted remote party. /// </summary> - internal IDirectSslWebRequestHandler WebRequestHandler { - // TODO: Since the OpenIdChannel.WebRequestHandler might be set to a non-SSL - // implementation, we should consider altering the consumers of this property - // to handle either case. - get { return this.Channel.WebRequestHandler as IDirectSslWebRequestHandler; } + internal IDirectWebRequestHandler WebRequestHandler { + get { return this.Channel.WebRequestHandler; } } /// <summary> diff --git a/src/DotNetOpenAuth/OpenId/Realm.cs b/src/DotNetOpenAuth/OpenId/Realm.cs index 507aaec..6365802 100644 --- a/src/DotNetOpenAuth/OpenId/Realm.cs +++ b/src/DotNetOpenAuth/OpenId/Realm.cs @@ -358,7 +358,7 @@ namespace DotNetOpenAuth.OpenId { /// <returns> /// The details of the endpoints if found, otherwise null. /// </returns> - internal IEnumerable<RelyingPartyEndpointDescription> Discover(IDirectSslWebRequestHandler requestHandler, bool allowRedirects) { + internal IEnumerable<RelyingPartyEndpointDescription> Discover(IDirectWebRequestHandler requestHandler, bool allowRedirects) { // Attempt YADIS discovery DiscoveryResult yadisResult = Yadis.Discover(requestHandler, this.UriWithWildcardChangedToWww, false); if (yadisResult != null) { diff --git a/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs b/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs index 32bcbdc..b73e01f 100644 --- a/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs +++ b/src/DotNetOpenAuth/OpenId/RelyingParty/OpenIdRelyingParty.cs @@ -176,11 +176,8 @@ namespace DotNetOpenAuth.OpenId.RelyingParty { /// Gets the web request handler to use for discovery and the part of /// authentication where direct messages are sent to an untrusted remote party. /// </summary> - internal IDirectSslWebRequestHandler WebRequestHandler { - // TODO: Since the OpenIdChannel.WebRequestHandler might be set to a non-SSL - // implementation, we should consider altering the consumers of this property - // to handle either case. - get { return this.Channel.WebRequestHandler as IDirectSslWebRequestHandler; } + internal IDirectWebRequestHandler WebRequestHandler { + get { return this.Channel.WebRequestHandler; } } /// <summary> diff --git a/src/DotNetOpenAuth/OpenId/UriIdentifier.cs b/src/DotNetOpenAuth/OpenId/UriIdentifier.cs index b03963e..a55f1d8 100644 --- a/src/DotNetOpenAuth/OpenId/UriIdentifier.cs +++ b/src/DotNetOpenAuth/OpenId/UriIdentifier.cs @@ -203,7 +203,7 @@ namespace DotNetOpenAuth.OpenId { /// <returns> /// An initialized structure containing the discovered provider endpoint information. /// </returns> - internal override IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler) { + internal override IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler) { List<ServiceEndpoint> endpoints = new List<ServiceEndpoint>(); // Attempt YADIS discovery diff --git a/src/DotNetOpenAuth/OpenId/XriIdentifier.cs b/src/DotNetOpenAuth/OpenId/XriIdentifier.cs index b3d6375..ab4cdb9 100644 --- a/src/DotNetOpenAuth/OpenId/XriIdentifier.cs +++ b/src/DotNetOpenAuth/OpenId/XriIdentifier.cs @@ -157,7 +157,7 @@ namespace DotNetOpenAuth.OpenId { /// <returns> /// An initialized structure containing the discovered provider endpoint information. /// </returns> - internal override IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler) { + internal override IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler) { return this.DownloadXrds(requestHandler).CreateServiceEndpoints(this); } @@ -168,7 +168,7 @@ namespace DotNetOpenAuth.OpenId { /// <param name="requestHandler">The request handler to use in discovery.</param> /// <param name="userSuppliedIdentifier">The user supplied identifier, which may differ from this XRI instance due to multiple discovery steps.</param> /// <returns>A list of service endpoints offered for this identifier.</returns> - internal IEnumerable<ServiceEndpoint> Discover(IDirectSslWebRequestHandler requestHandler, XriIdentifier userSuppliedIdentifier) { + internal IEnumerable<ServiceEndpoint> Discover(IDirectWebRequestHandler requestHandler, XriIdentifier userSuppliedIdentifier) { return this.DownloadXrds(requestHandler).CreateServiceEndpoints(userSuppliedIdentifier); } @@ -225,7 +225,7 @@ namespace DotNetOpenAuth.OpenId { /// </summary> /// <param name="requestHandler">The request handler.</param> /// <returns>The XRDS document.</returns> - private XrdsDocument DownloadXrds(IDirectSslWebRequestHandler requestHandler) { + private XrdsDocument DownloadXrds(IDirectWebRequestHandler requestHandler) { XrdsDocument doc; using (var xrdsResponse = Yadis.Request(requestHandler, this.XrdsUrl, this.IsDiscoverySecureEndToEnd)) { doc = new XrdsDocument(XmlReader.Create(xrdsResponse.ResponseStream)); diff --git a/src/DotNetOpenAuth/Yadis/Yadis.cs b/src/DotNetOpenAuth/Yadis/Yadis.cs index 9df6c69..89a74f6 100644 --- a/src/DotNetOpenAuth/Yadis/Yadis.cs +++ b/src/DotNetOpenAuth/Yadis/Yadis.cs @@ -41,7 +41,7 @@ namespace DotNetOpenAuth.Yadis { /// or if <paramref name="requireSsl"/> is true but part of discovery /// is not protected by SSL. /// </returns> - public static DiscoveryResult Discover(IDirectSslWebRequestHandler requestHandler, UriIdentifier uri, bool requireSsl) { + public static DiscoveryResult Discover(IDirectWebRequestHandler requestHandler, UriIdentifier uri, bool requireSsl) { DirectWebResponse response; try { if (requireSsl && !string.Equals(uri.Uri.Scheme, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase)) { @@ -122,7 +122,8 @@ namespace DotNetOpenAuth.Yadis { /// <param name="requireSsl">Whether only HTTPS URLs should ever be retrieved.</param> /// <param name="acceptTypes">The value of the Accept HTTP header to include in the request.</param> /// <returns>The HTTP response retrieved from the request.</returns> - internal static DirectWebResponse Request(IDirectSslWebRequestHandler requestHandler, Uri uri, bool requireSsl, params string[] acceptTypes) { + internal static DirectWebResponse Request(IDirectWebRequestHandler requestHandler, Uri uri, bool requireSsl, params string[] acceptTypes) { + ErrorUtilities.VerifyArgumentNotNull(requestHandler, "requestHandler"); ErrorUtilities.VerifyArgumentNotNull(uri, "uri"); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); @@ -131,7 +132,13 @@ namespace DotNetOpenAuth.Yadis { request.Accept = string.Join(",", acceptTypes); } - return requestHandler.GetResponse(request, requireSsl); + if (requireSsl) { + var sslRequestHandler = requestHandler as IDirectSslWebRequestHandler; + ErrorUtilities.VerifyArgument(sslRequestHandler != null, MessagingStrings.SslOnlyRequestNotSupported, typeof(IDirectWebRequestHandler).Name, typeof(IDirectSslWebRequestHandler).Name); + return sslRequestHandler.GetResponse(request, requireSsl); + } else { + return requestHandler.GetResponse(request); + } } /// <summary> |