private void ExecBaseFeatureActivated(Microsoft.SharePoint.SPFeatureReceiverProperties properties) { // Wrapper function for base FeatureActivated. // Used because base keywork can lead to unverifiable code inside lambda expression base.FeatureActivated(properties); SPSecurity.RunWithElevatedPrivileges(delegate() { try { ClaimsProviderLogging svc = ClaimsProviderLogging.Local; ClaimsProviderLogging.Log($"[{AzureCP._ProviderInternalName}] Activating farm-scoped feature for claims provider \"{AzureCP._ProviderInternalName}\"", TraceSeverity.High, EventSeverity.Information, ClaimsProviderLogging.TraceCategory.Configuration); AzureCPConfig existingConfig = AzureCPConfig.GetConfiguration(ClaimsProviderConstants.CONFIG_NAME); if (existingConfig == null) { AzureCPConfig.CreateDefaultConfiguration(); } else { ClaimsProviderLogging.Log($"[{AzureCP._ProviderInternalName}] Use configuration \"{ClaimsProviderConstants.CONFIG_NAME}\" found in the configuration database", TraceSeverity.High, EventSeverity.Information, ClaimsProviderLogging.TraceCategory.Configuration); } } catch (Exception ex) { ClaimsProviderLogging.LogException(AzureCP._ProviderInternalName, $"activating farm-scoped feature for claims provider \"{AzureCP._ProviderInternalName}\"", ClaimsProviderLogging.TraceCategory.Configuration, ex); } }); }
protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location); LblTitle.Text = String.Format("AzureCP v{0} - <a href=\"https://github.com/Yvand/AzureCP\" target=\"_blank\">GitHub.com/Yvand/AzureCP</a>", fvi.FileVersion); } // Get trust currently associated with AzureCP, if any CurrentTrustedLoginProvider = AzureCP.GetSPTrustAssociatedWithCP(AzureCP._ProviderInternalName); if (null == CurrentTrustedLoginProvider) { // Claim provider is currently not associated with any trust. // Display a message in the page and disable controls this.LabelErrorMessage.Text = TextErrorNoTrustAssociation; this.BtnOK.Enabled = this.BtnOKTop.Enabled = this.BtnAddLdapConnection.Enabled = this.BtnTestAzureTenantConnection.Enabled = false; this.AllowPersistedObjectUpdate = false; return; } SPSecurity.RunWithElevatedPrivileges(delegate() { // Get SPPersisted Object and create it if it doesn't exist PersistedObject = AzureCPConfig.GetFromConfigDB(); if (PersistedObject == null) { this.Web.AllowUnsafeUpdates = true; PersistedObject = AzureCPConfig.CreatePersistedObject(); this.Web.AllowUnsafeUpdates = false; } }); this.IdentityClaim = PersistedObject.AzureADObjects.Find(x => String.Equals(CurrentTrustedLoginProvider.IdentityClaimTypeInformation.MappedClaimType, x.ClaimType, StringComparison.InvariantCultureIgnoreCase) && !x.CreateAsIdentityClaim); if (null == this.IdentityClaim) { // Identity claim type is missing in the attributes list this.LabelErrorMessage.Text = String.Format(this.TextErrorNoIdentityClaimType, CurrentTrustedLoginProvider.DisplayName, CurrentTrustedLoginProvider.IdentityClaimTypeInformation.MappedClaimType); this.BtnOK.Enabled = this.BtnOKTop.Enabled = this.BtnAddLdapConnection.Enabled = this.BtnTestAzureTenantConnection.Enabled = false; return; } if (ViewState["PersistedObjectVersion"] == null) { ViewState.Add("PersistedObjectVersion", PersistedObject.Version); } if ((long)ViewState["PersistedObjectVersion"] != PersistedObject.Version) { // PersistedObject changed since last time. Should not allow any update this.LabelErrorMessage.Text = TextErrorPersistedObjectStale; this.AllowPersistedObjectUpdate = false; return; } if (!this.IsPostBack) { PopulateFields(); } }
public static void DeleteAzureCPConfig() { AzureCPConfig azureCPConfig = AzureCPConfig.GetFromConfigDB(); if (azureCPConfig != null) { azureCPConfig.Delete(); } }
private void RemovePersistedObject() { var PersistedObject = AzureCPConfig.GetFromConfigDB(); if (PersistedObject != null) { PersistedObject.Delete(); } }
public static AzureCPConfig ResetPersistedObject() { AzureCPConfig persistedObject = GetFromConfigDB(); if (persistedObject != null) { AzureCPConfig newPersistedObject = GetDefaultSettings(persistedObject); newPersistedObject.Update(); AzureCPLogging.Log( String.Format("Claims list of PersistedObject {0} was successfully reset to default relationship table", Constants.AZURECPCONFIG_NAME), TraceSeverity.High, EventSeverity.Information, AzureCPLogging.Categories.Core); } return(null); }
public static AzureCPConfig GetFromConfigDB() { SPPersistedObject parent = SPFarm.Local; try { AzureCPConfig persistedObject = parent.GetChild <AzureCPConfig>(Constants.AZURECPCONFIG_NAME); return(persistedObject); } catch (Exception ex) { AzureCPLogging.Log(String.Format("Error while retrieving SPPersistedObject {0}: {1}", Constants.AZURECPCONFIG_NAME, ex.Message), TraceSeverity.Unexpected, EventSeverity.Error, AzureCPLogging.Categories.Core); } return(null); }
public static void ResetClaimsList() { AzureCPConfig persistedObject = GetFromConfigDB(); if (persistedObject != null) { persistedObject.AzureADObjects.Clear(); persistedObject.AzureADObjects = GetDefaultAADClaimTypeList(); persistedObject.Update(); AzureCPLogging.Log( String.Format("Claims list of PersistedObject {0} was successfully reset to default relationship table", Constants.AZURECPCONFIG_NAME), TraceSeverity.High, EventSeverity.Information, AzureCPLogging.Categories.Core); } return; }
public override void FeatureUninstalling(SPFeatureReceiverProperties properties) { SPSecurity.RunWithElevatedPrivileges(delegate() { try { ClaimsProviderLogging.Log($"[{AzureCP._ProviderInternalName}] Uninstalling farm-scoped feature for claims provider \"{AzureCP._ProviderInternalName}\": Deleting configuration from the farm", TraceSeverity.High, EventSeverity.Information, ClaimsProviderLogging.TraceCategory.Configuration); AzureCPConfig.DeleteConfiguration(ClaimsProviderConstants.CONFIG_NAME); ClaimsProviderLogging.Unregister(); } catch (Exception ex) { ClaimsProviderLogging.LogException(AzureCP._ProviderInternalName, $"deactivating farm-scoped feature for claims provider \"{AzureCP._ProviderInternalName}\"", ClaimsProviderLogging.TraceCategory.Configuration, ex); } }); }
/// <summary> /// Create the persisted object that contains default configuration of AzureCP. /// It should be created only in central administration with application pool credentials /// because this is the only place where we are sure user has the permission to write in the config database /// </summary> public static AzureCPConfig CreatePersistedObject() { // Ensure it doesn't already exists and delete it if so AzureCPConfig existingConfig = AzureCPConfig.GetFromConfigDB(); if (existingConfig != null) { DeleteAzureCPConfig(); } AzureCPConfig PersistedObject = new AzureCPConfig(SPFarm.Local); PersistedObject.Id = new Guid(Constants.AZURECPCONFIG_ID); PersistedObject.AzureTenants = new List <AzureTenant>(); PersistedObject = GetDefaultSettings(PersistedObject); PersistedObject.Update(); AzureCPLogging.Log( String.Format("Created PersistedObject {0} with Id {1}", PersistedObject.Name, PersistedObject.Id), TraceSeverity.Medium, EventSeverity.Information, AzureCPLogging.Categories.Core); return(PersistedObject); }
protected void Page_Load(object sender, EventArgs e) { // Get trust currently associated with AzureCP, if any CurrentTrustedLoginProvider = AzureCP.GetSPTrustAssociatedWithCP(AzureCP._ProviderInternalName); if (null == CurrentTrustedLoginProvider) { // Claim provider is currently not associated with any trust. // Display a message in the page and disable controls this.LabelErrorMessage.Text = TextErrorNoTrustAssociation; this.HideAllContent = true; this.BtnCreateNewItem.Visible = false; return; } SPSecurity.RunWithElevatedPrivileges(delegate() { // Get SPPersisted Object and create it if it doesn't exist PersistedObject = AzureCPConfig.GetFromConfigDB(); if (PersistedObject == null) { this.Web.AllowUnsafeUpdates = true; PersistedObject = AzureCPConfig.CreatePersistedObject(); this.Web.AllowUnsafeUpdates = false; } }); if (ViewState["PersistedObjectVersion"] == null) ViewState.Add("PersistedObjectVersion", PersistedObject.Version); if ((long)ViewState["PersistedObjectVersion"] != PersistedObject.Version) { // PersistedObject changed since last time. Should not allow any update this.LabelErrorMessage.Text = TextErrorPersistedObjectStale; this.AllowPersistedObjectUpdate = false; return; } TrustName = CurrentTrustedLoginProvider.Name; if (!this.IsPostBack) { New_DdlPermissionMetadata.Items.Add(String.Empty); foreach (object field in typeof(PeopleEditorEntityDataKeys).GetFields()) { New_DdlPermissionMetadata.Items.Add(((System.Reflection.FieldInfo)field).Name); } New_DdlGraphProperty.Items.Add(String.Empty); New_DdlGraphPropertyToDisplay.Items.Add(String.Empty); foreach (object field in typeof(GraphProperty).GetFields()) { string prop = ((System.Reflection.FieldInfo)field).Name; if (AzureCP.GetGraphPropertyValue(new User(), prop) == null) continue; //if (AzureCP.GetGraphPropertyValue(new Group(), prop) == null) continue; //if (AzureCP.GetGraphPropertyValue(new Role(), prop) == null) continue; New_DdlGraphProperty.Items.Add(prop); New_DdlGraphPropertyToDisplay.Items.Add(prop); } } BuildAttributesListTable(this.IsPostBack); }
/// <summary> /// Create the persisted object that contains default configuration of AzureCP. /// It should be created only in central administration with application pool credentials /// because this is the only place where we are sure user has the permission to write in the config database /// </summary> public static AzureCPConfig CreatePersistedObject() { // Ensure it doesn't already exists and delete it if so AzureCPConfig existingConfig = AzureCPConfig.GetFromConfigDB(); if (existingConfig != null) { DeleteAzureCPConfig(); } AzureCPConfig PersistedObject = new AzureCPConfig(SPFarm.Local); PersistedObject.Id = new Guid(Constants.AZURECPCONFIG_ID); PersistedObject.AzureTenants = new List<AzureTenant>(); PersistedObject = GetDefaultSettings(PersistedObject); PersistedObject.Update(); AzureCPLogging.Log( String.Format("Created PersistedObject {0} with Id {1}", PersistedObject.Name, PersistedObject.Id), TraceSeverity.Medium, EventSeverity.Information, AzureCPLogging.Categories.Core); return PersistedObject; }
public static AzureCPConfig GetDefaultSettings(AzureCPConfig persistedObject) { persistedObject.AzureADObjects = GetDefaultAADClaimTypeList(); return persistedObject; }
protected void Page_Load(object sender, EventArgs e) { // Get trust currently associated with AzureCP, if any CurrentTrustedLoginProvider = AzureCP.GetSPTrustAssociatedWithCP(AzureCP._ProviderInternalName); if (null == CurrentTrustedLoginProvider) { // Claim provider is currently not associated with any trust. // Display a message in the page and disable controls this.LabelErrorMessage.Text = TextErrorNoTrustAssociation; this.HideAllContent = true; this.BtnCreateNewItem.Visible = false; return; } SPSecurity.RunWithElevatedPrivileges(delegate() { // Get SPPersisted Object and create it if it doesn't exist PersistedObject = AzureCPConfig.GetFromConfigDB(); if (PersistedObject == null) { this.Web.AllowUnsafeUpdates = true; PersistedObject = AzureCPConfig.CreatePersistedObject(); this.Web.AllowUnsafeUpdates = false; } }); if (ViewState["PersistedObjectVersion"] == null) { ViewState.Add("PersistedObjectVersion", PersistedObject.Version); } if ((long)ViewState["PersistedObjectVersion"] != PersistedObject.Version) { // PersistedObject changed since last time. Should not allow any update this.LabelErrorMessage.Text = TextErrorPersistedObjectStale; this.AllowPersistedObjectUpdate = false; return; } TrustName = CurrentTrustedLoginProvider.Name; if (!this.IsPostBack) { New_DdlPermissionMetadata.Items.Add(String.Empty); foreach (object field in typeof(PeopleEditorEntityDataKeys).GetFields()) { New_DdlPermissionMetadata.Items.Add(((System.Reflection.FieldInfo)field).Name); } New_DdlGraphProperty.Items.Add(String.Empty); New_DdlGraphPropertyToDisplay.Items.Add(String.Empty); foreach (object field in typeof(GraphProperty).GetFields()) { string prop = ((System.Reflection.FieldInfo)field).Name; if (AzureCP.GetGraphPropertyValue(new User(), prop) == null) { continue; } //if (AzureCP.GetGraphPropertyValue(new Group(), prop) == null) continue; //if (AzureCP.GetGraphPropertyValue(new Role(), prop) == null) continue; New_DdlGraphProperty.Items.Add(prop); New_DdlGraphPropertyToDisplay.Items.Add(prop); } } BuildAttributesListTable(this.IsPostBack); }
protected void BtnReset_Click(object sender, EventArgs e) { AzureCPConfig.ResetClaimsList(); Response.Redirect(Request.Url.ToString()); }
protected void BtnResetAzureCPConfig_Click(Object sender, EventArgs e) { AzureCPConfig.DeleteAzureCPConfig(); Response.Redirect(Request.RawUrl, false); }
protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location); LblTitle.Text = String.Format("AzureCP v{0} - <a href=\"https://github.com/Yvand/AzureCP\" target=\"_blank\">GitHub.com/Yvand/AzureCP</a>", fvi.FileVersion); } // Get trust currently associated with AzureCP, if any CurrentTrustedLoginProvider = AzureCP.GetSPTrustAssociatedWithCP(AzureCP._ProviderInternalName); if (null == CurrentTrustedLoginProvider) { // Claim provider is currently not associated with any trust. // Display a message in the page and disable controls this.LabelErrorMessage.Text = TextErrorNoTrustAssociation; this.BtnOK.Enabled = this.BtnOKTop.Enabled = this.BtnAddLdapConnection.Enabled = this.BtnTestAzureTenantConnection.Enabled = false; this.AllowPersistedObjectUpdate = false; return; } SPSecurity.RunWithElevatedPrivileges(delegate () { // Get SPPersisted Object and create it if it doesn't exist PersistedObject = AzureCPConfig.GetFromConfigDB(); if (PersistedObject == null) { this.Web.AllowUnsafeUpdates = true; PersistedObject = AzureCPConfig.CreatePersistedObject(); this.Web.AllowUnsafeUpdates = false; } }); this.IdentityClaim = PersistedObject.AzureADObjects.Find(x => String.Equals(CurrentTrustedLoginProvider.IdentityClaimTypeInformation.MappedClaimType, x.ClaimType, StringComparison.InvariantCultureIgnoreCase) && !x.CreateAsIdentityClaim); if (null == this.IdentityClaim) { // Identity claim type is missing in the attributes list this.LabelErrorMessage.Text = String.Format(this.TextErrorNoIdentityClaimType, CurrentTrustedLoginProvider.DisplayName, CurrentTrustedLoginProvider.IdentityClaimTypeInformation.MappedClaimType); this.BtnOK.Enabled = this.BtnOKTop.Enabled = this.BtnAddLdapConnection.Enabled = this.BtnTestAzureTenantConnection.Enabled = false; return; } if (ViewState["PersistedObjectVersion"] == null) ViewState.Add("PersistedObjectVersion", PersistedObject.Version); if ((long)ViewState["PersistedObjectVersion"] != PersistedObject.Version) { // PersistedObject changed since last time. Should not allow any update this.LabelErrorMessage.Text = TextErrorPersistedObjectStale; this.AllowPersistedObjectUpdate = false; return; } if (!this.IsPostBack) { PopulateFields(); } }
public static AzureCPConfig GetDefaultSettings(AzureCPConfig persistedObject) { persistedObject.AzureADObjects = GetDefaultAADClaimTypeList(); return(persistedObject); }