static SPAppPrincipal AppRegister(string identifier, string title, string launchUrl, SPWeb web) { List<string> endpointAuthorities = new List<string>() { "http://" + new Uri(launchUrl).Host }; SecureString symmetricKey = GenerateSecret(32); SPAppPrincipalCredential credential = SPAppPrincipalCredential.CreateFromSymmetricKey(symmetricKey, DateTime.UtcNow, DateTime.UtcNow.AddYears(10)); SPExternalAppPrincipalCreationParameters creationParameters = new SPExternalAppPrincipalCreationParameters(identifier, title, endpointAuthorities, credential); return SPAppPrincipalManager.GetManager(web).CreateAppPrincipal(creationParameters); }
private void DeployAppPrincipal(object modelHost, WebModelHost webHost, AppPrincipalDefinition appPrincipalModel) { var appPrincipalManager = SPAppPrincipalManager.GetManager(webHost.HostWeb); var principal = FindExistingAppPrincipal(webHost, appPrincipalModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = principal, ObjectType = typeof(SPAppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); if (principal == null) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing app principal"); var endpoints = new List <string>(); endpoints.Add(appPrincipalModel.RedirectURI); var secureString = new SecureString(); for (int i = 0; i < appPrincipalModel.AppSecret.Length; i++) { char c = appPrincipalModel.AppSecret[i]; secureString.AppendChar(c); } secureString.MakeReadOnly(); var now = DateTime.Now; var credential = SPAppPrincipalCredential.CreateFromSymmetricKey(secureString, now, now.AddYears(1)); var externalAppPrincipalCreationParameters = new SPExternalAppPrincipalCreationParameters(appPrincipalModel.AppId, appPrincipalModel.Title, endpoints, credential) { SkipExternalDirectoryRegistration = false }; principal = appPrincipalManager.CreateAppPrincipal(externalAppPrincipalCreationParameters); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = principal, ObjectType = typeof(SPAppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing app principal"); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = principal, ObjectType = typeof(SPAppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); } }
private void DeployAppPrincipal(object modelHost, WebModelHost webHost, AppPrincipalDefinition appPrincipalModel) { var appPrincipalManager = SPAppPrincipalManager.GetManager(webHost.HostWeb); var principal = FindExistingAppPrincipal(webHost, appPrincipalModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = principal, ObjectType = typeof(SPAppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); if (principal == null) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing app principal"); var endpoints = new List<string>(); endpoints.Add(appPrincipalModel.RedirectURI); var secureString = new SecureString(); for (int i = 0; i < appPrincipalModel.AppSecret.Length; i++) { char c = appPrincipalModel.AppSecret[i]; secureString.AppendChar(c); } secureString.MakeReadOnly(); var now = DateTime.Now; var credential = SPAppPrincipalCredential.CreateFromSymmetricKey(secureString, now, now.AddYears(1)); var externalAppPrincipalCreationParameters = new SPExternalAppPrincipalCreationParameters(appPrincipalModel.AppId, appPrincipalModel.Title, endpoints, credential) { SkipExternalDirectoryRegistration = false }; principal = appPrincipalManager.CreateAppPrincipal(externalAppPrincipalCreationParameters); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = principal, ObjectType = typeof(SPAppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing app principal"); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = principal, ObjectType = typeof(SPAppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); } }