summaryrefslogtreecommitdiffstats
path: root/samples/OpenIdProviderMvc/Controllers
diff options
context:
space:
mode:
Diffstat (limited to 'samples/OpenIdProviderMvc/Controllers')
-rw-r--r--samples/OpenIdProviderMvc/Controllers/OpenIdController.cs15
-rw-r--r--samples/OpenIdProviderMvc/Controllers/UserController.cs10
2 files changed, 19 insertions, 6 deletions
diff --git a/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs b/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs
index fff0a62..a46c39a 100644
--- a/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs
+++ b/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs
@@ -7,6 +7,7 @@ namespace OpenIdProviderMvc.Controllers {
using System.Web.Mvc.Ajax;
using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.OpenId.Provider;
+ using OpenIdProviderMvc.Code;
public class OpenIdController : Controller {
internal static OpenIdProvider OpenIdProvider = new OpenIdProvider();
@@ -24,7 +25,7 @@ namespace OpenIdProviderMvc.Controllers {
if (authRequest != null) {
PendingAuthenticationRequest = authRequest;
if (User.Identity.IsAuthenticated && (authRequest.IsDirectedIdentity || Models.User.GetClaimedIdentifierForUser(User.Identity.Name) == authRequest.LocalIdentifier)) {
- return this.SendAssertion();
+ return this.SendAssertion(true);
} else {
return RedirectToAction("LogOn", "Account", new { returnUrl = Url.Action("SendAssertion") });
}
@@ -41,7 +42,7 @@ namespace OpenIdProviderMvc.Controllers {
}
[Authorize]
- public ActionResult SendAssertion() {
+ public ActionResult SendAssertion(bool pseudonymous) {
IAuthenticationRequest authReq = PendingAuthenticationRequest;
PendingAuthenticationRequest = null;
if (authReq == null) {
@@ -53,6 +54,10 @@ namespace OpenIdProviderMvc.Controllers {
authReq.ClaimedIdentifier = authReq.LocalIdentifier;
authReq.IsAuthenticated = true;
} else {
+ if (pseudonymous) {
+ throw new InvalidOperationException("Pseudonymous identifiers are only available when used with directed identity.");
+ }
+
if (authReq.LocalIdentifier == Models.User.GetClaimedIdentifierForUser(User.Identity.Name)) {
authReq.IsAuthenticated = true;
if (!authReq.IsDelegatedIdentifier) {
@@ -62,6 +67,12 @@ namespace OpenIdProviderMvc.Controllers {
authReq.IsAuthenticated = false;
}
}
+
+ if (pseudonymous) {
+ var anonProvider = new AnonymousIdentifierProvider();
+ authReq.ScrubPersonallyIdentifiableInformation(anonProvider, true);
+ }
+
return OpenIdProvider.PrepareResponse(authReq).AsActionResult();
}
}
diff --git a/samples/OpenIdProviderMvc/Controllers/UserController.cs b/samples/OpenIdProviderMvc/Controllers/UserController.cs
index 70bea04..0a5b04e 100644
--- a/samples/OpenIdProviderMvc/Controllers/UserController.cs
+++ b/samples/OpenIdProviderMvc/Controllers/UserController.cs
@@ -8,16 +8,18 @@ namespace OpenIdProviderMvc.Controllers {
public class UserController : Controller {
public ActionResult Identity(string id) {
- var redirect = this.RedirectIfNotNormalizedRequestUri();
- if (redirect != null) {
- return redirect;
+ if (!string.IsNullOrEmpty(id)) {
+ var redirect = this.RedirectIfNotNormalizedRequestUri();
+ if (redirect != null) {
+ return redirect;
+ }
}
if (Request.AcceptTypes.Contains("application/xrds+xml")) {
return View("Xrds");
}
- this.ViewData["username"] = id;
+ this.ViewData["username"] = string.IsNullOrEmpty(id) ? "anonymous" : id;
return View();
}