summaryrefslogtreecommitdiffstats
path: root/samples/OpenIdProviderWebForms
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2013-03-04 13:54:33 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2013-03-04 13:54:33 -0800
commit36bbbea5002c889558a67c380e46dff668251b25 (patch)
tree87721c7f13cfd27b75f7132b71549688b55eb14a /samples/OpenIdProviderWebForms
parentfd85211bfc50805d740392bfc6770df7c6f4c7d0 (diff)
downloadDotNetOpenAuth-36bbbea5002c889558a67c380e46dff668251b25.zip
DotNetOpenAuth-36bbbea5002c889558a67c380e46dff668251b25.tar.gz
DotNetOpenAuth-36bbbea5002c889558a67c380e46dff668251b25.tar.bz2
Switched Channel to receiving messages via HttpRequestMessage as well.
Diffstat (limited to 'samples/OpenIdProviderWebForms')
-rw-r--r--samples/OpenIdProviderWebForms/Code/Util.cs4
-rw-r--r--samples/OpenIdProviderWebForms/OpenIdProviderWebForms.csproj10
-rw-r--r--samples/OpenIdProviderWebForms/ProfileFields.ascx.cs14
-rw-r--r--samples/OpenIdProviderWebForms/Provider.ashx.cs7
-rw-r--r--samples/OpenIdProviderWebForms/Web.config2
-rw-r--r--samples/OpenIdProviderWebForms/WebForm1.aspx16
-rw-r--r--samples/OpenIdProviderWebForms/WebForm1.aspx.cs15
-rw-r--r--samples/OpenIdProviderWebForms/WebForm1.aspx.designer.cs24
-rw-r--r--samples/OpenIdProviderWebForms/decide.aspx2
-rw-r--r--samples/OpenIdProviderWebForms/decide.aspx.cs20
-rw-r--r--samples/OpenIdProviderWebForms/server.aspx2
-rw-r--r--samples/OpenIdProviderWebForms/server.aspx.cs14
12 files changed, 109 insertions, 21 deletions
diff --git a/samples/OpenIdProviderWebForms/Code/Util.cs b/samples/OpenIdProviderWebForms/Code/Util.cs
index 552a80a..5333124 100644
--- a/samples/OpenIdProviderWebForms/Code/Util.cs
+++ b/samples/OpenIdProviderWebForms/Code/Util.cs
@@ -54,7 +54,7 @@ namespace OpenIdProviderWebForms.Code {
// add extension responses here.
}
} else {
- HttpContext.Current.Response.Redirect("~/decide.aspx", true);
+ HttpContext.Current.Response.Redirect("~/decide.aspx", false);
}
}
@@ -70,7 +70,7 @@ namespace OpenIdProviderWebForms.Code {
// These would typically be filled in from a user database
}
} else {
- HttpContext.Current.Response.Redirect("~/decide.aspx", true);
+ HttpContext.Current.Response.Redirect("~/decide.aspx", false);
}
}
diff --git a/samples/OpenIdProviderWebForms/OpenIdProviderWebForms.csproj b/samples/OpenIdProviderWebForms/OpenIdProviderWebForms.csproj
index d756726..c95ee15 100644
--- a/samples/OpenIdProviderWebForms/OpenIdProviderWebForms.csproj
+++ b/samples/OpenIdProviderWebForms/OpenIdProviderWebForms.csproj
@@ -100,6 +100,7 @@
<SubType>Designer</SubType>
</Content>
<Content Include="user_xrds.aspx" />
+ <Content Include="WebForm1.aspx" />
</ItemGroup>
<ItemGroup>
<Compile Include="access_token.ashx.cs">
@@ -175,6 +176,13 @@
<Compile Include="user.aspx.designer.cs">
<DependentUpon>user.aspx</DependentUpon>
</Compile>
+ <Compile Include="WebForm1.aspx.cs">
+ <DependentUpon>WebForm1.aspx</DependentUpon>
+ <SubType>ASPXCodeBehind</SubType>
+ </Compile>
+ <Compile Include="WebForm1.aspx.designer.cs">
+ <DependentUpon>WebForm1.aspx</DependentUpon>
+ </Compile>
</ItemGroup>
<ItemGroup>
<Content Include="favicon.ico" />
@@ -251,7 +259,7 @@
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
- <UseIIS>True</UseIIS>
+ <UseIIS>False</UseIIS>
<AutoAssignPort>False</AutoAssignPort>
<DevelopmentServerPort>4860</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
diff --git a/samples/OpenIdProviderWebForms/ProfileFields.ascx.cs b/samples/OpenIdProviderWebForms/ProfileFields.ascx.cs
index 6954aa6..e27f794 100644
--- a/samples/OpenIdProviderWebForms/ProfileFields.ascx.cs
+++ b/samples/OpenIdProviderWebForms/ProfileFields.ascx.cs
@@ -25,15 +25,15 @@ namespace OpenIdProviderWebForms {
public DateTime? DateOfBirth {
get {
- try {
- int day = Convert.ToInt32(this.dobDayDropdownlist.SelectedValue);
- int month = Convert.ToInt32(this.dobMonthDropdownlist.SelectedValue);
- int year = Convert.ToInt32(this.dobYearDropdownlist.SelectedValue);
- DateTime newDate = new DateTime(year, month, day);
+ int day, month, year;
+ if (int.TryParse(this.dobDayDropdownlist.SelectedValue, out day)
+ && int.TryParse(this.dobMonthDropdownlist.SelectedValue, out month)
+ && int.TryParse(this.dobYearDropdownlist.SelectedValue, out year)) {
+ var newDate = new DateTime(year, month, day);
return newDate;
- } catch (Exception) {
- return null;
}
+
+ return null;
}
set {
diff --git a/samples/OpenIdProviderWebForms/Provider.ashx.cs b/samples/OpenIdProviderWebForms/Provider.ashx.cs
index d5d747b..7022d80 100644
--- a/samples/OpenIdProviderWebForms/Provider.ashx.cs
+++ b/samples/OpenIdProviderWebForms/Provider.ashx.cs
@@ -24,7 +24,8 @@
}
protected override async Task ProcessRequestAsync(HttpContext context) {
- IRequest request = await ProviderEndpoint.Provider.GetRequestAsync(new HttpRequestWrapper(context.Request), context.Response.ClientDisconnectedToken);
+ var providerEndpoint = new ProviderEndpoint();
+ IRequest request = await providerEndpoint.Provider.GetRequestAsync(new HttpRequestWrapper(context.Request), context.Response.ClientDisconnectedToken);
if (request != null) {
// Some OpenID requests are automatable and can be responded to immediately.
// But authentication requests cannot be responded to until something on
@@ -57,12 +58,12 @@
// We DON'T use ProviderEndpoint.SendResponse because
// that only sends responses to requests in PendingAuthenticationRequest,
// but we don't set that for associate and other non-checkid requests.
- var response = await ProviderEndpoint.Provider.PrepareResponseAsync(request, context.Response.ClientDisconnectedToken);
+ var response = await providerEndpoint.Provider.PrepareResponseAsync(request, context.Response.ClientDisconnectedToken);
// Make sure that any PendingAuthenticationRequest that MAY be set is cleared.
ProviderEndpoint.PendingRequest = null;
- await response.SendAsync(new HttpResponseWrapper(context.Response));
+ await response.SendAsync(new HttpContextWrapper(context));
}
}
}
diff --git a/samples/OpenIdProviderWebForms/Web.config b/samples/OpenIdProviderWebForms/Web.config
index d9e005d..c028df1 100644
--- a/samples/OpenIdProviderWebForms/Web.config
+++ b/samples/OpenIdProviderWebForms/Web.config
@@ -89,7 +89,7 @@
Medium: doesn't work unless originUrl=".*" or WebPermission.Connect is extended, and Google Apps doesn't work.
Low: doesn't work because WebPermission.Connect is denied.
-->
- <trust level="Medium" originUrl=".*"/>
+ <trust level="Full" originUrl=".*"/>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
</system.web>
<location path="decide.aspx">
diff --git a/samples/OpenIdProviderWebForms/WebForm1.aspx b/samples/OpenIdProviderWebForms/WebForm1.aspx
new file mode 100644
index 0000000..8639049
--- /dev/null
+++ b/samples/OpenIdProviderWebForms/WebForm1.aspx
@@ -0,0 +1,16 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="OpenIdProviderWebForms.WebForm1" Async="true" %>
+
+<!DOCTYPE html>
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head runat="server">
+ <title></title>
+</head>
+<body>
+ <form id="form1" runat="server">
+ <div>
+
+ </div>
+ </form>
+</body>
+</html>
diff --git a/samples/OpenIdProviderWebForms/WebForm1.aspx.cs b/samples/OpenIdProviderWebForms/WebForm1.aspx.cs
new file mode 100644
index 0000000..6ec73e6
--- /dev/null
+++ b/samples/OpenIdProviderWebForms/WebForm1.aspx.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace OpenIdProviderWebForms {
+ public partial class WebForm1 : System.Web.UI.Page {
+ protected async void Page_Load(object sender, EventArgs e) {
+ object oldValue = Session["Hi"];
+ Session["Hi"] = new object();
+ }
+ }
+} \ No newline at end of file
diff --git a/samples/OpenIdProviderWebForms/WebForm1.aspx.designer.cs b/samples/OpenIdProviderWebForms/WebForm1.aspx.designer.cs
new file mode 100644
index 0000000..0e75ef7
--- /dev/null
+++ b/samples/OpenIdProviderWebForms/WebForm1.aspx.designer.cs
@@ -0,0 +1,24 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace OpenIdProviderWebForms {
+
+
+ public partial class WebForm1 {
+
+ /// <summary>
+ /// form1 control.
+ /// </summary>
+ /// <remarks>
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ /// </remarks>
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+ }
+}
diff --git a/samples/OpenIdProviderWebForms/decide.aspx b/samples/OpenIdProviderWebForms/decide.aspx
index b6219ff..ddae8e7 100644
--- a/samples/OpenIdProviderWebForms/decide.aspx
+++ b/samples/OpenIdProviderWebForms/decide.aspx
@@ -1,5 +1,5 @@
<%@ Page Language="C#" AutoEventWireup="true" Inherits="OpenIdProviderWebForms.decide"
- CodeBehind="decide.aspx.cs" MasterPageFile="~/Site.Master" Async="true" %>
+ CodeBehind="decide.aspx.cs" MasterPageFile="~/Site.Master" Async="true" EnableSessionState="true" %>
<%@ Register Src="ProfileFields.ascx" TagName="ProfileFields" TagPrefix="uc1" %>
<asp:Content runat="server" ContentPlaceHolderID="Main">
diff --git a/samples/OpenIdProviderWebForms/decide.aspx.cs b/samples/OpenIdProviderWebForms/decide.aspx.cs
index 88f222f..d3ef6d2 100644
--- a/samples/OpenIdProviderWebForms/decide.aspx.cs
+++ b/samples/OpenIdProviderWebForms/decide.aspx.cs
@@ -1,6 +1,7 @@
namespace OpenIdProviderWebForms {
using System;
using System.Diagnostics;
+ using System.Net;
using System.Web.Security;
using System.Web.UI;
using DotNetOpenAuth.Messaging;
@@ -15,7 +16,11 @@ namespace OpenIdProviderWebForms {
public partial class decide : Page {
protected async void Page_Load(object src, EventArgs e) {
if (ProviderEndpoint.PendingRequest == null) {
- Response.Redirect("~/");
+ // Response.Redirect(string) throws ThreadInterruptedException, and "async void Page_Load" doesn't properly catch it.
+ this.Response.RedirectLocation = "/";
+ this.Response.StatusCode = (int)HttpStatusCode.Redirect;
+ this.Context.ApplicationInstance.CompleteRequest();
+ return;
}
this.relyingPartyVerificationResultLabel.Text =
@@ -63,7 +68,7 @@ namespace OpenIdProviderWebForms {
}
protected async void Yes_Click(object sender, EventArgs e) {
- if (!Page.IsValid) {
+ if (!Page.IsValid || ProviderEndpoint.PendingRequest == null) {
return;
}
@@ -99,18 +104,25 @@ namespace OpenIdProviderWebForms {
ProviderEndpoint.PendingAnonymousRequest.IsApproved = true;
}
Debug.Assert(ProviderEndpoint.PendingRequest.IsResponseReady, "Setting authentication should be all that's necessary.");
- var response = await ProviderEndpoint.PrepareResponseAsync(this.Response.ClientDisconnectedToken);
+
+ var provider = new ProviderEndpoint();
+ var response = await provider.PrepareResponseAsync();
await response.SendAsync();
}
protected async void No_Click(object sender, EventArgs e) {
+ if (ProviderEndpoint.PendingRequest == null) {
+ return;
+ }
+
if (ProviderEndpoint.PendingAuthenticationRequest != null) {
ProviderEndpoint.PendingAuthenticationRequest.IsAuthenticated = false;
} else {
ProviderEndpoint.PendingAnonymousRequest.IsApproved = false;
}
Debug.Assert(ProviderEndpoint.PendingRequest.IsResponseReady, "Setting authentication should be all that's necessary.");
- var response = await ProviderEndpoint.PrepareResponseAsync(this.Response.ClientDisconnectedToken);
+ var provider = new ProviderEndpoint();
+ var response = await provider.PrepareResponseAsync();
await response.SendAsync();
}
}
diff --git a/samples/OpenIdProviderWebForms/server.aspx b/samples/OpenIdProviderWebForms/server.aspx
index 101aeee..946f044 100644
--- a/samples/OpenIdProviderWebForms/server.aspx
+++ b/samples/OpenIdProviderWebForms/server.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="C#" AutoEventWireup="true" Inherits="OpenIdProviderWebForms.server" CodeBehind="server.aspx.cs" ValidateRequest="false" %>
+<%@ Page Language="C#" AutoEventWireup="true" Inherits="OpenIdProviderWebForms.server" CodeBehind="server.aspx.cs" ValidateRequest="false" Async="true" EnableSessionState="true" %>
<%@ Register Assembly="DotNetOpenAuth.OpenId.Provider.UI" Namespace="DotNetOpenAuth.OpenId.Provider" TagPrefix="openid" %>
<html>
diff --git a/samples/OpenIdProviderWebForms/server.aspx.cs b/samples/OpenIdProviderWebForms/server.aspx.cs
index 89e14f4..e613192 100644
--- a/samples/OpenIdProviderWebForms/server.aspx.cs
+++ b/samples/OpenIdProviderWebForms/server.aspx.cs
@@ -7,15 +7,27 @@ namespace OpenIdProviderWebForms {
/// This page is responsible for handling all open-id compliant requests.
/// </summary>
public partial class server : System.Web.UI.Page {
- protected void Page_Load(object src, System.EventArgs evt) {
+ protected void Page_Load(object src, EventArgs evt) {
this.serverEndpointUrl.Text = Request.Url.ToString();
}
protected void provider_AuthenticationChallenge(object sender, AuthenticationChallengeEventArgs e) {
+ // We store the request in the user's session so that
+ // redirects and user prompts can appear and eventually some page can decide
+ // to respond to the OpenID authentication request either affirmatively or
+ // negatively.
+ ProviderEndpoint.PendingRequest = e.Request;
+
Code.Util.ProcessAuthenticationChallenge(e.Request);
}
protected void provider_AnonymousRequest(object sender, AnonymousRequestEventArgs e) {
+ // We store the request in the user's session so that
+ // redirects and user prompts can appear and eventually some page can decide
+ // to respond to the OpenID authentication request either affirmatively or
+ // negatively.
+ ProviderEndpoint.PendingRequest = e.Request;
+
Code.Util.ProcessAnonymousRequest(e.Request);
}
}