protected virtual SPAppPrincipal FindExistingAppPrincipal(WebModelHost webHost, AppPrincipalDefinition appPrincipalModel) { var appPrincipalManager = SPAppPrincipalManager.GetManager(webHost.HostWeb); var appPrincipalProvider = SPAppPrincipalIdentityProvider.External; var appPrincipalName = SPAppPrincipalName.CreateFromAppPrincipalIdentifier(appPrincipalModel.AppId); return(appPrincipalManager.LookupAppPrincipal(appPrincipalProvider, appPrincipalName)); }
private void DeployAppPrincipal(object modelHost, WebModelHost webHost, AppPrincipalDefinition appPrincipalModel) { var context = webHost.HostWeb.Context; var appPrincipalManager = AppPrincipalManager.GetManager(context, webHost.HostWeb); var principal = FindExistingAppPrincipal(webHost, appPrincipalModel); context.ExecuteQueryWithTrace(); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = principal, ObjectType = typeof(AppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); if (principal == null) { var endpoints = new List <string>(); endpoints.Add(appPrincipalModel.RedirectURI); var now = DateTime.Now; var credential = AppPrincipalCredential.CreateFromSymmetricKey(context, appPrincipalModel.AppSecret, now, now.AddYears(1)); var externalAppPrincipalCreationParameters = new ExternalAppPrincipalCreationParameters() { AppIdentifier = appPrincipalModel.AppId, DisplayName = appPrincipalModel.Title, Credential = credential, ApplicationEndpointAuthorities = endpoints }; principal = appPrincipalManager.CreateAppPrincipal(externalAppPrincipalCreationParameters); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = principal, ObjectType = typeof(AppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = principal, ObjectType = typeof(AppPrincipal), ObjectDefinition = appPrincipalModel, ModelHost = modelHost }); } }
protected virtual AppPrincipal FindExistingAppPrincipal(WebModelHost webHost, AppPrincipalDefinition appPrincipalModel) { var context = webHost.HostWeb.Context; //var context = webHost.HostclientContext; var appPrincipalManager = AppPrincipalManager.GetManager(context, webHost.HostWeb); var appPrincipalProvider = AppPrincipalIdentityProvider.GetExternal(context); var appPrincipalName = AppPrincipalName.CreateFromAppPrincipalIdentifier(context, appPrincipalModel.AppId); var result = appPrincipalManager.LookupAppPrincipal(appPrincipalProvider, appPrincipalName); context.Load(result); context.ExecuteQueryWithTrace(); return(result); }
public static ModelNode AddAppPrincipal(this ModelNode model, AppPrincipalDefinition definition, Action <ModelNode> action) { return(model.AddDefinitionNode(definition, action)); }
public static ModelNode AddAppPrincipal(this ModelNode model, AppPrincipalDefinition definition) { return(AddAppPrincipal(model, definition, null)); }
public static TModelNode AddAppPrincipal <TModelNode>(this TModelNode model, AppPrincipalDefinition definition, Action <AppPrincipalModelNode> action) where TModelNode : ModelNode, IWebHostModelNode, new() { return(model.AddTypedDefinitionNode(definition, action)); }
public static TModelNode AddAppPrincipal <TModelNode>(this TModelNode model, AppPrincipalDefinition definition) where TModelNode : ModelNode, IWebHostModelNode, new() { return(AddAppPrincipal(model, definition, null)); }
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 }); } }