private string DeleteUser() { var boxConfig = new BoxConfig(ClientId, ClientSecret, EntrepriseId, PrivateKey, Passphrase, JwtPublicKey); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(UserId); var client = boxJWT.AdminClient(adminToken); var usersRes = client.UsersManager.GetEnterpriseUsersAsync(); usersRes.Wait(); foreach (var user in usersRes.Result.Entries) { if (user.Login == UserIdToDelete) { var delUserRes = client.UsersManager.DeleteEnterpriseUserAsync(user.Id, false, false); delUserRes.Wait(); return("Success"); } } return("User Not Found"); }
private string DeleteGroup() { var boxConfig = new BoxConfig(ClientId, ClientSecret, EntrepriseId, PrivateKey, Passphrase, JwtPublicKey); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(UserId); var client = boxJWT.AdminClient(adminToken); var groupId = GetGroupIdByGroupName(client, GroupName); if (groupId == null) { return("Group not found."); } var res = client.GroupsManager.DeleteAsync(groupId); res.Wait(); if (res.Exception != null) { return(res.Exception.Message); } return("Success"); }
private async Task ExecuteMainAsync() { var config = ConfigureBoxApi(); var session = new BoxJWTAuth(config); // client with permissions to manage application users var adminToken = session.AdminToken(); var client = session.AdminClient(adminToken); var user = await CreateNewUser(client); Console.WriteLine("New app user created with Id = {0}", user.Id); // user client with access to user's data (folders, files, etc) var userToken = session.UserToken(user.Id); var userClient = session.UserClient(userToken, user.Id); // root folder has id = 0 var newFolder = await CreateNewFolder(userClient); Console.WriteLine("New folder created with Id = {0}", newFolder.Id); var timer = Stopwatch.StartNew(); var file = File.OpenRead("box_logo.png"); var uploaded = await UploadFile(newFolder, userClient, file); Console.WriteLine("New file uploaded with Id = {0} in {1} ms", uploaded.Id, timer.ElapsedMilliseconds); }
public static void Initialize(TestContext testContext) { jsonConfig = Environment.GetEnvironmentVariable("JSON_CONFIG"); if (string.IsNullOrEmpty(jsonConfig)) { Debug.WriteLine("No json config found!"); } else { Debug.WriteLine("json config content length : " + jsonConfig.Length); var config = BoxConfig.CreateFromJsonString(jsonConfig); var session = new BoxJWTAuth(config); // create a new app user // client with permissions to manage application users var adminToken = session.AdminToken(); adminClient = session.AdminClient(adminToken); var user = CreateNewUser(adminClient).Result; userId = user.Id; Debug.WriteLine("New app user created : " + userId); // user client with access to user's data (folders, files, etc) userToken = session.UserToken(userId); userClient = session.UserClient(userToken, userId); } }
public static async Task AssemblyInitialize(TestContext testContext) { var jsonConfig = Environment.GetEnvironmentVariable("INTEGRATION_TESTING_CONFIG"); if (string.IsNullOrEmpty(jsonConfig)) { Debug.WriteLine("No json config found in environment variables Reading from config.json."); jsonConfig = ReadFromJson("config.json"); } var config = BoxConfigBuilder.CreateFromJsonString(jsonConfig) .Build(); var session = new BoxJWTAuth(config); var json = JObject.Parse(jsonConfig); var adminToken = await session.AdminTokenAsync(); AdminClient = session.AdminClient(adminToken); if (json["userID"] != null && json["userID"].ToString().Length != 0) { UserId = json["userID"].ToString(); } else { var user = await CreateNewUser(AdminClient); UserId = user.Id; } var userToken = await session.UserTokenAsync(UserId); UserClient = session.UserClient(userToken, UserId); EnterpriseId = config.EnterpriseId; }
private string AddUser() { var boxConfig = new BoxConfig(ClientId, ClientSecret, EntrepriseId, PrivateKey, Passphrase, JwtPublicKey); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(UserId); var client = boxJWT.AdminClient(adminToken); var userRes = client.UsersManager.CreateEnterpriseUserAsync(new BoxUserRequest() { Name = UserName, Login = Login }); userRes.Wait(); if (userRes.Exception != null) { return(userRes.Exception.Message); } return("Success"); }
public async Task <ICustomActivityResult> Execute() { var Message = string.Empty; var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, PRIVATE_KEY, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(USER_ID); var adminClient = boxJWT.AdminClient(adminToken); using (FileStream fileStream = new FileStream(FilePath, FileMode.Open)) { BoxFileRequest requestParams = new BoxFileRequest() { Name = NameFile, Parent = new BoxRequestEntity() { Id = FolderID } }; BoxFile file = await adminClient.FilesManager.UploadAsync(requestParams, fileStream); Message = file.Id; } return(this.GenerateActivityResult(Message)); }
public void retriesWithNewJWTAssertionOnErrorResponseAndSucceeds() { var config = new BoxConfig(ClientId, ClientSecret, EnterpriseId, privateKey, passphrase, publicKeyID); var session = new BoxJWTAuth(config); var adminToken = session.AdminToken(); adminClient = session.AdminClient(adminToken); }
public BoxPlatformService(IOptions <BoxPlatformServiceOptions> boxOptions, IDistributedCache distributedCache, ILogger <BoxPlatformService> logger) { _boxOptions = boxOptions; _distributedCache = distributedCache; _logger = logger; _boxConfig = BoxConfig.CreateFromJsonString(_boxOptions.Value.BoxConfig); _boxJWTAuth = new BoxJWTAuth(_boxConfig); }
public BoxJWTAuthTest() { // Initial Setup _handler = new Mock <IRequestHandler>(); _service = new BoxService(_handler.Object); _boxConfig = new Mock <IBoxConfig>(); _boxConfig.SetupGet(x => x.EnterpriseId).Returns("12345"); _jwtAuth = new BoxJWTAuth(_boxConfig.Object, _service); }
public Box(string userId, TraceWriter log) { traceWriter = log; var boxJwt = new BoxJWTAuth(ConfigureBoxApi()); var userToken = boxJwt.UserToken(userId); //valid for 60 minutes so should be cached and re-used userClient = boxJwt.UserClient(userToken, userId); }
static async Task MainAsync() { // rename the private_key.pem.example to private_key.pem and put your JWT private key in the file var privateKey = File.ReadAllText("private_key.pem"); var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, privateKey, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); // Proxy configuration - set isProxyEnabled = true if using Fiddler!! if (isProxyEnabled != false) { System.Net.WebProxy webProxy = new System.Net.WebProxy("http://127.0.0.1:8888"); NetworkCredential credential = new NetworkCredential("testUser", "testPass"); webProxy.Credentials = credential; boxConfig.WebProxy = webProxy; } var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.AdminToken(); Console.WriteLine("Admin Token: " + adminToken); Console.WriteLine(); var adminClient = boxJWT.AdminClient(adminToken); var adminFunc = new Func(adminClient); adminFunc.GetFolderItems(); var userId = "3768478578"; var userToken = boxJWT.UserToken(userId); // valid for 60 minutes so should be cached and re-used BoxClient userClient = boxJWT.UserClient(userToken, userId); var userFunc = new Func(userClient); userFunc.GetFolderItems(); // Stream fileContents = await userClient.FilesManager.DownloadStreamAsync(id: "675996854920"); // Download the file 675996854920 // var userRequest = new BoxUserRequest() { Name = "test appuser", IsPlatformAccessOnly = true }; // var appUser = await adminClient.UsersManager.CreateEnterpriseUserAsync(userRequest); // Console.WriteLine("Created App User"); // var userToken = boxJWT.UserToken(appUser.Id); // var userClient = boxJWT.UserClient(userToken, appUser.Id); // var userDetails = await userClient.UsersManager.GetCurrentUserInformationAsync(); // Console.WriteLine("\nApp User Details:"); // Console.WriteLine("\tId: {0}", userDetails.Id); // Console.WriteLine("\tName: {0}", userDetails.Name); // Console.WriteLine("\tStatus: {0}", userDetails.Status); // Console.WriteLine(); // await adminClient.UsersManager.DeleteEnterpriseUserAsync(appUser.Id, false, true); // Console.WriteLine("Deleted App User"); }
private static async Task MainAsync() { // rename the private_key.pem.example to private_key.pem and put your JWT private key in the file var privateKey = File.ReadAllText("private_key.pem.example"); var boxConfig = new BoxConfigBuilder(_clientId, _clientSecret, _enterpriseId, privateKey, _jwtPrivateKeyPassword, _jwtPublicKeyId) .Build(); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = await boxJWT.AdminTokenAsync(); Console.WriteLine("Admin Token: " + adminToken); Console.WriteLine(); var adminClient = boxJWT.AdminClient(adminToken); Console.WriteLine("Admin root folder items"); var items = await adminClient.FoldersManager.GetFolderItemsAsync("0", 500); items.Entries.ForEach(i => { Console.WriteLine("\t{0}", i.Name); //if (i.Type == "file") //{ // var previewLink = adminClient.FilesManager.GetPreviewLinkAsync(i.Id).Result; // Console.WriteLine("\tPreview Link: {0}", previewLink.ToString()); // Console.WriteLine(); //} }); Console.WriteLine(); var userRequest = new BoxUserRequest() { Name = "test appuser", IsPlatformAccessOnly = true }; var appUser = await adminClient.UsersManager.CreateEnterpriseUserAsync(userRequest); Console.WriteLine("Created App User"); var userToken = await boxJWT.UserTokenAsync(appUser.Id); var userClient = boxJWT.UserClient(userToken, appUser.Id); var userDetails = await userClient.UsersManager.GetCurrentUserInformationAsync(); Console.WriteLine("\nApp User Details:"); Console.WriteLine("\tId: {0}", userDetails.Id); Console.WriteLine("\tName: {0}", userDetails.Name); Console.WriteLine("\tStatus: {0}", userDetails.Status); Console.WriteLine(); await adminClient.UsersManager.DeleteEnterpriseUserAsync(appUser.Id, false, true); Console.WriteLine("Deleted App User"); }
private static BoxJWTAuth GetBoxSession(IConfigurationRoot config) { IBoxConfig boxConfig = null; var configJson = config[BOX_CONFIG_KEY]; boxConfig = BoxConfig.CreateFromJsonString(configJson); var session = new BoxJWTAuth(boxConfig); return(session); }
static async Task MainAsync() { var privateKey = File.ReadAllText("private_key.pem"); var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, privateKey, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.AdminToken(); Console.WriteLine("Admin Token: " + adminToken); Console.WriteLine(); var adminClient = boxJWT.AdminClient(adminToken); Console.WriteLine("Admin root folder items"); var items = await adminClient.FoldersManager.GetFolderItemsAsync("0", 500); items.Entries.ForEach(i => { Console.WriteLine("\t{0}", i.Name); //if (i.Type == "file") //{ // var preview_link = adminClient.FilesManager.GetPreviewLinkAsync(i.Id).Result; // Console.WriteLine("\tPreview Link: {0}", preview_link.ToString()); // Console.WriteLine(); //} }); Console.WriteLine(); var userRequest = new BoxUserRequest() { Name = "test appuser", IsPlatformAccessOnly = true }; var appUser = await adminClient.UsersManager.CreateEnterpriseUserAsync(userRequest); Console.WriteLine("Created App User"); var userToken = boxJWT.UserToken(appUser.Id); var userClient = boxJWT.UserClient(userToken, appUser.Id); var userDetails = await userClient.UsersManager.GetCurrentUserInformationAsync(); Console.WriteLine("\nApp User Details:"); Console.WriteLine("\tId: {0}", userDetails.Id); Console.WriteLine("\tName: {0}", userDetails.Name); Console.WriteLine("\tStatus: {0}", userDetails.Status); Console.WriteLine(); await adminClient.UsersManager.DeleteEnterpriseUserAsync(appUser.Id, false, true); Console.WriteLine("Deleted App User"); }
private static void Main() { var boxConfig = BoxConfigBuilder.CreateFromJsonString(GetConfigJson()) // Set web proxy .SetWebProxy(new BoxHttpProxy()) .Build(); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.AdminTokenAsync().Result; var adminClient = boxJWT.AdminClient(adminToken); _ = adminClient.FoldersManager.GetFolderItemsAsync("0", 500).Result; }
public async Task <ICustomActivityResult> Execute() { var Message = string.Empty; var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, PRIVATE_KEY, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(USER_ID); var adminClient = boxJWT.AdminClient(adminToken); await adminClient.FilesManager.DeleteAsync(id : FileID); Message = "Success"; return(this.GenerateActivityResult(Message)); }
static void Main(string[] args) { var boxConfig = BoxConfig.CreateFromJsonString(GetConfigJson()); // Set web proxy boxConfig.WebProxy = new BoxHttpProxy(); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.AdminToken(); var adminClient = boxJWT.AdminClient(adminToken); var items = adminClient.FoldersManager.GetFolderItemsAsync("0", 500).Result; }
static void Main(string[] args) { var appConfig = new ConfigurationBuilder().AddUserSecrets <Program>().Build(); var configJson = appConfig["BoxConfigJson"]; Console.WriteLine($"Creating a Box Admin Client"); var config = BoxConfig.CreateFromJsonString(configJson); var auth = new BoxJWTAuth(config); var adminToken = auth.AdminToken(); var boxClient = auth.AdminClient(adminToken); Console.WriteLine($"Created a Box Admin Client"); GetUser(config, boxClient); }
public static async Task FindAppUsersAsync() { Console.WriteLine("FindAppUsersAsync Start"); // BOX API実行用のClientを準備 var config = Program.ConfigureBoxApi(); var boxJwt = new BoxJWTAuth(config); var adminToken = boxJwt.AdminToken(); var saClient = boxJwt.AdminClient(adminToken); // サービスアカウントが取れているかチェック var sa = await saClient.UsersManager.GetCurrentUserInformationAsync(); Console.WriteLine("SA user ID:{0}, Login:{1}, Name:{2}", sa.Id, sa.Login, sa.Name); // 非同期処理の同時実行数を制限 var throttling = new SemaphoreSlim(Config.ApiRateLimit); var users = await saClient.UsersManager.GetEnterpriseUsersAsync(limit : 1000); var appUserList = new List <string>(); var listSize = users.Entries.Count; for (int i = 0; i < listSize; i++) { Console.Write("user {0}/{1}", i, listSize); Console.SetCursorPosition(0, Console.CursorTop); var user = users.Entries[i]; if (user.Name.StartsWith("ST_APP_USER_") && user.Login.StartsWith("AppUser_")) { if (user.Name == "ST_APP_USER_SEARCH") { Console.WriteLine("Search appUser ID: {0} ", user.Id); } appUserList.Add(user.Id); } } Console.WriteLine($"Found AppUser {appUserList.Count}"); // ファイルに書き出す await File.WriteAllTextAsync(PathToAppUserIDsForTest, JsonSerializer.Serialize(appUserList)); Console.WriteLine("FindAppUsersAsync Done"); }
//ToDo: change to accept the token or userId as parameter based on the windows authenticated user making the call private void CreateBoxClient() { IBoxConfig config = null; using (FileStream fs = new FileStream("CONFIG.JSON", FileMode.Open)) { config = BoxConfig.CreateFromJsonFile(fs); } var userId = "3420422604"; var session = new BoxJWTAuth(config); var userToken = session.UserToken(userId); boxClient = session.UserClient(userToken, userId); }
private string AddUserToGroup() { var boxConfig = new BoxConfig(ClientId, ClientSecret, EntrepriseId, PrivateKey, Passphrase, JwtPublicKey); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(UserId); var client = boxJWT.AdminClient(adminToken); var groupId = GetGroupIdByGroupName(client, GroupName); if (groupId == null) { return("Group not found."); } var usersRes = client.UsersManager.GetEnterpriseUsersAsync(); usersRes.Wait(); foreach (var user in usersRes.Result.Entries) { if (user.Login == UserIdToBeAdded) { var memberResult = client.GroupsManager.AddMemberToGroupAsync(new BoxGroupMembershipRequest { User = new BoxRequestEntity { Id = user.Id }, Group = new BoxGroupRequest { Id = groupId } }); memberResult.Wait(); memberResult.Wait(); if (memberResult.Exception != null) { return(memberResult.Exception.Message); } return("Success"); } } return("User Not Found"); }
static async Task MainAsync() { string CLIENT_ID = Configuration["Config:ClientID"]; string CLIENT_SECRET = Configuration["Config:ClientSecret"]; string ENTERPRISE_ID = Configuration["Config:EnterpriseID"]; string JWT_PRIVATE_KEY_PATH = Configuration["Config:PrivateKeyPath"]; string JWT_PRIVATE_KEY_PASSWORD = Configuration["Config:PrivateKeyPass"]; string JWT_PUBLIC_KEY_ID = Configuration["Config:PublicKeyID"]; var privateKey = File.ReadAllText(JWT_PRIVATE_KEY_PATH); var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, privateKey, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.AdminToken(); Console.WriteLine("Admin Token: " + adminToken); var adminClient = boxJWT.AdminClient(adminToken); var userRequest = new BoxUserRequest { Name = "John Smith", IsPlatformAccessOnly = true }; var user = await adminClient.UsersManager.CreateEnterpriseUserAsync(userRequest); Console.Write("New app user created with Id = {0}", user.Id); /*BoxFile newFile; * * // Create request object with name and parent folder the file should be uploaded to * using (FileStream stream = new FileStream(@"/Users/jleblanc/localhost/box/net-jwt/tax.txt", FileMode.Open)) * { * BoxFileRequest req = new BoxFileRequest() * { * Name = "tax.txt", * Parent = new BoxRequestEntity() { Id = "0" } * }; * newFile = await adminClient.FilesManager.UploadAsync(req, stream); * }*/ }
static async Task validateUser(string name, string sub) { // Configure Box SDK instance var reader = new StreamReader("config.json"); var json = reader.ReadToEnd(); var config = BoxConfig.CreateFromJsonString(json); var sdk = new BoxJWTAuth(config); var token = sdk.AdminToken(); BoxClient client = sdk.AdminClient(token); // Search for matching Box app user for Okta ID BoxCollection <BoxUser> users = await client.UsersManager.GetEnterpriseUsersAsync(externalAppUserId : sub); System.Diagnostics.Debug.WriteLine(users.TotalCount); if (users.TotalCount > 0) { // Box user found, get token var userId = users.Entries[0].Id; var userToken = sdk.UserToken(userId); BoxClient userClient = sdk.UserClient(userToken, userId); // Get current user BoxUser currentUser = await userClient.UsersManager.GetCurrentUserInformationAsync(); System.Diagnostics.Debug.WriteLine("Current user name: " + currentUser.Name); } else { // No associated user found, create app user var userRequest = new BoxUserRequest() { Name = name, ExternalAppUserId = sub, IsPlatformAccessOnly = true }; var user = await client.UsersManager.CreateEnterpriseUserAsync(userRequest); System.Diagnostics.Debug.WriteLine("New user created: " + user.Name); } }
/// <summary> /// Get an authenticated client for the JWT app service account. /// </summary> /// <param name="pathToConfigJson">The path to the JWT app configuration JSON file.</param> /// <returns>An authenticated Box client</returns> private static BoxClient GetAuthenticatedClient(string pathToConfigJson) { if (string.IsNullOrWhiteSpace(pathToConfigJson) || !File.Exists(pathToConfigJson)) { throw new Exception("Please set 'pathToConfigJson' with the path to your JWT app config JSON file."); } // Read the configuration from the file. IBoxConfig config; using (var configStream = File.OpenRead(pathToConfigJson)) config = BoxConfig.CreateFromJsonFile(configStream); Console.Out.WriteLine("Authenticating..."); // Create a Box client and authenticate as the service account var boxJwtAuth = new BoxJWTAuth(config); var adminToken = boxJwtAuth.AdminToken(); return(boxJwtAuth.AdminClient(adminToken)); }
public async Task <ICustomActivityResult> Execute() { var Message = string.Empty; var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, PRIVATE_KEY, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(USER_ID); var adminClient = boxJWT.AdminClient(adminToken); var requestParams = new BoxFileRequest() { Id = FileID, Parent = new BoxRequestEntity() { Id = FolderID }, Name = Name }; BoxFile fileCopy = await adminClient.FilesManager.CopyAsync(requestParams); Message = "Success"; return(this.GenerateActivityResult(Message)); }
public async Task <ICustomActivityResult> Execute() { var Message = string.Empty; var boxConfig = new BoxConfig(CLIENT_ID, CLIENT_SECRET, ENTERPRISE_ID, PRIVATE_KEY, JWT_PRIVATE_KEY_PASSWORD, JWT_PUBLIC_KEY_ID); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(USER_ID); var adminClient = boxJWT.AdminClient(adminToken); Stream fileContents = await adminClient.FilesManager.DownloadAsync(FileID); using (Stream file = File.Create(FilePath)) { byte[] buffer = new byte[8 * 1024]; int len; while ((len = fileContents.Read(buffer, 0, buffer.Length)) > 0) { file.Write(buffer, 0, len); } } Message = "Success"; return(this.GenerateActivityResult(Message)); }
private string AddGroup() { var boxConfig = new BoxConfig(ClientId, ClientSecret, EntrepriseId, PrivateKey, Passphrase, JwtPublicKey); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(UserId); var client = boxJWT.AdminClient(adminToken); var res = client.GroupsManager.CreateAsync(new BoxGroupRequest() { Name = GroupName }); res.Wait(); if (res.Exception != null) { return(res.Exception.Message); } return("Success"); }
public string GetAccessToken() { ReturnUpload returnUpload = new ReturnUpload(); string configFileName = System.Web.Hosting.HostingEnvironment.MapPath("~/Models/Clientconfiguration.json"); StreamReader reader = new StreamReader(configFileName); string json = reader.ReadToEnd(); Config config = JsonConvert.DeserializeObject <Config>(json); BoxConfig boxConfig = new BoxConfig(config.boxAppSettings.clientID, config.boxAppSettings.clientSecret, config.enterpriseID, config.boxAppSettings.appAuth.privateKey, config.boxAppSettings.appAuth.passphrase, config.boxAppSettings.appAuth.publicKeyID); try { BoxJWTAuth boxJWT = new BoxJWTAuth(boxConfig); string adminToken = boxJWT.AdminToken(); return(adminToken); } catch (Exception ex) { return(ex.Message); } }
private string RemoveUserFromGroup() { var boxConfig = new BoxConfig(ClientId, ClientSecret, EntrepriseId, PrivateKey, Passphrase, JwtPublicKey); var boxJWT = new BoxJWTAuth(boxConfig); var adminToken = boxJWT.UserToken(UserId); var client = boxJWT.AdminClient(adminToken); var groupId = GetGroupIdByGroupName(client, GroupName); if (groupId == null) { return("Group not found."); } var membersResult = client.GroupsManager.GetAllGroupMembershipsForGroupAsync(groupId); membersResult.Wait(); foreach (var member in membersResult.Result.Entries) { if (member.User.Login == UserIdToBeRemoved) { var res = client.GroupsManager.DeleteGroupMembershipAsync(member.Id); res.Wait(); if (res.Exception != null) { return(res.Exception.Message); } return("Success"); } } return("User Not Found"); }