summaryrefslogtreecommitdiffstats
path: root/samples/OpenIdRelyingPartyWebForms/loginProgrammatic.aspx.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-03-26 14:04:40 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2009-03-26 14:04:40 -0700
commitd7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7 (patch)
tree019bb8c875e2fa9c5ca07bb17af17891411307cf /samples/OpenIdRelyingPartyWebForms/loginProgrammatic.aspx.cs
parent540f088953154bee2356cdf5f65a097cb6d3ebe4 (diff)
downloadDotNetOpenAuth-d7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7.zip
DotNetOpenAuth-d7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7.tar.gz
DotNetOpenAuth-d7bec791ff0b1fe6517c2b450d6fd1116d0a8ea7.tar.bz2
Renamed OpenID RP sample projects.
Diffstat (limited to 'samples/OpenIdRelyingPartyWebForms/loginProgrammatic.aspx.cs')
-rw-r--r--samples/OpenIdRelyingPartyWebForms/loginProgrammatic.aspx.cs118
1 files changed, 118 insertions, 0 deletions
diff --git a/samples/OpenIdRelyingPartyWebForms/loginProgrammatic.aspx.cs b/samples/OpenIdRelyingPartyWebForms/loginProgrammatic.aspx.cs
new file mode 100644
index 0000000..fe73b7e
--- /dev/null
+++ b/samples/OpenIdRelyingPartyWebForms/loginProgrammatic.aspx.cs
@@ -0,0 +1,118 @@
+namespace OpenIdRelyingPartyWebForms {
+ using System;
+ using System.Net;
+ using System.Web.Security;
+ using System.Web.UI;
+ using System.Web.UI.WebControls;
+ using DotNetOpenAuth.Messaging;
+ using DotNetOpenAuth.OpenId;
+ using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration;
+ using DotNetOpenAuth.OpenId.RelyingParty;
+
+ public partial class loginProgrammatic : System.Web.UI.Page {
+ protected void openidValidator_ServerValidate(object source, ServerValidateEventArgs args) {
+ // This catches common typos that result in an invalid OpenID Identifier.
+ args.IsValid = Identifier.IsValid(args.Value);
+ }
+
+ protected void loginButton_Click(object sender, EventArgs e) {
+ if (!this.Page.IsValid) {
+ return; // don't login if custom validation failed.
+ }
+ try {
+ using (OpenIdRelyingParty openid = this.createRelyingParty()) {
+ IAuthenticationRequest request = openid.CreateRequest(this.openIdBox.Text);
+
+ // This is where you would add any OpenID extensions you wanted
+ // to include in the authentication request.
+ request.AddExtension(new ClaimsRequest {
+ Country = DemandLevel.Request,
+ Email = DemandLevel.Request,
+ Gender = DemandLevel.Require,
+ PostalCode = DemandLevel.Require,
+ TimeZone = DemandLevel.Require,
+ });
+
+ // Send your visitor to their Provider for authentication.
+ request.RedirectToProvider();
+ }
+ } catch (ProtocolException ex) {
+ // The user probably entered an Identifier that
+ // was not a valid OpenID endpoint.
+ this.openidValidator.Text = ex.Message;
+ this.openidValidator.IsValid = false;
+ } catch (WebException ex) {
+ // The user probably entered an Identifier that
+ // was not a valid OpenID endpoint.
+ this.openidValidator.Text = ex.Message;
+ this.openidValidator.IsValid = false;
+ }
+ }
+
+ protected void Page_Load(object sender, EventArgs e) {
+ this.openIdBox.Focus();
+
+ // For debugging/testing, we allow remote clearing of all associations...
+ // NOT a good idea on a production site.
+ if (Request.QueryString["clearAssociations"] == "1") {
+ Application.Remove("DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.ApplicationStore");
+
+ // Force a redirect now to prevent the user from logging in while associations
+ // are constantly being cleared.
+ UriBuilder builder = new UriBuilder(Request.Url);
+ builder.Query = null;
+ Response.Redirect(builder.Uri.AbsoluteUri);
+ }
+
+ OpenIdRelyingParty openid = this.createRelyingParty();
+ var response = openid.GetResponse();
+ if (response != null) {
+ switch (response.Status) {
+ case AuthenticationStatus.Authenticated:
+ // This is where you would look for any OpenID extension responses included
+ // in the authentication assertion.
+ var claimsResponse = response.GetExtension<ClaimsResponse>();
+ State.ProfileFields = claimsResponse;
+
+ // Store off the "friendly" username to display -- NOT for username lookup
+ State.FriendlyLoginName = response.FriendlyIdentifierForDisplay;
+
+ // Use FormsAuthentication to tell ASP.NET that the user is now logged in,
+ // with the OpenID Claimed Identifier as their username.
+ FormsAuthentication.RedirectFromLoginPage(response.ClaimedIdentifier, false);
+ break;
+ case AuthenticationStatus.Canceled:
+ this.loginCanceledLabel.Visible = true;
+ break;
+ case AuthenticationStatus.Failed:
+ this.loginFailedLabel.Visible = true;
+ break;
+
+ // We don't need to handle SetupRequired because we're not setting
+ // IAuthenticationRequest.Mode to immediate mode.
+ ////case AuthenticationStatus.SetupRequired:
+ //// break;
+ }
+ }
+ }
+
+ private OpenIdRelyingParty createRelyingParty() {
+ OpenIdRelyingParty openid = new OpenIdRelyingParty();
+ int minsha, maxsha, minversion;
+ if (int.TryParse(Request.QueryString["minsha"], out minsha)) {
+ openid.SecuritySettings.MinimumHashBitLength = minsha;
+ }
+ if (int.TryParse(Request.QueryString["maxsha"], out maxsha)) {
+ openid.SecuritySettings.MaximumHashBitLength = maxsha;
+ }
+ if (int.TryParse(Request.QueryString["minversion"], out minversion)) {
+ switch (minversion) {
+ case 1: openid.SecuritySettings.MinimumRequiredOpenIdVersion = ProtocolVersion.V10; break;
+ case 2: openid.SecuritySettings.MinimumRequiredOpenIdVersion = ProtocolVersion.V20; break;
+ default: throw new ArgumentOutOfRangeException("minversion");
+ }
+ }
+ return openid;
+ }
+ }
+} \ No newline at end of file