public async Task<IHttpActionResult> Create(string tenant, AADApplicationCreateModel model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            //var creds = new TokenCredentials(token.managementToken);
            //var subscriptionClient = new SubscriptionClient(creds);
            //subscriptionClient.SubscriptionId = Guid.Empty.ToString();
            //var tenants = await subscriptionClient.Tenants.ListAsync();
            //var subscriptions = await subscriptionClient.Subscriptions.ListAsync();

            //var client = new Microsoft.Azure.Graph.RBAC.GraphRbacManagementClient(new TokenCredentials(token.graphToken));
            //var subscriptionId = subscriptions.First().SubscriptionId;
            //client.SubscriptionId = subscriptionId;
            //client.TenantID = tenants.First().TenantId;

            //var httpclient = new HttpClient();

            //httpclient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token.graphToken);
            //httpclient.DefaultRequestHeaders.Add("Accept", "application/json");
            //var tenantdetails = await httpclient.GetStringAsync("https://graph.windows.net/" + client.TenantID + "/tenantDetails?api-version=1.6");

            //var res = await httpclient.GetStringAsync("https://graph.windows.net/sjkpdevs.onmicrosoft.com/applications?api-version=1.6"); //1.42-previewInternal

            var graphClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/"+tenant), () =>
            {
                return Task.FromResult(GetToken(Request));
            });

            try
            {
                await graphClient.Applications.AddApplicationAsync(new Microsoft.Azure.ActiveDirectory.GraphClient.Application()
                {
                    DisplayName = model.DisplayName,
                    IdentifierUris = model.IdentifierUris,
                    RequiredResourceAccess = model.RequiredResourceAccess,
                    //new[]
                    //{
                    //    new RequiredResourceAccess()
                    //    {
                    //        ResourceAppId = "797f4846-ba00-4fd7-ba43-dac1f8f63013",
                    //        ResourceAccess = new []
                    //        {
                    //            new ResourceAccess()
                    //            {
                    //                Id = new Guid("41094075-9dad-400e-a0bd-54e686782033"),
                    //                Type = "Scope"
                    //            }
                    //        }
                    //    }
                    //},
                    PasswordCredentials = {new Microsoft.Azure.ActiveDirectory.GraphClient.PasswordCredential()
                {
                    KeyId = Guid.NewGuid(),
                    Value = model.Password,
                    EndDate = DateTime.UtcNow.AddYears(2),
                    StartDate = DateTime.UtcNow,
                } },
                    Homepage = model.Homepage
                });
            }
            catch (Exception ex)
            {
                return InternalServerError(ex);
            }

            var appQuery = await graphClient.Applications.Where(s => s.DisplayName == model.DisplayName).ExecuteAsync();

            var app = appQuery.CurrentPage.First();


            try
            {
                await graphClient.ServicePrincipals.AddServicePrincipalAsync(new Microsoft.Azure.ActiveDirectory.GraphClient.ServicePrincipal()
                {
                    AppId = app.AppId,
                });
            } catch(Exception ex)
            {
                return InternalServerError(ex);
            }
           


            //var servicePrincipals = await graphClient.ServicePrincipals.ExecuteAsync();

            //var sp = servicePrincipals.CurrentPage.Where(s => s.AppDisplayName == "Test 12345");

            //var objectId = sp.First().ObjectId;

            //var resourceGroup = new ResourceManagementClient(creds);
            //resourceGroup.SubscriptionId = subscriptionId;
            //var resourceGroupList = resourceGroup.ResourceGroups.List();

            //var armClient = new AuthorizationManagementClient(creds);
            //armClient.SubscriptionId = subscriptionId;
            
            ////https://msdn.microsoft.com/en-us/library/azure/dn906887.aspx 
            //var rolesAssignments = armClient.RoleAssignments.ListForResourceGroup(resourceGroupList.First().Name);
            //var scope = string.Format("/subscriptions/{0}/resourceGroups/{1}", subscriptionId, resourceGroupList.First().Name);
            //var roleDefinitions = armClient.RoleDefinitions.List(scope);
            //armClient.RoleAssignments.Create(scope, Guid.NewGuid().ToString(), new RoleAssignmentProperties()
            //{
                
            //    PrincipalId = objectId,
            //    RoleDefinitionId = roleDefinitions.First().Id
            //});
          

            return Ok();
        }
