Create SFTP Local User via Java SDK

Jasper Bartscher 0 Ansehenspunkte
2025-02-10T09:16:14.56+00:00

Hi

I created a Storage Account via the UI and wrote a short Java programm to create a new container in that Storage Account.

TokenCredential defaultCredential = new AzureCliCredentialBuilder().build();

BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint("https://" + STORAGE_ACC + ".blob.core.windows.net/")
        .credential(defaultCredential)
        .buildClient();

String containerName = "newcontainer" + java.util.UUID.randomUUID();

BlobContainerClient blobContainerClient = blobServiceClient.createBlobContainer(containerName);

Now I want to create a Local User, just as in the UI via the SDK but I cannot find an API for that use case.
grafik
I searched the following libs, but found nothing about local users or sftp ssh credentials.

  • com.azure:azure-storage-blob:12.29.0
  • com.azure.resourcemanager:azure-resourcemanager-storage:2.47.0
  • com.azure:azure-identity:1.15.0
Community Center | Wird nicht überwacht
0 Kommentare Keine Kommentare
{count} Stimmen

1 Antwort

Sortieren nach: Sehr hilfreich
  1. Venkatesan S 2,820 Ansehenspunkte Externe Mitarbeiter von Microsoft Moderator
    2025-02-28T07:33:33.2066667+00:00

    Hallo Jasper Bartscher ,

    Create SFTP Local User via Java SDK

    Sie können den folgenden Code verwenden, um den lokalen SFTP-Benutzer im Azure-Speicherkonto mithilfe des Azure Java SDK zu erstellen.

    Code:

    import com.azure.identity.DefaultAzureCredential;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.azure.core.management.AzureEnvironment;
    import com.azure.core.management.profile.AzureProfile;
    import com.azure.resourcemanager.storage.StorageManager;
    import com.azure.resourcemanager.storage.fluent.LocalUsersOperationsClient;
    import com.azure.resourcemanager.storage.fluent.models.LocalUserInner;
    import com.azure.resourcemanager.storage.fluent.models.LocalUserRegeneratePasswordResultInner;
    import com.azure.resourcemanager.storage.models.PermissionScope;
    
    import java.util.Arrays;
    
    public class App {
        public static void main(String[] args) {
            String subscriptionId = "xxxxxx";
            String tenantId = "xxxxx";
            String resourceGroupName = "xxxx";
            String storageAccountName = "xxx";
            String localUserName = "xxx";
            String containerName = "xxxx";
    
            DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
            AzureProfile profile = new AzureProfile(tenantId, subscriptionId, AzureEnvironment.AZURE);
            StorageManager storageManager = StorageManager.authenticate(credential, profile);
    
            LocalUsersOperationsClient localUsersClient = storageManager.serviceClient().getLocalUsersOperations();
    
            // Define the local user properties
            LocalUserInner localUser = new LocalUserInner()
                    .withHasSshPassword(true)
                    .withHasSshKey(false)
                    .withPermissionScopes(Arrays.asList(
                            new PermissionScope()
                                    .withResourceName(containerName)
                                    .withService("blob")
                                    .withPermissions("rw")
                    ));
    
            LocalUserInner response = localUsersClient.createOrUpdate(
                    resourceGroupName,
                    storageAccountName,
                    localUserName,
                    localUser
            );
    
            System.out.println("Local user created: " + response.name());
    
            LocalUserRegeneratePasswordResultInner passwordResponse = localUsersClient.regeneratePassword(
                    resourceGroupName,
                    storageAccountName,
                    localUserName
            );
    
            // Print the regenerated password
            System.out.println("Password regenerated successfully.");
            System.out.println("Generated password: " + passwordResponse.sshPassword());
        }
    }
    
    
    

    Ausgabe:

    Local user created: xxxxx
    Password regenerated successfully.
    Generated password: xxxxx
    

    enter image description here

    Sie können die gleiche Abhängigkeit verwenden, die oben in Ihrer Frage erwähnt wurde, und Sie können auch die Schritte für die SSH-Schlüsselauthentifizierung befolgen.

    Referenz:
    com.azure.resourcemanager.storage.fluent.models Paket | Microsoft Learn

    Lassen Sie es mich wissen, wenn Sie Fragen haben, und ich helfe Ihnen gerne weiter.

    Wenn die bereitgestellten Informationen für Sie hilfreich waren, denken Sie bitte daran, die Antwort zu akzeptieren und hochzuvoten, da dies auch für andere Community-Mitglieder hilfreich sein wird.

    Ich übersetze die Antworten aus dem Englischen, also verzeihen Sie mir bitte, wenn es Grammatikprobleme gibt.


Ihre Antwort

Antworten können vom Autor der Frage als akzeptierte Antworten gekennzeichnet werden, was Benutzern hilft, die Antwort zu erkennen, die das Problem des Autors gelöst hat.