Exemplo n.º 1
0
        private bool ValidateSettings()
        {
            if (this.settings == null)
            {
                return(false);
            }

            try
            {
                if (
                    string.IsNullOrEmpty(UPSBrowserSettings.getStringProperty(settings, "identityProviderName"))
                    ||
                    string.IsNullOrEmpty(UPSBrowserSettings.getStringProperty(settings, "tokenSigningCertificateThumbprint"))
                    ||
                    string.IsNullOrEmpty(UPSBrowserSettings.getStringProperty(settings, "wsExternalUsersSourceUrl"))
                    )
                {
                    return(false);
                }
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
 private bool LoadSettings()
 {
     // retrieve saved settings from SPWebApplication property bag
     settings = UPSBrowserSettings.Settings;
     try
     {
         identityProviderName = UPSBrowserSettings.getStringProperty(settings, "identityProviderName");
     }
     catch
     {
         identityProviderName = null;
     };
     return(true);
 }
Exemplo n.º 3
0
        private void SaveSettingsButton_Click(object sender, EventArgs e)
        {
            UPSBrowserLogger.LogDebug(loggingCategory, "SaveSettingsButton_Click invoked");

            UPSBrowserSettings.setStringProperty(settings, "identityProviderName", IdentityProvidersDropDownList.SelectedValue);
            UPSBrowserSettings.setStringProperty(settings, "tokenSigningCertificateThumbprint", TokenSigningCertificatesDropDownList.SelectedValue);
            UPSBrowserSettings.setStringProperty(settings, "wsExternalUsersSourceUrl", WSExternalUsersSourceURLTextBox.Text);

            bool result = SaveSettings();

            if (!result)
            {
                DisplayCriticalError("Error saving settings!", true);
            }
        }
Exemplo n.º 4
0
        private void ImportUsersStartImportButton_Click(object sender, EventArgs evt)
        {
            UPSBrowserLogger.LogDebug(loggingCategory, "ImportUsersStartImportButton_Click invoked");

            string        resolvedUsersEmails = upsbrowser_import_users_resolved_hiddeninput.Text;
            List <string> emails = new List <string>(resolvedUsersEmails.Split(';'));

            emails = emails.Where(email => !string.IsNullOrEmpty(email)).ToList <string>(); //filter out empty emails

            string wsBaseUrl             = UPSBrowserSettings.getStringProperty(this.settings, "wsExternalUsersSourceUrl");
            string certThumbprint        = UPSBrowserSettings.getStringProperty(this.settings, "tokenSigningCertificateThumbprint");
            string identityProviderName  = UPSBrowserSettings.getStringProperty(this.settings, "identityProviderName");
            TokenSigningCertificate cert = certs.FirstOrDefault(c => c.thumbprint == certThumbprint);

            List <User> users = null;

            try
            {
                externalUsersSource.Init(wsBaseUrl, cert);
                users = externalUsersSource.getUsersByEmails(emails);
            }
            catch (Exception e)
            {
                DisplayCriticalError($"Error getting users from external source: {e.Message}", true);
                return;
            };


            if ((users != null) && (users.Count > 0))
            {
                foreach (User user in users)
                {
                    User createdUser = upsUsersDAL.createUser(user, identityProviderName);
                    if (createdUser != null)
                    {
                        string hiddenInputValue = upsbrowser_import_users_resolved_hiddeninput.Text.ToLower();
                        hiddenInputValue = hiddenInputValue.Replace(createdUser.WorkEmail.ToLower() + ";", "");
                        upsbrowser_import_users_resolved_hiddeninput.Text = hiddenInputValue;
                    }
                }
                ;
            }
            ;
        }
Exemplo n.º 5
0
        private bool InitSettings()
        {
            UPSBrowserLogger.LogDebug(loggingCategory, "InitSettings invoked");

            // get the list of certificates installed on SharePoint server to select one of them for token signing
            certs = certsHelper.getTokenSigningCertificates();

            if (userAccessLevel != UserAccessLevels.Admin)
            {
                SettingsTabButton.Visible = false;
                return(true);
            }

            List <IdentityProvider> identityProviders = identityProvidersHelper.getIdentityProviders();

            if (identityProviders == null || identityProviders.Count == 0)
            {
                UPSBrowserLogger.LogError(loggingCategory, "Cannot get the list of identity providers");
                return(false);
            }

            if (!IsPostBack)
            {
                IdentityProvidersDropDownList.Items.Add(new ListItem("Select Identity Provider", ""));
                foreach (IdentityProvider identityProvider in identityProviders)
                {
                    IdentityProvidersDropDownList.Items.Add(new ListItem(identityProvider.DisplayName, identityProvider.Name));
                }
                ;

                string identityProviderName;
                try
                {
                    identityProviderName = this.identityProviderName;
                }
                catch
                {
                    identityProviderName = "";
                };

                ListItem listItem = IdentityProvidersDropDownList.Items.FindByValue(identityProviderName);
                if (listItem != null)
                {
                    IdentityProvidersDropDownList.SelectedValue = listItem.Value;
                }
                else
                {
                    IdentityProvidersDropDownList.SelectedValue = "";
                };
            }
            ;

            certs = certsHelper.getTokenSigningCertificates();
            if (certs == null || certs.Count == 0)
            {
                UPSBrowserLogger.LogError(loggingCategory, "No suitable certificates found to sign tokens for the external web service authentication");
                return(false);
            }

            if (!IsPostBack)
            {
                TokenSigningCertificatesDropDownList.Items.Add(new ListItem("Select certificate to use for token signing", ""));
                foreach (TokenSigningCertificate cert in certs)
                {
                    TokenSigningCertificatesDropDownList.Items.Add(new ListItem(cert.friendlyName, cert.thumbprint));
                }
                ;

                string   certThumbprint = UPSBrowserSettings.getStringProperty(this.settings, "tokenSigningCertificateThumbprint");
                ListItem listItem       = TokenSigningCertificatesDropDownList.Items.FindByValue(certThumbprint);
                if (listItem != null)
                {
                    TokenSigningCertificatesDropDownList.SelectedValue = listItem.Value;
                }
                else
                {
                    TokenSigningCertificatesDropDownList.SelectedValue = "";
                };
            }
            ;

            if (!IsPostBack)
            {
                string wsBaseUrl = UPSBrowserSettings.getStringProperty(this.settings, "wsExternalUsersSourceUrl");
                WSExternalUsersSourceURLTextBox.Text = wsBaseUrl;
            }
            ;

            return(true); //Ok
        }
Exemplo n.º 6
0
        public DataTable GetFilteredExternalUsers()
        {
            UPSBrowserLogger.LogDebug(loggingCategory, "GetFilteredExternalUsers invoked");

            string searchString   = upsbrowser_import_users_searchtextbox.Text;
            string wsBaseUrl      = UPSBrowserSettings.getStringProperty(this.settings, "wsExternalUsersSourceUrl");
            string certThumbprint = UPSBrowserSettings.getStringProperty(this.settings, "tokenSigningCertificateThumbprint");

            UPSBrowserLogger.LogDebug(loggingCategory, $"searchString: {searchString}");
            UPSBrowserLogger.LogDebug(loggingCategory, $"wsBaseUrl: {wsBaseUrl}");
            UPSBrowserLogger.LogDebug(loggingCategory, $"certThumbprint: {certThumbprint}");

            UPSBrowserLogger.LogDebug(loggingCategory, $"certs == null: {certs == null}");
            TokenSigningCertificate cert = certs.FirstOrDefault(c => c.thumbprint == certThumbprint);

            UPSBrowserLogger.LogDebug(loggingCategory, $"cert == null: {cert == null}");

            if (
                string.IsNullOrEmpty(searchString)
                ||
                searchString.Length < Constants.searchStringMingLength
                ||
                string.IsNullOrEmpty(wsBaseUrl)
                ||
                cert == null
                )
            {
                UPSBrowserLogger.LogError(loggingCategory, $"Invalid searchString, wsBaseUrl or cert. Returning null.");
                return(null);
            }

            List <User> externalUsers = null;

            try
            {
                externalUsersSource.Init(wsBaseUrl, cert);
                externalUsers = externalUsersSource.getUsersBySearchString(searchString);
            }
            catch (Exception e)
            {
                DisplayCriticalError($"Error getting users from external source: {e.Message}", true);
                return(null);
            };

            if (externalUsers == null)
            {
                return(null);
            }
            ;

            DataTable dt = new DataTable();

            dt.Columns.Add("DisplayName");
            dt.Columns.Add("WorkEmail");
            dt.Columns.Add("JobTitle");
            dt.Columns.Add("Department");

            externalUsers.ForEach((externalUser) => {
                DataRow dr        = dt.NewRow();
                dr["DisplayName"] = externalUser.DisplayName;
                dr["WorkEmail"]   = externalUser.WorkEmail;
                dr["JobTitle"]    = externalUser.JobTitle;
                dr["Department"]  = externalUser.Department;
                dt.Rows.Add(dr);
            });

            return(dt);
        }