Exemple #2
0
        public async Task <IHttpActionResult> Create(string tenant, AADApplicationCreateModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //var creds = new TokenCredentials(token.managementToken);
            //var subscriptionClient = new SubscriptionClient(creds);
            //subscriptionClient.SubscriptionId = Guid.Empty.ToString();
            //var tenants = await subscriptionClient.Tenants.ListAsync();
            //var subscriptions = await subscriptionClient.Subscriptions.ListAsync();

            //var client = new Microsoft.Azure.Graph.RBAC.GraphRbacManagementClient(new TokenCredentials(token.graphToken));
            //var subscriptionId = subscriptions.First().SubscriptionId;
            //client.SubscriptionId = subscriptionId;
            //client.TenantID = tenants.First().TenantId;

            //var httpclient = new HttpClient();

            //httpclient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token.graphToken);
            //httpclient.DefaultRequestHeaders.Add("Accept", "application/json");
            //var tenantdetails = await httpclient.GetStringAsync("https://graph.windows.net/" + client.TenantID + "/tenantDetails?api-version=1.6");

            //var res = await httpclient.GetStringAsync("https://graph.windows.net/sjkpdevs.onmicrosoft.com/applications?api-version=1.6"); //1.42-previewInternal

            var graphClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/" + tenant), () =>
            {
                return(Task.FromResult(GetToken(Request)));
            });

            try
            {
                await graphClient.Applications.AddApplicationAsync(new Microsoft.Azure.ActiveDirectory.GraphClient.Application()
                {
                    DisplayName            = model.DisplayName,
                    IdentifierUris         = model.IdentifierUris,
                    RequiredResourceAccess = model.RequiredResourceAccess,
                    //new[]
                    //{
                    //    new RequiredResourceAccess()
                    //    {
                    //        ResourceAppId = "797f4846-ba00-4fd7-ba43-dac1f8f63013",
                    //        ResourceAccess = new []
                    //        {
                    //            new ResourceAccess()
                    //            {
                    //                Id = new Guid("41094075-9dad-400e-a0bd-54e686782033"),
                    //                Type = "Scope"
                    //            }
                    //        }
                    //    }
                    //},
                    PasswordCredentials = { new Microsoft.Azure.ActiveDirectory.GraphClient.PasswordCredential()
                                            {
                                                KeyId     = Guid.NewGuid(),
                                                Value     = model.Password,
                                                EndDate   = DateTime.UtcNow.AddYears(2),
                                                StartDate = DateTime.UtcNow,
                                            } },
                    Homepage = model.Homepage
                });
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }

            var appQuery = await graphClient.Applications.Where(s => s.DisplayName == model.DisplayName).ExecuteAsync();

            var app = appQuery.CurrentPage.First();


            try
            {
                await graphClient.ServicePrincipals.AddServicePrincipalAsync(new Microsoft.Azure.ActiveDirectory.GraphClient.ServicePrincipal()
                {
                    AppId = app.AppId,
                });
            } catch (Exception ex)
            {
                return(InternalServerError(ex));
            }



            //var servicePrincipals = await graphClient.ServicePrincipals.ExecuteAsync();

            //var sp = servicePrincipals.CurrentPage.Where(s => s.AppDisplayName == "Test 12345");

            //var objectId = sp.First().ObjectId;

            //var resourceGroup = new ResourceManagementClient(creds);
            //resourceGroup.SubscriptionId = subscriptionId;
            //var resourceGroupList = resourceGroup.ResourceGroups.List();

            //var armClient = new AuthorizationManagementClient(creds);
            //armClient.SubscriptionId = subscriptionId;

            ////https://msdn.microsoft.com/en-us/library/azure/dn906887.aspx
            //var rolesAssignments = armClient.RoleAssignments.ListForResourceGroup(resourceGroupList.First().Name);
            //var scope = string.Format("/subscriptions/{0}/resourceGroups/{1}", subscriptionId, resourceGroupList.First().Name);
            //var roleDefinitions = armClient.RoleDefinitions.List(scope);
            //armClient.RoleAssignments.Create(scope, Guid.NewGuid().ToString(), new RoleAssignmentProperties()
            //{

            //    PrincipalId = objectId,
            //    RoleDefinitionId = roleDefinitions.First().Id
            //});


            return(Ok());
        }