diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2009-04-23 09:01:13 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2009-04-23 09:01:13 -0700 |
commit | a46f18685f6ab0b843a9de63bf0172ad22808033 (patch) | |
tree | 08dfd9ee709549327c108fa4883182725777a7dc /samples/OpenIdProviderMvc/Controllers/OpenIdController.cs | |
parent | 7323ea7a7b17e6fc0c6636f4c5784d5bfe2179e9 (diff) | |
download | DotNetOpenAuth-a46f18685f6ab0b843a9de63bf0172ad22808033.zip DotNetOpenAuth-a46f18685f6ab0b843a9de63bf0172ad22808033.tar.gz DotNetOpenAuth-a46f18685f6ab0b843a9de63bf0172ad22808033.tar.bz2 |
Shorted anonymous identifier hash length, reworked the OP MVC sample to support both anonymous and identifying identifiers.
Diffstat (limited to 'samples/OpenIdProviderMvc/Controllers/OpenIdController.cs')
-rw-r--r-- | samples/OpenIdProviderMvc/Controllers/OpenIdController.cs | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs b/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs index a46c39a..7cfbb45 100644 --- a/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs +++ b/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs @@ -18,27 +18,13 @@ namespace OpenIdProviderMvc.Controllers { } [ValidateInput(false)] - public ActionResult Provider() { - IRequest request = OpenIdProvider.GetRequest(); - if (request != null) { - var authRequest = request as IAuthenticationRequest; - if (authRequest != null) { - PendingAuthenticationRequest = authRequest; - if (User.Identity.IsAuthenticated && (authRequest.IsDirectedIdentity || Models.User.GetClaimedIdentifierForUser(User.Identity.Name) == authRequest.LocalIdentifier)) { - return this.SendAssertion(true); - } else { - return RedirectToAction("LogOn", "Account", new { returnUrl = Url.Action("SendAssertion") }); - } - } + public ActionResult PpidProvider() { + return DoProvider(true); + } - if (request.IsResponseReady) { - return OpenIdProvider.PrepareResponse(request).AsActionResult(); - } else { - return RedirectToAction("LogOn", "Account"); - } - } else { - return View(); - } + [ValidateInput(false)] + public ActionResult Provider() { + return DoProvider(false); } [Authorize] @@ -54,10 +40,6 @@ 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) { @@ -71,9 +53,34 @@ namespace OpenIdProviderMvc.Controllers { if (pseudonymous) { var anonProvider = new AnonymousIdentifierProvider(); authReq.ScrubPersonallyIdentifiableInformation(anonProvider, true); + } else { + // TODO: Respond to AX/sreg extension requests here } return OpenIdProvider.PrepareResponse(authReq).AsActionResult(); } + + private ActionResult DoProvider(bool pseudonymous) { + IRequest request = OpenIdProvider.GetRequest(); + if (request != null) { + var authRequest = request as IAuthenticationRequest; + if (authRequest != null) { + PendingAuthenticationRequest = authRequest; + if (User.Identity.IsAuthenticated && (authRequest.IsDirectedIdentity || Models.User.GetClaimedIdentifierForUser(User.Identity.Name) == authRequest.LocalIdentifier)) { + return this.SendAssertion(pseudonymous); + } else { + return RedirectToAction("LogOn", "Account", new { returnUrl = Url.Action("SendAssertion") }); + } + } + + if (request.IsResponseReady) { + return OpenIdProvider.PrepareResponse(request).AsActionResult(); + } else { + return RedirectToAction("LogOn", "Account"); + } + } else { + return View(); + } + } } } |