summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2013-06-09 08:53:35 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2013-06-09 08:53:35 -0700
commitca77a7dda6ecdc5eb7b36c4cb297f8f8a540b4d0 (patch)
treec815384478f7fd282281585aa78f8f1c8dc376c3 /src/DotNetOpenAuth.OpenId.RelyingParty/OpenId
parent6c72254973a3aa63066dae087e452b3564d66138 (diff)
downloadDotNetOpenAuth-ca77a7dda6ecdc5eb7b36c4cb297f8f8a540b4d0.zip
DotNetOpenAuth-ca77a7dda6ecdc5eb7b36c4cb297f8f8a540b4d0.tar.gz
DotNetOpenAuth-ca77a7dda6ecdc5eb7b36c4cb297f8f8a540b4d0.tar.bz2
Removes classic ASP support and sample.
Diffstat (limited to 'src/DotNetOpenAuth.OpenId.RelyingParty/OpenId')
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/AuthenticationResponseShim.cs120
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/ClaimsResponseShim.cs107
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/IOpenIdRelyingParty.cs73
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/OpenIdRelyingPartyShim.cs134
4 files changed, 0 insertions, 434 deletions
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/AuthenticationResponseShim.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/AuthenticationResponseShim.cs
deleted file mode 100644
index d871645..0000000
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/AuthenticationResponseShim.cs
+++ /dev/null
@@ -1,120 +0,0 @@
-//-----------------------------------------------------------------------
-// <copyright file="AuthenticationResponseShim.cs" company="Outercurve Foundation">
-// Copyright (c) Outercurve Foundation. All rights reserved.
-// </copyright>
-//-----------------------------------------------------------------------
-
-namespace DotNetOpenAuth.OpenId.Interop {
- using System;
- using System.Diagnostics.CodeAnalysis;
- using System.Runtime.InteropServices;
- using System.Web;
- using DotNetOpenAuth.Messaging;
- using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration;
- using DotNetOpenAuth.OpenId.RelyingParty;
- using Validation;
-
- /// <summary>
- /// The COM type used to provide details of an authentication result to a relying party COM client.
- /// </summary>
- [SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Justification = "It's only creatable on the inside. It must be ComVisible for ASP to see it.")]
- [ComVisible(true), Obsolete("This class acts as a COM Server and should not be called directly from .NET code.")]
- public sealed class AuthenticationResponseShim {
- /// <summary>
- /// The response read in by the Relying Party.
- /// </summary>
- private readonly IAuthenticationResponse response;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="AuthenticationResponseShim"/> class.
- /// </summary>
- /// <param name="response">The response.</param>
- internal AuthenticationResponseShim(IAuthenticationResponse response) {
- Requires.NotNull(response, "response");
-
- this.response = response;
- var claimsResponse = this.response.GetExtension<ClaimsResponse>();
- if (claimsResponse != null) {
- this.ClaimsResponse = new ClaimsResponseShim(claimsResponse);
- }
- }
-
- /// <summary>
- /// Gets an Identifier that the end user claims to own. For use with user database storage and lookup.
- /// May be null for some failed authentications (i.e. failed directed identity authentications).
- /// </summary>
- /// <remarks>
- /// <para>
- /// This is the secure identifier that should be used for database storage and lookup.
- /// It is not always friendly (i.e. =Arnott becomes =!9B72.7DD1.50A9.5CCD), but it protects
- /// user identities against spoofing and other attacks.
- /// </para>
- /// <para>
- /// For user-friendly identifiers to display, use the
- /// <see cref="FriendlyIdentifierForDisplay"/> property.
- /// </para>
- /// </remarks>
- public string ClaimedIdentifier {
- get { return this.response.ClaimedIdentifier; }
- }
-
- /// <summary>
- /// Gets a user-friendly OpenID Identifier for display purposes ONLY.
- /// </summary>
- /// <remarks>
- /// <para>
- /// This <i>should</i> be put through <see cref="HttpUtility.HtmlEncode(string)"/> before
- /// sending to a browser to secure against javascript injection attacks.
- /// </para>
- /// <para>
- /// This property retains some aspects of the user-supplied identifier that get lost
- /// in the <see cref="ClaimedIdentifier"/>. For example, XRIs used as user-supplied
- /// identifiers (i.e. =Arnott) become unfriendly unique strings (i.e. =!9B72.7DD1.50A9.5CCD).
- /// For display purposes, such as text on a web page that says "You're logged in as ...",
- /// this property serves to provide the =Arnott string, or whatever else is the most friendly
- /// string close to what the user originally typed in.
- /// </para>
- /// <para>
- /// If the user-supplied identifier is a URI, this property will be the URI after all
- /// redirects, and with the protocol and fragment trimmed off.
- /// If the user-supplied identifier is an XRI, this property will be the original XRI.
- /// If the user-supplied identifier is an OpenID Provider identifier (i.e. yahoo.com),
- /// this property will be the Claimed Identifier, with the protocol stripped if it is a URI.
- /// </para>
- /// <para>
- /// It is <b>very</b> important that this property <i>never</i> be used for database storage
- /// or lookup to avoid identity spoofing and other security risks. For database storage
- /// and lookup please use the <see cref="ClaimedIdentifier"/> property.
- /// </para>
- /// </remarks>
- public string FriendlyIdentifierForDisplay {
- get { return this.response.FriendlyIdentifierForDisplay; }
- }
-
- /// <summary>
- /// Gets the provider endpoint that sent the assertion.
- /// </summary>
- public string ProviderEndpoint {
- get { return this.response.Provider != null ? this.response.Provider.Uri.AbsoluteUri : null; }
- }
-
- /// <summary>
- /// Gets a value indicating whether the authentication attempt succeeded.
- /// </summary>
- public bool Successful {
- get { return this.response.Status == AuthenticationStatus.Authenticated; }
- }
-
- /// <summary>
- /// Gets the Simple Registration response.
- /// </summary>
- public ClaimsResponseShim ClaimsResponse { get; private set; }
-
- /// <summary>
- /// Gets details regarding a failed authentication attempt, if available.
- /// </summary>
- public string ExceptionMessage {
- get { return this.response.Exception != null ? this.response.Exception.Message : null; }
- }
- }
-}
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/ClaimsResponseShim.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/ClaimsResponseShim.cs
deleted file mode 100644
index cad4504..0000000
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/ClaimsResponseShim.cs
+++ /dev/null
@@ -1,107 +0,0 @@
-//-----------------------------------------------------------------------
-// <copyright file="ClaimsResponseShim.cs" company="Outercurve Foundation">
-// Copyright (c) Outercurve Foundation. All rights reserved.
-// </copyright>
-//-----------------------------------------------------------------------
-
-namespace DotNetOpenAuth.OpenId.Interop {
- using System;
- using System.Diagnostics.CodeAnalysis;
- using System.Runtime.InteropServices;
- using DotNetOpenAuth.Messaging;
- using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration;
- using Validation;
-
- /// <summary>
- /// A struct storing Simple Registration field values describing an
- /// authenticating user.
- /// </summary>
- [SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable", Justification = "It's only creatable on the inside. It must be ComVisible for ASP to see it.")]
- [ComVisible(true), Obsolete("This class acts as a COM Server and should not be called directly from .NET code.")]
- public sealed class ClaimsResponseShim {
- /// <summary>
- /// The Simple Registration claims response message that this shim wraps.
- /// </summary>
- private readonly ClaimsResponse response;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="ClaimsResponseShim"/> class.
- /// </summary>
- /// <param name="response">The Simple Registration response to wrap.</param>
- internal ClaimsResponseShim(ClaimsResponse response)
- {
- Requires.NotNull(response, "response");
-
- this.response = response;
- }
-
- /// <summary>
- /// Gets the nickname the user goes by.
- /// </summary>
- public string Nickname {
- get { return this.response.Nickname; }
- }
-
- /// <summary>
- /// Gets the user's email address.
- /// </summary>
- public string Email {
- get { return this.response.Email; }
- }
-
- /// <summary>
- /// Gets the full name of a user as a single string.
- /// </summary>
- public string FullName {
- get { return this.response.FullName; }
- }
-
- /// <summary>
- /// Gets the raw birth date string given by the extension.
- /// </summary>
- /// <value>A string in the format yyyy-MM-dd.</value>
- public string BirthDate {
- get { return this.response.BirthDateRaw; }
- }
-
- /// <summary>
- /// Gets the gender of the user.
- /// </summary>
- public string Gender {
- get {
- if (this.response.Gender.HasValue) {
- return this.response.Gender.Value == Extensions.SimpleRegistration.Gender.Male ? Constants.Genders.Male : Constants.Genders.Female;
- }
- return null;
- }
- }
-
- /// <summary>
- /// Gets the zip code / postal code of the user.
- /// </summary>
- public string PostalCode {
- get { return this.response.PostalCode; }
- }
-
- /// <summary>
- /// Gets the country of the user.
- /// </summary>
- public string Country {
- get { return this.response.Country; }
- }
-
- /// <summary>
- /// Gets the primary/preferred language of the user.
- /// </summary>
- public string Language {
- get { return this.response.Language; }
- }
-
- /// <summary>
- /// Gets the user's timezone.
- /// </summary>
- public string TimeZone {
- get { return this.response.TimeZone; }
- }
- }
-} \ No newline at end of file
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/IOpenIdRelyingParty.cs b/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/IOpenIdRelyingParty.cs
deleted file mode 100644
index 398c284..0000000
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/IOpenIdRelyingParty.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-//-----------------------------------------------------------------------
-// <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
deleted file mode 100644
index 9568c1d..0000000
--- a/src/DotNetOpenAuth.OpenId.RelyingParty/OpenId/Interop/OpenIdRelyingPartyShim.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-//-----------------------------------------------------------------------
-// <copyright file="OpenIdRelyingPartyShim.cs" company="Outercurve Foundation">
-// Copyright (c) Outercurve Foundation. All rights reserved.
-// </copyright>
-//-----------------------------------------------------------------------
-
-namespace DotNetOpenAuth.OpenId.Interop {
- using System;
- using System.Collections.Specialized;
- using System.Diagnostics.CodeAnalysis;
- using System.IO;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading;
- using System.Web;
- using DotNetOpenAuth.Messaging;
- using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration;
- using DotNetOpenAuth.OpenId.RelyingParty;
-
- /// <summary>
- /// Implementation of <see cref="IOpenIdRelyingParty"/>, providing a subset of the
- /// functionality available to .NET clients.
- /// </summary>
- [Guid("8F97A798-B4C5-4da5-9727-EE7DD96A8CD9")]
- [ProgId("DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty")]
- [ComVisible(true), Obsolete("This class acts as a COM Server and should not be called directly from .NET code.", true)]
- [ClassInterface(ClassInterfaceType.None)]
- public sealed class OpenIdRelyingPartyShim : IOpenIdRelyingParty {
- /// <summary>
- /// The OpenIdRelyingParty instance to use for requests.
- /// </summary>
- private static OpenIdRelyingParty relyingParty;
-
- /// <summary>
- /// Initializes static members of the <see cref="OpenIdRelyingPartyShim"/> class.
- /// </summary>
- static OpenIdRelyingPartyShim() {
- relyingParty = new OpenIdRelyingParty(null);
- relyingParty.Behaviors.Add(new RelyingParty.Behaviors.AXFetchAsSregTransform());
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="OpenIdRelyingPartyShim"/> class.
- /// </summary>
- public OpenIdRelyingPartyShim() {
- Reporting.RecordFeatureUse(this);
- }
-
- /// <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>
- [SuppressMessage("Microsoft.Usage", "CA2234:PassSystemUriObjectsInsteadOfStrings", Justification = "COM requires primitive types")]
- public string CreateRequest(string userSuppliedIdentifier, string realm, string returnToUrl) {
- var request = relyingParty.CreateRequestAsync(userSuppliedIdentifier, realm, new Uri(returnToUrl)).Result;
- var response = request.GetRedirectingResponseAsync(CancellationToken.None).Result;
- return response.GetDirectUriRequest().AbsoluteUri;
- }
-
- /// <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.Usage", "CA2234:PassSystemUriObjectsInsteadOfStrings", Justification = "COM requires primitive types")]
- public string CreateRequestWithSimpleRegistration(string userSuppliedIdentifier, string realm, string returnToUrl, string optionalSreg, string requiredSreg) {
- var request = relyingParty.CreateRequestAsync(userSuppliedIdentifier, realm, new Uri(returnToUrl)).Result;
-
- ClaimsRequest sreg = new ClaimsRequest();
- if (!string.IsNullOrEmpty(optionalSreg)) {
- sreg.SetProfileRequestFromList(optionalSreg.Split(','), DemandLevel.Request);
- }
- if (!string.IsNullOrEmpty(requiredSreg)) {
- sreg.SetProfileRequestFromList(requiredSreg.Split(','), DemandLevel.Require);
- }
- request.AddExtension(sreg);
- var response = request.GetRedirectingResponseAsync(CancellationToken.None).Result;
- return response.GetDirectUriRequest().AbsoluteUri;
- }
-
- /// <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>
- public AuthenticationResponseShim ProcessAuthentication(string url, string form) {
- string method = "GET";
- NameValueCollection formMap = null;
- if (!string.IsNullOrEmpty(form)) {
- method = "POST";
- formMap = HttpUtility.ParseQueryString(form);
- }
-
- HttpRequestBase requestInfo = new HttpRequestInfo(method, new Uri(url), form: formMap);
- var response = relyingParty.GetResponseAsync(requestInfo, CancellationToken.None).Result;
- if (response != null) {
- return new AuthenticationResponseShim(response);
- }
-
- return null;
- }
- }
-}