summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2013-03-02 21:42:03 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2013-03-02 21:42:03 -0800
commit5fe9455f7a2ea615cf98e751179c469ebada9358 (patch)
treee4fa10ebaf57dd26a4f8971e9cf4a8cbcdcb8188 /src
parent36cadbb1b9bf9c6a9a97b3679f40ea155ce0a615 (diff)
downloadDotNetOpenAuth-5fe9455f7a2ea615cf98e751179c469ebada9358.zip
DotNetOpenAuth-5fe9455f7a2ea615cf98e751179c469ebada9358.tar.gz
DotNetOpenAuth-5fe9455f7a2ea615cf98e751179c469ebada9358.tar.bz2
Fixed up WebAPI sample so it works with anonymous clients.
Diffstat (limited to 'src')
-rw-r--r--src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs25
-rw-r--r--src/DotNetOpenAuth.OAuth2.Client.UI/OAuth2/ClientAuthorizationView.cs10
-rw-r--r--src/DotNetOpenAuth.OAuth2.Client/OAuth2/ChannelElements/OAuth2ClientChannel.cs2
3 files changed, 27 insertions, 10 deletions
diff --git a/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs b/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs
index 753148e..6d77f14 100644
--- a/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs
+++ b/src/DotNetOpenAuth.OAuth2.AuthorizationServer/OAuth2/ClientDescription.cs
@@ -27,11 +27,13 @@ namespace DotNetOpenAuth.OAuth2 {
/// </summary>
/// <param name="secret">The secret.</param>
/// <param name="defaultCallback">The default callback.</param>
- /// <param name="clientType">Type of the client.</param>
- public ClientDescription(string secret, Uri defaultCallback = null, ClientType clientType = ClientType.Confidential) {
+ public ClientDescription(string secret, Uri defaultCallback) {
+ Requires.NotNullOrEmpty(secret, "secret");
+ Requires.NotNull(defaultCallback, "defaultCallback");
+
this.secret = secret;
this.DefaultCallback = defaultCallback;
- this.ClientType = clientType;
+ this.ClientType = ClientType.Confidential;
}
/// <summary>
@@ -39,10 +41,17 @@ namespace DotNetOpenAuth.OAuth2 {
/// to represent a public client (one that does not have an authenticating secret.)
/// </summary>
/// <param name="defaultCallback">The default callback.</param>
- /// <param name="clientType">Type of the client.</param>
- public ClientDescription(Uri defaultCallback = null, ClientType clientType = ClientType.Public) {
+ public ClientDescription(Uri defaultCallback) {
+ Requires.NotNull(defaultCallback, "defaultCallback");
+
this.DefaultCallback = defaultCallback;
- this.ClientType = clientType;
+ this.ClientType = ClientType.Public;
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ClientDescription"/> class.
+ /// </summary>
+ protected ClientDescription() {
}
#region IClientDescription Members
@@ -54,12 +63,12 @@ namespace DotNetOpenAuth.OAuth2 {
/// <value>
/// An absolute URL; or <c>null</c> if none is registered.
/// </value>
- public Uri DefaultCallback { get; private set; }
+ public Uri DefaultCallback { get; protected set; }
/// <summary>
/// Gets the type of the client.
/// </summary>
- public ClientType ClientType { get; private set; }
+ public ClientType ClientType { get; protected set; }
/// <summary>
/// Gets a value indicating whether a non-empty secret is registered for this client.
diff --git a/src/DotNetOpenAuth.OAuth2.Client.UI/OAuth2/ClientAuthorizationView.cs b/src/DotNetOpenAuth.OAuth2.Client.UI/OAuth2/ClientAuthorizationView.cs
index 002202e..8f1c5f6 100644
--- a/src/DotNetOpenAuth.OAuth2.Client.UI/OAuth2/ClientAuthorizationView.cs
+++ b/src/DotNetOpenAuth.OAuth2.Client.UI/OAuth2/ClientAuthorizationView.cs
@@ -95,6 +95,14 @@ namespace DotNetOpenAuth.OAuth2 {
}
/// <summary>
+ /// Gets or sets a value indicating whether the implicit grant type should be used instead of the authorization code grant.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if [request implicit grant]; otherwise, <c>false</c>.
+ /// </value>
+ public bool RequestImplicitGrant { get; set; }
+
+ /// <summary>
/// Called when the authorization flow has been completed.
/// </summary>
protected virtual void OnCompleted() {
@@ -113,7 +121,7 @@ namespace DotNetOpenAuth.OAuth2 {
protected override async void OnLoad(EventArgs e) {
base.OnLoad(e);
- Uri authorizationUrl = await this.Client.RequestUserAuthorizationAsync(this.Authorization);
+ Uri authorizationUrl = await this.Client.RequestUserAuthorizationAsync(this.Authorization, implicitResponseType: this.RequestImplicitGrant);
this.webBrowser1.Navigate(authorizationUrl.AbsoluteUri); // use AbsoluteUri to workaround bug in WebBrowser that calls Uri.ToString instead of Uri.AbsoluteUri leading to escaping errors.
}
diff --git a/src/DotNetOpenAuth.OAuth2.Client/OAuth2/ChannelElements/OAuth2ClientChannel.cs b/src/DotNetOpenAuth.OAuth2.Client/OAuth2/ChannelElements/OAuth2ClientChannel.cs
index 62dc311..65f3e1d 100644
--- a/src/DotNetOpenAuth.OAuth2.Client/OAuth2/ChannelElements/OAuth2ClientChannel.cs
+++ b/src/DotNetOpenAuth.OAuth2.Client/OAuth2/ChannelElements/OAuth2ClientChannel.cs
@@ -121,7 +121,7 @@ namespace DotNetOpenAuth.OAuth2.ChannelElements {
// Typically the fragment is not available because the browser doesn't send it to a web server
// but this request may have been fabricated by an installed desktop app, in which case
// the fragment is available.
- string fragment = request.GetPublicFacingUrl().Fragment;
+ string fragment = request.Url.Fragment;
if (!string.IsNullOrEmpty(fragment)) {
foreach (var pair in HttpUtility.ParseQueryString(fragment.Substring(1)).ToDictionary()) {
fields.Add(pair.Key, pair.Value);