summaryrefslogtreecommitdiffstats
path: root/samples/OpenIdProviderMvc/Controllers/OpenIdController.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-04-23 09:01:13 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2009-04-23 09:01:13 -0700
commita46f18685f6ab0b843a9de63bf0172ad22808033 (patch)
tree08dfd9ee709549327c108fa4883182725777a7dc /samples/OpenIdProviderMvc/Controllers/OpenIdController.cs
parent7323ea7a7b17e6fc0c6636f4c5784d5bfe2179e9 (diff)
downloadDotNetOpenAuth-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.cs55
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();
+ }
+ }
}
}