summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.OpenId.RelyingParty
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOpenAuth.OpenId.RelyingParty')
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/DotNetOpenAuth.OpenId.RelyingParty.csproj7
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/ChannelElements/OpenIdRelyingPartyMessageFactory.cs10
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/IOpenIdRelyingParty.cs73
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/OpenIdRelyingPartyShim.cs71
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/AssociateRequestRelyingParty.cs18
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/IAssociateSuccessfulResponseRelyingPartyContract.cs (renamed from src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/AssociateSuccessfulResponseRelyingPartyContract.cs)2
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/IRelyingPartyAssociationStore.cs4
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/OpenIdRelyingParty.cs10
8 files changed, 105 insertions, 90 deletions
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/DotNetOpenAuth.OpenId.RelyingParty.csproj b/src/DotNetOpenAuth.OpenId.RelyingParty/DotNetOpenAuth.OpenId.RelyingParty.csproj
index 6fa3076..3ebd698 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/DotNetOpenAuth.OpenId.RelyingParty.csproj
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty/DotNetOpenAuth.OpenId.RelyingParty.csproj
@@ -20,6 +20,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
</PropertyGroup>
<ItemGroup>
+ <Compile Include="OpenId\Interop\IOpenIdRelyingParty.cs" />
<Compile Include="OpenId\RelyingParty\Behaviors\AXFetchAsSregTransform.cs" />
<Compile Include="OpenId\RelyingParty\Behaviors\GsaIcamProfile.cs" />
<Compile Include="OpenId\ChannelElements\ExtensionsBindingElementRelyingParty.cs" />
@@ -33,9 +34,9 @@
<Compile Include="OpenId\Interop\AuthenticationResponseShim.cs" />
<Compile Include="OpenId\Interop\ClaimsResponseShim.cs" />
<Compile Include="OpenId\Interop\OpenIdRelyingPartyShim.cs" />
- <Compile Include="OpenId\Messages\AssociateDiffieHellmanRelyingPartyResponse.cs" Condition=" '$(ExcludeDiffieHellman)' != 'true' " />
+ <Compile Include="OpenId\Messages\AssociateDiffieHellmanRelyingPartyResponse.cs" />
<Compile Include="OpenId\Messages\AssociateRequestRelyingParty.cs" />
- <Compile Include="OpenId\Messages\AssociateSuccessfulResponseRelyingPartyContract.cs" />
+ <Compile Include="OpenId\Messages\IAssociateSuccessfulResponseRelyingPartyContract.cs" />
<Compile Include="OpenId\Messages\IAssociateSuccessfulResponseRelyingParty.cs" />
<Compile Include="OpenId\Messages\AssociateUnencryptedResponseRelyingParty.cs" />
<Compile Include="OpenId\RelyingParty\CryptoKeyStoreAsRelyingPartyAssociationStore.cs" />
@@ -70,7 +71,7 @@
<Project>{3896A32A-E876-4C23-B9B8-78E17D134CD3}</Project>
<Name>DotNetOpenAuth.OpenId</Name>
</ProjectReference>
- <ProjectReference Include="..\Org.Mentalis.Security.Cryptography\Org.Mentalis.Security.Cryptography.csproj" Condition=" '$(ExcludeDiffieHellman)' != 'true' ">
+ <ProjectReference Include="..\Org.Mentalis.Security.Cryptography\Org.Mentalis.Security.Cryptography.csproj">
<Project>{26DC877F-5987-48DD-9DDB-E62F2DE0E150}</Project>
<Name>Org.Mentalis.Security.Cryptography</Name>
</ProjectReference>
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/ChannelElements/OpenIdRelyingPartyMessageFactory.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/ChannelElements/OpenIdRelyingPartyMessageFactory.cs
index ea771e1..957fd1b 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/ChannelElements/OpenIdRelyingPartyMessageFactory.cs
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/ChannelElements/OpenIdRelyingPartyMessageFactory.cs
@@ -95,12 +95,12 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
// This is a special recognized error case that we create a special message for.
message = new AssociateUnsuccessfulResponse(protocol.Version, associateRequest);
} else if (message == null) {
-#if !ExcludeDiffieHellman
- var associateDiffieHellmanRequest = request as AssociateDiffieHellmanRequest;
- if (associateDiffieHellmanRequest != null) {
- message = new AssociateDiffieHellmanRelyingPartyResponse(protocol.Version, associateDiffieHellmanRequest);
+ if (OpenIdUtilities.IsDiffieHellmanPresent) {
+ var associateDiffieHellmanRequest = request as AssociateDiffieHellmanRequest;
+ if (associateDiffieHellmanRequest != null) {
+ message = new AssociateDiffieHellmanRelyingPartyResponse(protocol.Version, associateDiffieHellmanRequest);
+ }
}
-#endif
var associateUnencryptedRequest = request as AssociateUnencryptedRequest;
if (associateUnencryptedRequest != null) {
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/IOpenIdRelyingParty.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/IOpenIdRelyingParty.cs
new file mode 100644
index 0000000..398c284
--- /dev/null
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/IOpenIdRelyingParty.cs
@@ -0,0 +1,73 @@
+//-----------------------------------------------------------------------
+// <copyright file="IOpenIdRelyingParty.cs" company="Outercurve Foundation">
+// Copyright (c) Outercurve Foundation. All rights reserved.
+// </copyright>
+//-----------------------------------------------------------------------
+
+namespace DotNetOpenAuth.OpenId.Interop {
+ using System.Diagnostics.CodeAnalysis;
+ using System.Runtime.InteropServices;
+ using DotNetOpenAuth.Messaging;
+
+ /// <summary>
+ /// The COM interface describing the DotNetOpenAuth functionality available to
+ /// COM client OpenID relying parties.
+ /// </summary>
+ [Guid("56BD3DB0-EE0D-4191-ADFC-1F3705CD2636")]
+ [InterfaceType(ComInterfaceType.InterfaceIsDual)]
+ public interface IOpenIdRelyingParty {
+ /// <summary>
+ /// Creates an authentication request to verify that a user controls
+ /// some given Identifier.
+ /// </summary>
+ /// <param name="userSuppliedIdentifier">
+ /// The Identifier supplied by the user. This may be a URL, an XRI or i-name.
+ /// </param>
+ /// <param name="realm">
+ /// The shorest URL that describes this relying party web site's address.
+ /// For example, if your login page is found at https://www.example.com/login.aspx,
+ /// your realm would typically be https://www.example.com/.
+ /// </param>
+ /// <param name="returnToUrl">
+ /// The URL of the login page, or the page prepared to receive authentication
+ /// responses from the OpenID Provider.
+ /// </param>
+ /// <returns>
+ /// An authentication request object that describes the HTTP response to
+ /// send to the user agent to initiate the authentication.
+ /// </returns>
+ /// <exception cref="ProtocolException">Thrown if no OpenID endpoint could be found.</exception>
+ string CreateRequest(string userSuppliedIdentifier, string realm, string returnToUrl);
+
+ /// <summary>
+ /// Creates an authentication request to verify that a user controls
+ /// some given Identifier.
+ /// </summary>
+ /// <param name="userSuppliedIdentifier">The Identifier supplied by the user. This may be a URL, an XRI or i-name.</param>
+ /// <param name="realm">The shorest URL that describes this relying party web site's address.
+ /// For example, if your login page is found at https://www.example.com/login.aspx,
+ /// your realm would typically be https://www.example.com/.</param>
+ /// <param name="returnToUrl">The URL of the login page, or the page prepared to receive authentication
+ /// responses from the OpenID Provider.</param>
+ /// <param name="optionalSreg">A comma-delimited list of simple registration fields to request as optional.</param>
+ /// <param name="requiredSreg">A comma-delimited list of simple registration fields to request as required.</param>
+ /// <returns>
+ /// An authentication request object that describes the HTTP response to
+ /// send to the user agent to initiate the authentication.
+ /// </returns>
+ /// <exception cref="ProtocolException">Thrown if no OpenID endpoint could be found.</exception>
+ [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Sreg", Justification = "Accepted acronym")]
+ string CreateRequestWithSimpleRegistration(string userSuppliedIdentifier, string realm, string returnToUrl, string optionalSreg, string requiredSreg);
+
+ /// <summary>
+ /// Gets the result of a user agent's visit to his OpenId provider in an
+ /// authentication attempt. Null if no response is available.
+ /// </summary>
+ /// <param name="url">The incoming request URL .</param>
+ /// <param name="form">The form data that may have been included in the case of a POST request.</param>
+ /// <returns>The Provider's response to a previous authentication request, or null if no response is present.</returns>
+#pragma warning disable 0618 // we're using the COM type properly
+ AuthenticationResponseShim ProcessAuthentication(string url, string form);
+#pragma warning restore 0618
+ }
+} \ No newline at end of file
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/OpenIdRelyingPartyShim.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/OpenIdRelyingPartyShim.cs
index 97b3780..eb37d86 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/OpenIdRelyingPartyShim.cs
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/OpenIdRelyingPartyShim.cs
@@ -6,6 +6,7 @@
namespace DotNetOpenAuth.OpenId.Interop {
using System;
+ using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Runtime.InteropServices;
@@ -16,68 +17,6 @@ namespace DotNetOpenAuth.OpenId.Interop {
using DotNetOpenAuth.OpenId.RelyingParty;
/// <summary>
- /// The COM interface describing the DotNetOpenAuth functionality available to
- /// COM client OpenID relying parties.
- /// </summary>
- [Guid("56BD3DB0-EE0D-4191-ADFC-1F3705CD2636")]
- [InterfaceType(ComInterfaceType.InterfaceIsDual)]
- public interface IOpenIdRelyingParty {
- /// <summary>
- /// Creates an authentication request to verify that a user controls
- /// some given Identifier.
- /// </summary>
- /// <param name="userSuppliedIdentifier">
- /// The Identifier supplied by the user. This may be a URL, an XRI or i-name.
- /// </param>
- /// <param name="realm">
- /// The shorest URL that describes this relying party web site's address.
- /// For example, if your login page is found at https://www.example.com/login.aspx,
- /// your realm would typically be https://www.example.com/.
- /// </param>
- /// <param name="returnToUrl">
- /// The URL of the login page, or the page prepared to receive authentication
- /// responses from the OpenID Provider.
- /// </param>
- /// <returns>
- /// An authentication request object that describes the HTTP response to
- /// send to the user agent to initiate the authentication.
- /// </returns>
- /// <exception cref="ProtocolException">Thrown if no OpenID endpoint could be found.</exception>
- string CreateRequest(string userSuppliedIdentifier, string realm, string returnToUrl);
-
- /// <summary>
- /// Creates an authentication request to verify that a user controls
- /// some given Identifier.
- /// </summary>
- /// <param name="userSuppliedIdentifier">The Identifier supplied by the user. This may be a URL, an XRI or i-name.</param>
- /// <param name="realm">The shorest URL that describes this relying party web site's address.
- /// For example, if your login page is found at https://www.example.com/login.aspx,
- /// your realm would typically be https://www.example.com/.</param>
- /// <param name="returnToUrl">The URL of the login page, or the page prepared to receive authentication
- /// responses from the OpenID Provider.</param>
- /// <param name="optionalSreg">A comma-delimited list of simple registration fields to request as optional.</param>
- /// <param name="requiredSreg">A comma-delimited list of simple registration fields to request as required.</param>
- /// <returns>
- /// An authentication request object that describes the HTTP response to
- /// send to the user agent to initiate the authentication.
- /// </returns>
- /// <exception cref="ProtocolException">Thrown if no OpenID endpoint could be found.</exception>
- [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Sreg", Justification = "Accepted acronym")]
- string CreateRequestWithSimpleRegistration(string userSuppliedIdentifier, string realm, string returnToUrl, string optionalSreg, string requiredSreg);
-
- /// <summary>
- /// Gets the result of a user agent's visit to his OpenId provider in an
- /// authentication attempt. Null if no response is available.
- /// </summary>
- /// <param name="url">The incoming request URL .</param>
- /// <param name="form">The form data that may have been included in the case of a POST request.</param>
- /// <returns>The Provider's response to a previous authentication request, or null if no response is present.</returns>
-#pragma warning disable 0618 // we're using the COM type properly
- AuthenticationResponseShim ProcessAuthentication(string url, string form);
-#pragma warning restore 0618
- }
-
- /// <summary>
/// Implementation of <see cref="IOpenIdRelyingParty"/>, providing a subset of the
/// functionality available to .NET clients.
/// </summary>
@@ -173,12 +112,14 @@ namespace DotNetOpenAuth.OpenId.Interop {
/// <param name="form">The form data that may have been included in the case of a POST request.</param>
/// <returns>The Provider's response to a previous authentication request, or null if no response is present.</returns>
public AuthenticationResponseShim ProcessAuthentication(string url, string form) {
- HttpRequestInfo requestInfo = new HttpRequestInfo { UrlBeforeRewriting = new Uri(url) };
+ string method = "GET";
+ NameValueCollection formMap = null;
if (!string.IsNullOrEmpty(form)) {
- requestInfo.HttpMethod = "POST";
- requestInfo.InputStream = new MemoryStream(Encoding.Unicode.GetBytes(form));
+ method = "POST";
+ formMap = HttpUtility.ParseQueryString(form);
}
+ HttpRequestBase requestInfo = new HttpRequestInfo(method, new Uri(url), form: formMap);
var response = relyingParty.GetResponse(requestInfo);
if (response != null) {
return new AuthenticationResponseShim(response);
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/AssociateRequestRelyingParty.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/AssociateRequestRelyingParty.cs
index 28deb20..1ac8488 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/AssociateRequestRelyingParty.cs
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/AssociateRequestRelyingParty.cs
@@ -68,15 +68,15 @@ namespace DotNetOpenAuth.OpenId.Messages {
associateRequest.AssociationType = associationType;
return associateRequest;
} else {
-#if !ExcludeDiffieHellman
- var associateRequest = new AssociateDiffieHellmanRequest(provider.Version, provider.Uri);
- associateRequest.AssociationType = associationType;
- associateRequest.SessionType = sessionType;
- associateRequest.InitializeRequest();
- return associateRequest;
-#else
- return null;
-#endif
+ if (OpenIdUtilities.IsDiffieHellmanPresent) {
+ var associateRequest = new AssociateDiffieHellmanRequest(provider.Version, provider.Uri);
+ associateRequest.AssociationType = associationType;
+ associateRequest.SessionType = sessionType;
+ associateRequest.InitializeRequest();
+ return associateRequest;
+ } else {
+ return null;
+ }
}
}
}
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/AssociateSuccessfulResponseRelyingPartyContract.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/IAssociateSuccessfulResponseRelyingPartyContract.cs
index 9da19d7..e870c33 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/AssociateSuccessfulResponseRelyingPartyContract.cs
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Messages/IAssociateSuccessfulResponseRelyingPartyContract.cs
@@ -1,5 +1,5 @@
//-----------------------------------------------------------------------
-// <copyright file="AssociateSuccessfulResponseRelyingPartyContract.cs" company="Outercurve Foundation">
+// <copyright file="IAssociateSuccessfulResponseRelyingPartyContract.cs" company="Outercurve Foundation">
// Copyright (c) Outercurve Foundation. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/IRelyingPartyAssociationStore.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/IRelyingPartyAssociationStore.cs
index 1cf3e4c..a97449e 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/IRelyingPartyAssociationStore.cs
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/IRelyingPartyAssociationStore.cs
@@ -126,7 +126,7 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
/// </returns>
Association IRelyingPartyAssociationStore.GetAssociation(Uri providerEndpoint, string handle) {
Requires.NotNull(providerEndpoint, "providerEndpoint");
- Contract.Requires(!String.IsNullOrEmpty(handle));
+ Contract.Requires(!string.IsNullOrEmpty(handle));
throw new NotImplementedException();
}
@@ -144,7 +144,7 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
/// </remarks>
bool IRelyingPartyAssociationStore.RemoveAssociation(Uri providerEndpoint, string handle) {
Requires.NotNull(providerEndpoint, "providerEndpoint");
- Contract.Requires(!String.IsNullOrEmpty(handle));
+ Contract.Requires(!string.IsNullOrEmpty(handle));
throw new NotImplementedException();
}
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/OpenIdRelyingParty.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/OpenIdRelyingParty.cs
index aa53277..6e991d2 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/OpenIdRelyingParty.cs
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/RelyingParty/OpenIdRelyingParty.cs
@@ -502,12 +502,12 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
////Contract.Ensures(Contract.ForAll(Contract.Result<IEnumerable<IAuthenticationRequest>>(), el => el != null));
// Build the return_to URL
- UriBuilder returnTo = new UriBuilder(this.Channel.GetRequestFromContext().UrlBeforeRewriting);
+ UriBuilder returnTo = new UriBuilder(this.Channel.GetRequestFromContext().GetPublicFacingUrl());
// Trim off any parameters with an "openid." prefix, and a few known others
// to avoid carrying state from a prior login attempt.
returnTo.Query = string.Empty;
- NameValueCollection queryParams = this.Channel.GetRequestFromContext().QueryStringBeforeRewriting;
+ NameValueCollection queryParams = this.Channel.GetRequestFromContext().GetQueryStringBeforeRewriting();
var returnToParams = new Dictionary<string, string>(queryParams.Count);
foreach (string key in queryParams) {
if (!IsOpenIdSupportingParameter(key) && key != null) {
@@ -564,7 +564,7 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
/// </summary>
/// <param name="httpRequestInfo">The HTTP request that may be carrying an authentication response from the Provider.</param>
/// <returns>The processed authentication response if there is any; <c>null</c> otherwise.</returns>
- public IAuthenticationResponse GetResponse(HttpRequestInfo httpRequestInfo) {
+ public IAuthenticationResponse GetResponse(HttpRequestBase httpRequestInfo) {
Requires.NotNull(httpRequestInfo, "httpRequestInfo");
try {
var message = this.Channel.ReadFromRequest(httpRequestInfo);
@@ -619,7 +619,7 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
/// </summary>
/// <param name="request">The incoming HTTP request that is expected to carry an OpenID authentication response.</param>
/// <returns>The HTTP response to send to this HTTP request.</returns>
- public OutgoingWebResponse ProcessResponseFromPopup(HttpRequestInfo request) {
+ public OutgoingWebResponse ProcessResponseFromPopup(HttpRequestBase request) {
Requires.NotNull(request, "request");
Contract.Ensures(Contract.Result<OutgoingWebResponse>() != null);
@@ -706,7 +706,7 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
/// The HTTP response to send to this HTTP request.
/// </returns>
[SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly", MessageId = "OpenID", Justification = "real word"), SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly", MessageId = "iframe", Justification = "Code contracts")]
- internal OutgoingWebResponse ProcessResponseFromPopup(HttpRequestInfo request, Action<AuthenticationStatus> callback) {
+ internal OutgoingWebResponse ProcessResponseFromPopup(HttpRequestBase request, Action<AuthenticationStatus> callback) {
Requires.NotNull(request, "request");
Contract.Ensures(Contract.Result<OutgoingWebResponse>() != null);