diff options
author | David Christiansen <coding@davedoes.net> | 2012-06-30 16:06:46 -0700 |
---|---|---|
committer | David Christiansen <coding@davedoes.net> | 2012-06-30 16:06:46 -0700 |
commit | 06401bb049dc29cf4446eb61a4a72317a644ce54 (patch) | |
tree | 7c475929350b31b4b848a1faa57bd0d7cbbf512c /src/OAuth/OAuthAuthorizationServer/Code/Client.cs | |
parent | 02ce959db12fec57e846e5ebfa662cd0327ce69c (diff) | |
parent | 3286c37f3a967e7d142534df84604a66be9d176c (diff) | |
download | DotNetOpenAuth.Samples-06401bb049dc29cf4446eb61a4a72317a644ce54.zip DotNetOpenAuth.Samples-06401bb049dc29cf4446eb61a4a72317a644ce54.tar.gz DotNetOpenAuth.Samples-06401bb049dc29cf4446eb61a4a72317a644ce54.tar.bz2 |
Merge pull request #1 from DavidChristiansen/master
Kachow!
Diffstat (limited to 'src/OAuth/OAuthAuthorizationServer/Code/Client.cs')
-rw-r--r-- | src/OAuth/OAuthAuthorizationServer/Code/Client.cs | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/OAuth/OAuthAuthorizationServer/Code/Client.cs b/src/OAuth/OAuthAuthorizationServer/Code/Client.cs new file mode 100644 index 0000000..0013f27 --- /dev/null +++ b/src/OAuth/OAuthAuthorizationServer/Code/Client.cs @@ -0,0 +1,64 @@ +namespace OAuthAuthorizationServer.Code { + using System; + using System.Collections.Generic; + + using DotNetOpenAuth.OAuth2; + + /// <summary> + /// An OAuth 2.0 Client that has registered with this Authorization Server. + /// </summary> + public partial class Client : IClientDescription { + #region IConsumerDescription Members + + /// <summary> + /// Gets the client secret. + /// </summary> + string IClientDescription.Secret { + get { return this.ClientSecret; } + } + + /// <summary> + /// Gets the callback to use when an individual authorization request + /// does not include an explicit callback URI. + /// </summary> + /// <value> + /// An absolute URL; or <c>null</c> if none is registered. + /// </value> + Uri IClientDescription.DefaultCallback { + get { return string.IsNullOrEmpty(this.Callback) ? null : new Uri(this.Callback); } + } + + /// <summary> + /// Gets the type of the client. + /// </summary> + ClientType IClientDescription.ClientType { + get { return (ClientType)this.ClientType; } + } + + /// <summary> + /// Determines whether a callback URI included in a client's authorization request + /// is among those allowed callbacks for the registered client. + /// </summary> + /// <param name="callback">The absolute URI the client has requested the authorization result be received at.</param> + /// <returns> + /// <c>true</c> if the callback URL is allowable for this client; otherwise, <c>false</c>. + /// </returns> + bool IClientDescription.IsCallbackAllowed(Uri callback) { + if (string.IsNullOrEmpty(this.Callback)) { + // No callback rules have been set up for this client. + return true; + } + + // In this sample, it's enough of a callback URL match if the scheme and host match. + // In a production app, it is advisable to require a match on the path as well. + Uri acceptableCallbackPattern = new Uri(this.Callback); + if (string.Equals(acceptableCallbackPattern.GetLeftPart(UriPartial.Authority), callback.GetLeftPart(UriPartial.Authority), StringComparison.Ordinal)) { + return true; + } + + return false; + } + + #endregion + } +}
\ No newline at end of file |