private bool IsValidForUserCreation(OpenIdEventArgs e, ClaimsResponse claim)
        {
            if (e == null)
            {
                return(false);
            }
            if (claim == null)
            {
                return(false);
            }
            if (e.ClaimedIdentifier == null)
            {
                return(false);
            }

            if (String.IsNullOrEmpty(claim.Email))
            {
                return(false);
            }
            if (String.IsNullOrEmpty(claim.FullName))
            {
                return(false);
            }

            if (!Email.IsValidEmailAddressSyntax(claim.Email))
            {
                return(false);
            }

            // if custom profile fields are required
            // must pass them on to registration page
            CProfileConfiguration profileConfig = CProfileConfiguration.GetConfig();

            if (profileConfig != null)
            {
                if (profileConfig.HasRequiredCustomProperties())
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 2
0
        protected void OpenIdLogin1_LoggedIn(object sender, OpenIdEventArgs e)
        {
            // prevent the base control from doing forms auth for us
            e.Cancel = true;

            Guid userGuid = SiteUser.GetUserGuidFromOpenId(
                siteSettings.SiteId,
                e.ClaimedIdentifier.ToString());

            if (userGuid == Guid.Empty)
            {
                // if enough info is available auto create user
                DoNewUserLogic(e);
            }
            else
            {
                DoExistingUserLogic(userGuid);
            }
        }
Esempio n. 3
0
    protected void OpenIdLogin1_LoggedIn1(object sender, OpenIdEventArgs e)
    {
        ExceptionHandler(this, () =>
        {
            e.Cancel = true;

            if (e.Response != null)
            {
                string openId = e.Response.ClaimedIdentifier.ToString().Trim();

                UserState.OpenIdResponse = new OpenIdResponse(e.Response);

                if (UserState.OpenIdResponse.IsAuthenticated)
                {
                    UserState.CurrentUser = PersonFacade.Select(openId);

                    if (UserState.CurrentUser != null && UserState.CurrentUser.PersonStatus.Equals(Status.Active))
                    {
                        SetLoginFormInActive();
                        SetLoginAuthenticatedActive();
                    }
                    else
                    {
                        SetLoginAuthenticatedInActive();
                        SetLoginFormInActive();
                        Response.Redirect("~/Account/register.aspx", true);
                    }
                }
                else
                {
                    SetLoginAuthenticatedInActive();
                    SetLoginFormInActive();
                    Response.Redirect("~/Default.aspx", true);
                }
            }
        });
    }
Esempio n. 4
0
 protected void OpenIdLogin1_SetupRequired(object sender, OpenIdEventArgs e)
 {
     setupRequiredLabel.Visible = true;
 }
Esempio n. 5
0
 /// <summary>
 /// Fired upon login.
 /// Note, that straight after login, forms auth will redirect the user to their original page. So this page may never be rendererd.
 /// </summary>
 protected void OpenIdLogin1_LoggedIn(object sender, OpenIdEventArgs e)
 {
     State.FriendlyLoginName = e.Response.FriendlyIdentifierForDisplay;
     State.ProfileFields     = e.Response.GetExtension <ClaimsResponse>();
     State.PapePolicies      = e.Response.GetExtension <PolicyResponse>();
 }
Esempio n. 6
0
 protected void OpenIdLogin1_LoggingIn(object sender, OpenIdEventArgs e)
 {
     prepareRequest(e.Request);
 }
Esempio n. 7
0
 protected void openIdSelector_LoggedIn(object sender, OpenIdEventArgs e)
 {
     this.LoginUser(RelyingPartyLogic.User.ProcessUserLogin(e.Response));
 }
        private void DoNewUserLogic(OpenIdEventArgs e)
        {
            if (e == null)
            {
                return;
            }

            ClaimsResponse claim = e.Response.GetExtension <ClaimsResponse>();

            if (claim == null)
            {
                return;
            }

            if (IsValidForUserCreation(e, claim))
            {
                if (SiteUser.EmailExistsInDB(siteSettings.SiteId, claim.Email))
                {
                    // show message that user should login and associate
                    // their open id account on their profile page.
                    lblError.Text = Resource.OpenIDRegisterUserEmailExistsMessage;
                    return;
                }
                else
                {
                    // create user automagically since we have all
                    // the needed data
                    SiteUser newUser = new SiteUser(siteSettings);
                    newUser.Email = claim.Email;
                    newUser.Name  = claim.FullName;
                    string loginName = newUser.Name.Replace(" ", ".").ToLower();
                    if (loginName.Length > 50)
                    {
                        loginName = loginName.Substring(0, 50);
                    }

                    if (SiteUser.LoginExistsInDB(
                            siteSettings.SiteId, loginName))
                    {
                        loginName = e.ClaimedIdentifier.ToString().Replace("http://", string.Empty).Replace("https://", string.Empty).Replace("/", string.Empty);
                        if (loginName.Length > 50)
                        {
                            loginName = loginName.Substring(0, 50);
                        }

                        int i = 1;
                        while (SiteUser.LoginExistsInDB(
                                   siteSettings.SiteId, loginName))
                        {
                            loginName += i.ToString();
                            if (loginName.Length > 50)
                            {
                                loginName = loginName.Remove(40, 1);
                            }
                            i++;
                        }
                    }

                    newUser.LoginName        = loginName;
                    newUser.Password         = SiteUser.CreateRandomPassword(7, WebConfigSettings.PasswordGeneratorChars);
                    newUser.PasswordQuestion = Resource.ManageUsersDefaultSecurityQuestion;
                    newUser.PasswordAnswer   = Resource.ManageUsersDefaultSecurityAnswer;
                    newUser.OpenIdUri        = e.ClaimedIdentifier.ToString();
                    newUser.Save();
                    if (siteSettings.UseSecureRegistration)
                    {
                        newUser.SetRegistrationConfirmationGuid(Guid.NewGuid());
                    }


                    // track user ip address
                    UserLocation userLocation = new UserLocation(newUser.UserGuid, SiteUtils.GetIP4Address());
                    userLocation.SiteGuid = siteSettings.SiteGuid;
                    userLocation.Hostname = Page.Request.UserHostName;
                    userLocation.Save();

                    if (
                        (siteSettings.UseSecureRegistration) &&
                        (newUser.RegisterConfirmGuid != Guid.Empty)
                        )
                    {
                        Notification.SendRegistrationConfirmationLink(
                            SiteUtils.GetSmtpSettings(),
                            ResourceHelper.GetMessageTemplate("RegisterConfirmEmailMessage.config"),
                            siteSettings.DefaultEmailFromAddress,
                            siteSettings.DefaultFromEmailAlias,
                            newUser.Email,
                            siteSettings.SiteName,
                            WebUtils.GetSiteRoot() + "/ConfirmRegistration.aspx?ticket=" +
                            newUser.RegisterConfirmGuid.ToString());

                        lblError.Text = Resource.LoginUnconfirmedEmailMessage;
                        log.Info("Automatically created User " + newUser.Name + " on login from open id. Tried to login but email address is not confirmed.");

                        return;
                    }

                    if (siteSettings.UseEmailForLogin)
                    {
                        FormsAuthentication.SetAuthCookie(
                            newUser.Email, true);
                    }
                    else
                    {
                        FormsAuthentication.SetAuthCookie(
                            newUser.LoginName, true);
                    }

                    if (WebConfigSettings.UseFoldersInsteadOfHostnamesForMultipleSites)
                    {
                        string cookieName = "siteguid" + siteSettings.SiteGuid;
                        CookieHelper.SetCookie(cookieName, newUser.UserGuid.ToString(), true);
                    }

                    newUser.UpdateLastLoginTime();

                    string redirectUrl = GetRedirectPath();
                    CookieHelper.ExpireCookie(returnUrlCookieName);
                    WebUtils.SetupRedirect(this, redirectUrl);
                    return;
                }
            }
            else
            {
                // user not found
                // required fields not available from open id
                // redirect to register page?
                // Or show message with Link to
                // register page
                string registerLinkHref = siteRoot
                                          + "/Secure/RegisterWithOpenID.aspx";

                litNotRegisteredYetMessage.Text
                    = string.Format(
                          Resource.OpenIDMustRegisterBeforeLoginMesage,
                          registerLinkHref);
            }
        }
 protected void OpenIdLogin1_Canceled(object sender, OpenIdEventArgs e)
 {
     lblLoginCanceled.Visible = true;
 }
Esempio n. 10
0
 protected void OpenIdLogin_LoggedIn(object sender, OpenIdEventArgs e)
 {
     LogUser(e.ClaimedIdentifier.ToString(), e.Response.GetExtension <ClaimsResponse>());
 }
Esempio n. 11
0
 protected void OpenIdAjaxTextBox1_UnconfirmedPositiveAssertion(object sender, OpenIdEventArgs e)
 {
     // This is where we register extensions that we want to have available in javascript
     // on the browser.
     OpenIdAjaxTextBox1.RegisterClientScriptExtension <ClaimsResponse>("sreg");
 }
Esempio n. 12
0
 protected void OpenIdAjaxTextBox1_LoggingIn(object sender, OpenIdEventArgs e)
 {
     e.Request.AddExtension(new ClaimsRequest {
         Email = DemandLevel.Request,
     });
 }
Esempio n. 13
0
 protected void OpenIdLogin1_LoggedIn(object sender, OpenIdEventArgs e)
 {
     State.FriendlyLoginName = e.Response.FriendlyIdentifierForDisplay;
 }
        private void DoNewUserLogic(OpenIdEventArgs e)
        {
            if (e == null)
            {
                return;
            }

            ClaimsResponse claim = e.Response.GetExtension <ClaimsResponse>();

            if (claim == null)
            {
                return;
            }

            if (IsValidForUserCreation(e, claim))
            {
                if (SiteUser.EmailExistsInDB(siteSettings.SiteId, claim.Email))
                {
                    // show message that user should login and associate
                    // their open id account on their profile page.
                    lblError.Text = Resource.OpenIDRegisterUserEmailExistsMessage;
                }
                else
                {
                    // create user automagically since we have all
                    // the needed data
                    string loginName
                        = SecurityHelper.RemoveMarkup(e.ClaimedIdentifier.ToString().Replace("http://", string.Empty).Replace("https://", string.Empty).Replace("/", string.Empty));

                    CreateUser(
                        e.ClaimedIdentifier.ToString(),
                        claim.Email,
                        loginName,
                        SecurityHelper.RemoveMarkup(claim.FullName));

                    return;
                }
            }
            else
            {
                // prompt user to enter needed fields

                CookieHelper.SetSecureCookie(openidCookieName, e.ClaimedIdentifier.ToString());
                if (
                    (claim != null) &&
                    (claim.Email != null) &&
                    (claim.Email.Length > 3) &&
                    (Email.IsValidEmailAddressSyntax(claim.Email))
                    )
                {
                    CookieHelper.SetSecureCookie(openIdEmailCookieName, claim.Email);
                    divEmailInput.Visible   = false;
                    divEmailDisplay.Visible = true;
                    litEmail.Text           = claim.Email;
                }
                else
                {
                    divEmailInput.Visible   = true;
                    divEmailDisplay.Visible = false;
                }

                if (
                    (claim != null) &&
                    (claim.FullName != null) &&
                    (claim.FullName.Length > 0)
                    )
                {
                    CookieHelper.SetSecureCookie(openIdFullNameCookieName, SecurityHelper.RemoveMarkup(claim.FullName));
                }

                pnlNeededProfileProperties.Visible = true;
                pnlOpenID.Visible = false;
                if (e.ClaimedIdentifier != null)
                {
                    litOpenIDURI.Text = e.ClaimedIdentifier.ToString();
                }
                //PopulateRequiredProfileControls();
                //DisplayResults(e);
                litInfoNeededMessage.Text = Resource.OpenIDAdditionalInfoNeededMessage;
            }
        }
Esempio n. 15
0
        protected void identifierBox_LoggingIn(object sender, OpenIdEventArgs e)
        {
            var consumer = CreateConsumer();

            consumer.AttachAuthorizationRequest(e.Request, "http://tempuri.org/IDataApi/GetName");
        }
 void OpenIdLogin1_Failed(object sender, OpenIdEventArgs e)
 {
     lblLoginFailed.Visible = true;
 }
Esempio n. 17
0
 protected void identifierBox_Failed(object sender, OpenIdEventArgs e)
 {
     this.MultiView1.SetActiveView(this.AuthenticationFailed);
 }
Esempio n. 18
0
 protected void openIdBox_LoggedIn(object sender, OpenIdEventArgs e)
 {
     this.AddIdentifier(e.ClaimedIdentifier, e.Response.FriendlyIdentifierForDisplay);
 }
Esempio n. 19
0
 protected void OpenIdAjaxTextBox1_LoggedIn(object sender, OpenIdEventArgs e)
 {
     string claimedId = e.Response.ClaimedIdentifier;
     // Do something here
 }