//----------------------------------------------------------------------- // // Copyright (c) Outercurve Foundation. All rights reserved. // //----------------------------------------------------------------------- namespace RelyingPartyLogic { using System; using System.Collections.Generic; using DotNetOpenAuth.Messaging; using DotNetOpenAuth.OAuth2; public partial class Client : IClientDescription { #region IConsumerDescription Members /// /// Gets the callback to use when an individual authorization request /// does not include an explicit callback URI. /// /// /// An absolute URL; or null if none is registered. /// Uri IClientDescription.DefaultCallback { get { return string.IsNullOrEmpty(this.CallbackAsString) ? null : new Uri(this.CallbackAsString); } } /// /// Gets the type of the client. /// ClientType IClientDescription.ClientType { get { return (ClientType)this.ClientType; } } /// /// Gets a value indicating whether a non-empty secret is registered for this client. /// bool IClientDescription.HasNonEmptySecret { get { return !string.IsNullOrEmpty(this.ClientSecret); } } /// /// Checks whether the specified client secret is correct. /// /// The secret obtained from the client. /// true if the secret matches the one in the authorization server's record for the client; false otherwise. /// /// All string equality checks, whether checking secrets or their hashes, /// should be done using to mitigate timing attacks. /// bool IClientDescription.IsValidClientSecret(string secret) { return MessagingUtilities.EqualsConstantTime(secret, this.ClientSecret); } /// /// Determines whether a callback URI included in a client's authorization request /// is among those allowed callbacks for the registered client. /// /// The absolute URI the client has requested the authorization result be received at. /// /// true if the callback URL is allowable for this client; otherwise, false. /// bool IClientDescription.IsCallbackAllowed(Uri callback) { return string.IsNullOrEmpty(this.CallbackAsString) || callback == new Uri(this.CallbackAsString); } #endregion } }