summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--samples/OpenIdProviderMvc/Controllers/HomeController.cs2
-rw-r--r--samples/OpenIdProviderMvc/Controllers/UserController.cs33
-rw-r--r--samples/OpenIdProviderMvc/Global.asax.cs4
-rw-r--r--samples/OpenIdProviderMvc/OpenIdProviderMvc.csproj4
-rw-r--r--samples/OpenIdProviderMvc/Views/Home/Xrds.aspx19
-rw-r--r--samples/OpenIdProviderMvc/Views/Shared/Xrds.aspx31
-rw-r--r--samples/OpenIdProviderMvc/Views/User/Identity.aspx24
-rw-r--r--samples/OpenIdProviderMvc/Views/User/PpidIdentity.aspx16
-rw-r--r--samples/OpenIdProviderMvc/Views/User/Xrds.aspx15
9 files changed, 70 insertions, 78 deletions
diff --git a/samples/OpenIdProviderMvc/Controllers/HomeController.cs b/samples/OpenIdProviderMvc/Controllers/HomeController.cs
index 5ba08b3..fb03ce2 100644
--- a/samples/OpenIdProviderMvc/Controllers/HomeController.cs
+++ b/samples/OpenIdProviderMvc/Controllers/HomeController.cs
@@ -9,6 +9,7 @@
public class HomeController : Controller {
public ActionResult Index() {
if (Request.AcceptTypes.Contains("application/xrds+xml")) {
+ ViewData["OPIdentifier"] = true;
return View("Xrds");
}
@@ -21,6 +22,7 @@
}
public ActionResult Xrds() {
+ ViewData["OPIdentifier"] = true;
return View();
}
}
diff --git a/samples/OpenIdProviderMvc/Controllers/UserController.cs b/samples/OpenIdProviderMvc/Controllers/UserController.cs
index 4fc2f9f..5e0c21f 100644
--- a/samples/OpenIdProviderMvc/Controllers/UserController.cs
+++ b/samples/OpenIdProviderMvc/Controllers/UserController.cs
@@ -7,25 +7,28 @@ namespace OpenIdProviderMvc.Controllers {
using System.Web.Mvc.Ajax;
public class UserController : Controller {
- public ActionResult PpidIdentity() {
- if (Request.AcceptTypes.Contains("application/xrds+xml")) {
- return View("Xrds");
- }
-
- return View();
- }
-
- public ActionResult Identity(string id) {
- var redirect = this.RedirectIfNotNormalizedRequestUri();
- if (redirect != null) {
- return redirect;
+ /// <summary>
+ /// Identities the specified id.
+ /// </summary>
+ /// <param name="id">The username or anonymous identifier.</param>
+ /// <param name="anon">if set to <c>true</c> then <paramref name="id"/> represents an anonymous identifier rather than a username.</param>
+ /// <returns>The view to display.</returns>
+ public ActionResult Identity(string id, bool anon) {
+ if (!anon) {
+ var redirect = this.RedirectIfNotNormalizedRequestUri(id);
+ if (redirect != null) {
+ return redirect;
+ }
}
if (Request.AcceptTypes != null && Request.AcceptTypes.Contains("application/xrds+xml")) {
return View("Xrds");
}
- this.ViewData["username"] = id;
+ if (!anon) {
+ this.ViewData["username"] = id;
+ }
+
return View();
}
@@ -33,8 +36,8 @@ namespace OpenIdProviderMvc.Controllers {
return View();
}
- private ActionResult RedirectIfNotNormalizedRequestUri() {
- Uri normalized = Models.User.GetNormalizedClaimedIdentifier(Request.Url);
+ private ActionResult RedirectIfNotNormalizedRequestUri(string user) {
+ Uri normalized = Models.User.GetClaimedIdentifierForUser(user);
if (Request.Url != normalized) {
return Redirect(normalized.AbsoluteUri);
}
diff --git a/samples/OpenIdProviderMvc/Global.asax.cs b/samples/OpenIdProviderMvc/Global.asax.cs
index 3ca6104..c848c1c 100644
--- a/samples/OpenIdProviderMvc/Global.asax.cs
+++ b/samples/OpenIdProviderMvc/Global.asax.cs
@@ -20,11 +20,11 @@
routes.MapRoute(
"User identities",
"user/{id}/{action}",
- new { controller = "User", action = "Identity", id = string.Empty });
+ new { controller = "User", action = "Identity", id = string.Empty, anon = false });
routes.MapRoute(
"PPID identifiers",
"anon",
- new { controller = "User", action = "PpidIdentity", id = string.Empty });
+ new { controller = "User", action = "Identity", id = string.Empty, anon = true });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
diff --git a/samples/OpenIdProviderMvc/OpenIdProviderMvc.csproj b/samples/OpenIdProviderMvc/OpenIdProviderMvc.csproj
index f568538..0c01c64 100644
--- a/samples/OpenIdProviderMvc/OpenIdProviderMvc.csproj
+++ b/samples/OpenIdProviderMvc/OpenIdProviderMvc.csproj
@@ -92,11 +92,9 @@
<Content Include="Views\Account\ChangePassword.aspx" />
<Content Include="Views\Account\ChangePasswordSuccess.aspx" />
<Content Include="Views\Account\Register.aspx" />
- <Content Include="Views\Home\Xrds.aspx" />
+ <Content Include="Views\Shared\Xrds.aspx" />
<Content Include="Views\OpenId\Provider.aspx" />
- <Content Include="Views\User\PpidIdentity.aspx" />
<Content Include="Views\User\Identity.aspx" />
- <Content Include="Views\User\Xrds.aspx" />
<Content Include="Web.config" />
<Content Include="Content\Site.css" />
<Content Include="Scripts\jquery-1.3.1.js" />
diff --git a/samples/OpenIdProviderMvc/Views/Home/Xrds.aspx b/samples/OpenIdProviderMvc/Views/Home/Xrds.aspx
deleted file mode 100644
index 7b0c417..0000000
--- a/samples/OpenIdProviderMvc/Views/Home/Xrds.aspx
+++ /dev/null
@@ -1,19 +0,0 @@
-<%@ Page Language="C#" AutoEventWireup="true" ContentType="application/xrds+xml" %><?xml version="1.0" encoding="UTF-8"?>
-<%--
-This page is a required as part of the service discovery phase of the openid
-protocol (step 1). It simply renders the xml for doing service discovery of
-server.aspx using the xrds mechanism.
-This XRDS doc is discovered via the user.aspx page.
---%>
-<xrds:XRDS
- xmlns:xrds="xri://$xrds"
- xmlns:openid="http://openid.net/xmlns/1.0"
- xmlns="xri://$xrd*($v*2.0)">
- <XRD>
- <Service priority="10">
- <Type>http://specs.openid.net/auth/2.0/server</Type>
- <Type>http://openid.net/extensions/sreg/1.1</Type>
- <URI><%=new Uri(Request.Url, Response.ApplyAppPathModifier("~/OpenId/Provider"))%></URI>
- </Service>
- </XRD>
-</xrds:XRDS>
diff --git a/samples/OpenIdProviderMvc/Views/Shared/Xrds.aspx b/samples/OpenIdProviderMvc/Views/Shared/Xrds.aspx
new file mode 100644
index 0000000..7aad102
--- /dev/null
+++ b/samples/OpenIdProviderMvc/Views/Shared/Xrds.aspx
@@ -0,0 +1,31 @@
+<%@ Page Language="C#" AutoEventWireup="true" ContentType="application/xrds+xml" %>
+<%@ OutputCache Duration="86400" VaryByParam="none" Location="Any" %><?xml version="1.0" encoding="UTF-8"?>
+<%--
+This XRDS view is used for both the OP identifier and the user identity pages.
+Only a couple of conditional checks are required to share the view, but sharing the view
+makes it very easy to ensure that all the Type URIs that this server supports are included
+for all XRDS discovery.
+--%>
+<xrds:XRDS
+ xmlns:xrds="xri://$xrds"
+ xmlns:openid="http://openid.net/xmlns/1.0"
+ xmlns="xri://$xrd*($v*2.0)">
+ <XRD>
+ <Service priority="10">
+<% if (ViewData["OPIdentifier"] != null) { %>
+ <Type>http://specs.openid.net/auth/2.0/server</Type>
+<% } else { %>
+ <Type>http://specs.openid.net/auth/2.0/signon</Type>
+<% } %>
+ <Type>http://openid.net/extensions/sreg/1.1</Type>
+ <Type>http://axschema.org/contact/email</Type>
+
+ <%--
+ Add these types when and if the Provider supports the respective aspects of the UI extension.
+ <Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
+ <Type>http://specs.openid.net/extensions/ui/1.0/lang-pref</Type>
+ <Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>--%>
+ <URI><%=new Uri(Request.Url, Response.ApplyAppPathModifier("~/OpenId/Provider"))%></URI>
+ </Service>
+ </XRD>
+</xrds:XRDS>
diff --git a/samples/OpenIdProviderMvc/Views/User/Identity.aspx b/samples/OpenIdProviderMvc/Views/User/Identity.aspx
index bb50899..51233a3 100644
--- a/samples/OpenIdProviderMvc/Views/User/Identity.aspx
+++ b/samples/OpenIdProviderMvc/Views/User/Identity.aspx
@@ -3,18 +3,26 @@
<%@ Register Assembly="DotNetOpenAuth" Namespace="DotNetOpenAuth.OpenId.Provider"
TagPrefix="op" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
- <%=Html.Encode(ViewData["username"])%>
- identity page
+ <%=Html.Encode(ViewData["username"] ?? string.Empty)%>
+ Identity page
</asp:Content>
<asp:Content runat="server" ContentPlaceHolderID="HeadContent">
- <op:IdentityEndpoint ID="IdentityEndpoint11" runat="server" ProviderEndpointUrl="~/OpenId/Provider" ProviderVersion="V11" />
- <op:IdentityEndpoint ID="IdentityEndpoint20" runat="server" ProviderEndpointUrl="~/OpenId/Provider" XrdsUrl="~/User/all/xrds" XrdsAutoAnswer="false" />
+ <op:IdentityEndpoint ID="IdentityEndpoint11" runat="server" ProviderEndpointUrl="~/OpenId/Provider"
+ ProviderVersion="V11" />
+ <op:IdentityEndpoint ID="IdentityEndpoint20" runat="server" ProviderEndpointUrl="~/OpenId/Provider"
+ XrdsUrl="~/User/all/xrds" XrdsAutoAnswer="false" XrdsAdvertisement="Both" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
- <h2>This is
- <%=Html.Encode(ViewData["username"])%>'s OpenID identity page </h2>
-
+ <h2>
+ <% if (!string.IsNullOrEmpty(ViewData["username"] as string)) { %>
+ This is
+ <%=Html.Encode(ViewData["username"])%>'s
+ <% } %>
+ OpenID identity page
+ </h2>
<% if (string.Equals(User.Identity.Name, ViewData["username"])) { %>
- <p>This is <b>your</b> identity page. </p>
+ <p>
+ This is <b>your</b> identity page.
+ </p>
<% } %>
</asp:Content>
diff --git a/samples/OpenIdProviderMvc/Views/User/PpidIdentity.aspx b/samples/OpenIdProviderMvc/Views/User/PpidIdentity.aspx
deleted file mode 100644
index 655e5d6..0000000
--- a/samples/OpenIdProviderMvc/Views/User/PpidIdentity.aspx
+++ /dev/null
@@ -1,16 +0,0 @@
-<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
-
-<%@ Register Assembly="DotNetOpenAuth" Namespace="DotNetOpenAuth.OpenId.Provider"
- TagPrefix="op" %>
-<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
- Identity page
-</asp:Content>
-<asp:Content runat="server" ContentPlaceHolderID="HeadContent">
- <op:IdentityEndpoint ID="IdentityEndpoint11" runat="server" ProviderEndpointUrl="~/OpenId/PpidProvider"
- ProviderVersion="V11" />
- <op:IdentityEndpoint ID="IdentityEndpoint20" runat="server" ProviderEndpointUrl="~/OpenId/PpidProvider"
- XrdsUrl="~/User/all/xrds" XrdsAutoAnswer="false" />
-</asp:Content>
-<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
- <h2>OpenID identity page </h2>
-</asp:Content>
diff --git a/samples/OpenIdProviderMvc/Views/User/Xrds.aspx b/samples/OpenIdProviderMvc/Views/User/Xrds.aspx
deleted file mode 100644
index 452742c..0000000
--- a/samples/OpenIdProviderMvc/Views/User/Xrds.aspx
+++ /dev/null
@@ -1,15 +0,0 @@
-<%@ Page Language="C#" AutoEventWireup="true" ContentType="application/xrds+xml" %><?xml version="1.0" encoding="UTF-8"?>
-<XRDS xmlns="xri://$xrds" xmlns:openid="http://openid.net/xmlns/1.0">
- <XRD xmlns="xri://$xrd*($v*2.0)">
- <Service priority="10">
- <Type>http://specs.openid.net/auth/2.0/signon</Type>
- <Type>http://openid.net/extensions/sreg/1.1</Type>
- <URI><%=new Uri(Request.Url, Response.ApplyAppPathModifier("~/OpenId/Provider"))%></URI>
- </Service>
- <Service priority="20">
- <Type>http://openid.net/signon/1.0</Type>
- <Type>http://openid.net/extensions/sreg/1.1</Type>
- <URI><%=new Uri(Request.Url, Response.ApplyAppPathModifier("~/OpenId/Provider"))%></URI>
- </Service>
- </XRD>
-</XRDS>