public async Task<IHttpActionResult> GetRolesByResGroupIDAsync(string resGroupID)
        {
            string groupName = resGroupID.Split(';')[0];
            string groupID = resGroupID.Split(';')[1];
            List<ResourcePageView> list = new List<ResourcePageView>();

            groupID = groupID.Replace("/", "&");

            //RetrieveRMResourcesByGroupID
            var operation = new TableDal(ConfigurationManager.AppSettings["storageConnection"], TableNames.RMResourceGroups);
            var result = operation.RetrieveRMGroup(groupName);
            foreach (RMResourceGroupEntiry resGroupEntiry in result)
            {
                operation = new TableDal(ConfigurationManager.AppSettings["storageConnection"], TableNames.RGRBACRoleAssignments);
                var RGBACRole_result = operation.RetrieveRGRBACRoleAssignmentByGroupID(groupID);
                foreach (RGRBACRoleAssignmentEntity entry in RGBACRole_result)
                {
                    var role_operation = new TableDal(ConfigurationManager.AppSettings["storageConnection"], TableNames.RBACRoles);
                    var role_result = role_operation.RetrieveRbacRoleByID(entry.RowKey);
                    RBACRoleEntity rbacRole = new RBACRoleEntity();
                    foreach(RBACRoleEntity _temp in role_result)
                    {
                        rbacRole = _temp;
                        break;
                    }
                    operation = new TableDal(ConfigurationManager.AppSettings["storageConnection"], TableNames.UserRBACRoleAssignments);
                    var userRBRole_result = operation.RetrieveUsersByRbacRoleId(entry.RowKey);
                    foreach (UserRBACRoleAssignmentEntity userRBACRoleAssignmentEntity in userRBRole_result)
                    {
                        ResourcePageView view = new ResourcePageView();
                        view.ResourceGroupName = resGroupEntiry.PartitionKey;
                        view.GroupID = resGroupEntiry.resourceGroupID;
                        view.UserID = "External AAD User";
                        view.UserPrincipleName = "External AAD User";
                        view.Location = resGroupEntiry.RowKey;
                        view.RoleName = rbacRole.RowKey;
                        view.RoleID = rbacRole.PartitionKey;
                        var user_operation= new TableDal(ConfigurationManager.AppSettings["storageConnection"],TableNames.AADUsers);
                        var user_result = user_operation.RetrieveUserByUserId(userRBACRoleAssignmentEntity.PartitionKey);
                        foreach(UserEntity userEntity in user_result)
                        {
                            view.UserID = userEntity.PartitionKey;
                            view.UserPrincipleName = userEntity.RowKey;
                            break;
                        }
                        list.Add(view);
                    }
                }
            }




            return CreateSuccessResult(list);
        }
Exemplo n.º 2
0
        static void RetrieveRBACRoles()
        {
            Console.WriteLine("Start to sync RBAC roles ...");
            string _subscriptionId = ConfigurationSettings.AppSettings["azureSubscriptionID"];
            var client = new HttpClient();
            var header = AuthenticationHelper.GetAuthorizationHeader();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", header);

            try
            {
                var myTask = client.GetStringAsync(
                    String.Format(
                        "https://management.chinacloudapi.cn/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions?api-version=2015-07-01&filter=atScopeAndBelow()",
                        _subscriptionId));
                var result = myTask.Result;

                JObject jObj = JObject.Parse(result);
                JToken jTk = jObj.GetValue("value").First;
                while (jTk != null)
                {
                    var rbacRole = new RBACRoleEntity(jTk["properties"]["roleName"].ToString(), jTk["name"].ToString());
                    rbacRole.RoleID = jTk["id"].ToString();
                    rbacRole.TypeProperty = jTk["properties"]["type"].ToString();
                    rbacRole.Description = jTk["properties"]["description"].ToString();
                    rbacRole.AssignableScopes = jTk["properties"]["assignableScopes"].ToString();
                    rbacRole.CreatedOn = jTk["properties"]["createdOn"].ToString();
                    rbacRole.UpdatedOn = jTk["properties"]["updatedOn"].ToString();
                    rbacRole.CreatedBy = jTk["properties"]["createdBy"].ToString();
                    rbacRole.UpdatedBy = jTk["properties"]["updatedBy"].ToString();
                    rbacRole.Type = jTk["type"].ToString();
                    rbacRole.Permissions = jTk["properties"]["permissions"].ToString();
                    rbacRoleTableOper.InsertEntity(rbacRole);

                    jTk = jTk.Next;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
Exemplo n.º 3
0
 public bool InsertEntity(RBACRoleEntity rbacRole)
 {
     var operation = TableOperation.InsertOrReplace(rbacRole);
     _table.Execute(operation);
     return true;
 }