internal ActiveDirectoryApplicationImpl(ApplicationInner innerObject, GraphRbacManager manager)
     : base(innerObject.DisplayName, innerObject)
 {
     this.manager          = manager;
     this.createParameters = new ApplicationCreateParameters
     {
         DisplayName = innerObject.DisplayName
     };
     this.updateParameters = new ApplicationUpdateParameters
     {
         DisplayName = innerObject.DisplayName
     };
 }
 public virtual Response <Application> Create(ApplicationCreateParameters parameters, CancellationToken cancellationToken = default)
 {
     using var scope = _clientDiagnostics.CreateScope("ApplicationsClient.Create");
     scope.Start();
     try
     {
         return(RestClient.Create(parameters, cancellationToken));
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }
 public virtual async Task <Response <Application> > CreateAsync(ApplicationCreateParameters parameters, CancellationToken cancellationToken = default)
 {
     using var scope = _clientDiagnostics.CreateScope("ApplicationsClient.Create");
     scope.Start();
     try
     {
         return(await RestClient.CreateAsync(parameters, cancellationToken).ConfigureAwait(false));
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }
        private Application CreateNewAdApp(ResourcesController controllerAdmin)
        {
            var appName  = TestUtilities.GenerateName("adApplication");
            var url      = string.Format("http://{0}/home", appName);
            var appParam = new ApplicationCreateParameters
            {
                AvailableToOtherTenants = false,
                DisplayName             = appName,
                Homepage       = url,
                IdentifierUris = new[] { url },
                ReplyUrls      = new[] { url }
            };

            return(controllerAdmin.GraphClient.Application.Create(appParam).Application);
        }
        public PSADApplication CreateApplication(CreatePSApplicationParameters createParameters)
        {
            IList <PasswordCredential> passwordCredentials = createParameters.PasswordCredentials != null
                ? createParameters.PasswordCredentials.Select(psCredential => psCredential.ToGraphPasswordCredential()).ToList()
                : null;

            IList <KeyCredential> keyCredentials = createParameters.KeyCredentials != null
                ? createParameters.KeyCredentials.Select(psCredential => psCredential.ToGraphKeyCredential()).ToList()
                : null;

            ApplicationCreateParameters graphParameters = new ApplicationCreateParameters
            {
                DisplayName         = createParameters.DisplayName,
                Homepage            = createParameters.HomePage,
                IdentifierUris      = createParameters.IdentifierUris,
                PasswordCredentials = passwordCredentials,
                KeyCredentials      = keyCredentials
            };

            return(GraphClient.Application.Create(graphParameters).Application.ToPSADApplication());
        }
        public PSADApplication CreateApplication(CreatePSApplicationParameters createParameters)
        {
            IList <PasswordCredential> passwordCredentials = createParameters.PasswordCredentials != null
                ? createParameters.PasswordCredentials.Select(psCredential => psCredential.ToGraphPasswordCredential()).ToList()
                : null;

            IList <KeyCredential> keyCredentials = createParameters.KeyCredentials != null
                ? createParameters.KeyCredentials.Select(psCredential => psCredential.ToGraphKeyCredential()).ToList()
                : null;

            ApplicationCreateParameters graphParameters = new ApplicationCreateParameters
            {
                DisplayName             = createParameters.DisplayName,
                Homepage                = createParameters.HomePage,
                IdentifierUris          = createParameters.IdentifierUris,
                ReplyUrls               = createParameters.ReplyUrls,
                AvailableToOtherTenants = createParameters.AvailableToOtherTenants,
                PasswordCredentials     = passwordCredentials,
                KeyCredentials          = keyCredentials
            };

            try
            {
                return(GraphClient.Applications.Create(graphParameters).ToPSADApplication());
            }
            catch (GraphErrorException ce)
            {
                if (ce.Response.StatusCode == HttpStatusCode.Forbidden)
                {
                    AADObject currentUser = GraphClient.Objects.GetCurrentUser();
                    if (currentUser != null && string.Equals(currentUser.UserType, "Guest", StringComparison.InvariantCultureIgnoreCase))
                    {
                        throw new InvalidOperationException(ProjectResources.CreateApplicationNotAllowedGuestUser);
                    }
                }

                throw;
            }
        }
Beispiel #7
0
        public Application CreateApplication(MockContext context, PasswordCredential passwordCredential = null, KeyCredential keyCredential = null)
        {
            var appName    = TestUtilities.GenerateName("adApplication");
            var url        = string.Format("http://{0}/home", appName);
            var parameters = new ApplicationCreateParameters();

            parameters.AvailableToOtherTenants = false;
            parameters.DisplayName             = appName;
            parameters.Homepage       = url;
            parameters.IdentifierUris = new[] { url };
            parameters.ReplyUrls      = new[] { url };

            if (passwordCredential != null)
            {
                parameters.PasswordCredentials = new PasswordCredential[] { passwordCredential };
            }

            if (keyCredential != null)
            {
                parameters.KeyCredentials = new KeyCredential[] { keyCredential };
            }

            return(GetGraphClient(context).Applications.Create(parameters));
        }
        public void UpdateApplication(String applicaitonObjectId, PasswordCredential passwordCredential = null, KeyCredential keyCredential = null)
        {
            var appName    = TestUtilities.GenerateName("adApplication");
            var url        = string.Format("http://{0}/home", appName);
            var parameters = new ApplicationCreateParameters();

            parameters.AvailableToOtherTenants = false;
            parameters.DisplayName             = appName;
            parameters.Homepage       = url;
            parameters.IdentifierUris = new[] { url };
            parameters.ReplyUrls      = new[] { url };

            if (passwordCredential != null)
            {
                parameters.PasswordCredentials = new PasswordCredential[] { passwordCredential };
            }

            if (keyCredential != null)
            {
                parameters.KeyCredentials = new KeyCredential[] { keyCredential };
            }

            GraphClient.Application.Update(applicaitonObjectId, parameters);
        }
Beispiel #9
0
 /// <summary>
 /// Create a new application.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='parameters'>
 /// The parameters for creating an application.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <ApplicationInner> CreateAsync(this IApplicationsOperations operations, ApplicationCreateParameters parameters, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CreateWithHttpMessagesAsync(parameters, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// Create a new application.  (see
 /// http://msdn.microsoft.com/en-us/library/azure/hh974476.aspx for
 /// more information)
 /// </summary>
 /// <param name='operations'>
 /// Reference to the Microsoft.Azure.Graph.RBAC.IApplicationOperations.
 /// </param>
 /// <param name='parameters'>
 /// Required. Parameters to create an application.
 /// </param>
 /// <returns>
 /// Server response for Get application information API call
 /// </returns>
 public static Task <ApplicationGetResult> CreateAsync(this IApplicationOperations operations, ApplicationCreateParameters parameters)
 {
     return(operations.CreateAsync(parameters, CancellationToken.None));
 }
 /// <summary>
 /// Create a new application.  (see
 /// http://msdn.microsoft.com/en-us/library/azure/hh974476.aspx for
 /// more information)
 /// </summary>
 /// <param name='operations'>
 /// Reference to the Microsoft.Azure.Graph.RBAC.IApplicationOperations.
 /// </param>
 /// <param name='parameters'>
 /// Required. Parameters to create an application.
 /// </param>
 /// <returns>
 /// Server response for Get application information API call
 /// </returns>
 public static ApplicationGetResult Create(this IApplicationOperations operations, ApplicationCreateParameters parameters)
 {
     return(Task.Factory.StartNew((object s) =>
     {
         return ((IApplicationOperations)s).CreateAsync(parameters);
     }
                                  , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult());
 }
 /// <summary>
 /// Update existing application.  (see
 /// http://msdn.microsoft.com/en-us/library/azure/hh974476.aspx for
 /// more information)
 /// </summary>
 /// <param name='operations'>
 /// Reference to the Microsoft.Azure.Graph.RBAC.IApplicationOperations.
 /// </param>
 /// <param name='applicationObjectId'>
 /// Required. Application object id
 /// </param>
 /// <param name='parameters'>
 /// Required. Parameters to create an application.
 /// </param>
 /// <returns>
 /// A standard service response including an HTTP status code and
 /// request ID.
 /// </returns>
 public static Task <AzureOperationResponse> UpdateAsync(this IApplicationOperations operations, string applicationObjectId, ApplicationCreateParameters parameters)
 {
     return(operations.UpdateAsync(applicationObjectId, parameters, CancellationToken.None));
 }
Beispiel #13
0
 /// <summary>
 /// Create a new application.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='parameters'>
 /// The parameters for creating an application.
 /// </param>
 public static Application Create(this IApplicationsOperations operations, ApplicationCreateParameters parameters)
 {
     return(operations.CreateAsync(parameters).GetAwaiter().GetResult());
 }
        public async Task <AzureServicePrincipal> CreateServicePrincipalAsync(string name, string password = null)
        {
            if (name is null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            name = SanitizeServicePrincipalName(name);

            using var client = azureSessionService
                               .CreateClient <GraphRbacManagementClient>(AzureEndpoint.GraphEndpoint);

            password ??= CreateServicePrincipalPassword();

            var expiresOn = DateTime.UtcNow.AddYears(1);

            var parameters = new ApplicationCreateParameters()
            {
                DisplayName             = name,
                AvailableToOtherTenants = false,
                IdentifierUris          = new List <string> {
                    $"http://{name}"
                },
                RequiredResourceAccess = new List <RequiredResourceAccess> {
                    new RequiredResourceAccess {
                        ResourceAppId  = "00000003-0000-0000-c000-000000000000",
                        ResourceAccess = new List <ResourceAccess> {
                            new ResourceAccess {
                                Id   = "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
                                Type = "Scope"
                            }
                        }
                    }
                }
            };

            var application = await client.Applications
                              .CreateAsync(parameters)
                              .ConfigureAwait(false);

            var principal = await client.ServicePrincipals
                            .CreateAsync(new ServicePrincipalCreateParameters { AppId = application.AppId })
                            .ConfigureAwait(false);

            await client.Applications
            .UpdatePasswordCredentialsAsync(application.ObjectId, new List <PasswordCredential> {
                new PasswordCredential {
                    StartDate           = DateTime.UtcNow,
                    EndDate             = expiresOn,
                    KeyId               = Guid.NewGuid().ToString(),
                    Value               = password,
                    CustomKeyIdentifier = Guid.Parse(principal.ObjectId).ToByteArray()
                }
            }).ConfigureAwait(false);

            var azureServicePrincipal = new AzureServicePrincipal()
            {
                ObjectId      = Guid.Parse(principal.ObjectId),
                ApplicationId = Guid.Parse(principal.AppId),
                Name          = principal.ServicePrincipalNames.FirstOrDefault(),
                Password      = password,
                ExpiresOn     = expiresOn
            };

            return(azureServicePrincipal);
        }