public override void DeployModel(object modelHost, DefinitionBase model) { var definition = model.WithAssertAndCast <TrustedAccessProviderDefinition>("model", value => value.RequireNotNull()); SPTrustedAccessProvider spObject = GetCurrentTrustedAccessProvider(modelHost, definition); var assert = ServiceFactory.AssertService .NewAssert(definition, spObject) .ShouldNotBeNull(spObject); assert.ShouldBeEqual(m => m.Name, o => o.Name); if (!string.IsNullOrEmpty(definition.Description)) { assert.ShouldBeEqual(m => m.Description, o => o.Description); } else { assert.SkipProperty(m => m.Description); } if (!string.IsNullOrEmpty(definition.MetadataEndPoint)) { assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(def => def.MetadataEndPoint); var isValid = s.MetadataEndPoint.ToUpper() == d.MetadataEndPoint.ToString().ToUpper(); return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); } else { assert.SkipProperty(m => m.MetadataEndPoint); } assert.ShouldBeEqual((p, s, d) => { var srcProp = s.GetExpressionValue(def => def.Certificate); var isValid = new X509Certificate2(s.Certificate).Thumbprint == d.SigningCertificate.Thumbprint; return(new PropertyValidationResult { Tag = p.Tag, Src = srcProp, Dst = null, IsValid = isValid }); }); }
protected virtual SPTrustedAccessProvider GetCurrentTrustedAccessProvider(SPFarm spFarm, TrustedAccessProviderDefinition definition) { SPTrustedAccessProvider result = null; var securityTokenService = SPSecurityTokenServiceManager.Local; result = securityTokenService.TrustedAccessProviders .FirstOrDefault(p => !string.IsNullOrEmpty(p.Name) && (p.Name.ToUpper() == definition.Name.ToUpper())); return(result); }
private void DeployAftifact(FarmModelHost modelHost, SPFarm spFarm, TrustedAccessProviderDefinition definition) { var currentObject = GetCurrentTrustedAccessProvider(spFarm, definition); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentObject, ObjectType = typeof(SPTrustedAccessProvider), ObjectDefinition = definition, ModelHost = modelHost }); if (currentObject == null) { var securityTokenService = SPSecurityTokenServiceManager.Local; if (securityTokenService == null) { throw new SPMeta2Exception("SPSecurityTokenServiceManager.Local is NULL"); } if (definition != null && definition.Certificate.Count() > 0) { var certificate = new X509Certificate2(definition.Certificate); currentObject = new SPTrustedAccessProvider(securityTokenService, definition.Name, definition.Description ?? string.Empty, certificate); } else { currentObject = new SPTrustedAccessProvider(securityTokenService, definition.Name, definition.Description ?? string.Empty); } } #if !NET35 if (!string.IsNullOrEmpty(definition.MetadataEndPoint)) { if (currentObject.MetadataEndPoint != null) { if (currentObject.MetadataEndPoint.AbsoluteUri.ToUpper() != new Uri(definition.MetadataEndPoint).AbsoluteUri.ToUpper()) { currentObject.MetadataEndPoint = new Uri(definition.MetadataEndPoint); } } else { currentObject.MetadataEndPoint = new Uri(definition.MetadataEndPoint); } } #endif if (definition != null && definition.Certificate.Count() > 0) { var certificate = new X509Certificate2(definition.Certificate); if (currentObject.SigningCertificate.Thumbprint != certificate.Thumbprint) { currentObject.SigningCertificate = certificate; } } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentObject, ObjectType = typeof(SPTrustedAccessProvider), ObjectDefinition = definition, ModelHost = modelHost }); currentObject.Update(); }