Как пройти аутентификацию в Azure AD с помощью Java SDK

Я пытаюсь создать метод аутентификации для аутентификации в объявлении Azure для добавления удаления пользователей с помощью моего Java-кода. У меня есть настройка учетной записи бесплатного уровня для того же самого. ниже приведен метод, который я использовал для аутентификации:

   try {
            final AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
            final TokenCredential credential = new DefaultAzureCredentialBuilder()
                .authorityHost(profile.getEnvironment().getActiveDirectoryEndpoint())
                .build();

            AzureResourceManager azureResourceManager = AzureResourceManager
                .configure()
                .withLogLevel(HttpLogDetailLevel.BASIC)
                .authenticate(credential, profile)
                .withDefaultSubscription();

            runSample(azureResourceManager, profile);

        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }

public static boolean runSample(AzureResourceManager azureResourceManager, AzureProfile profile) {
        final String userEmail = Utils.randomResourceName(azureResourceManager, "test", 15);
        final String userName = userEmail.replace("test", "Test ");
        final String spName = Utils.randomResourceName(azureResourceManager, "sp", 15);
        final String raName1 = Utils.randomUuid(azureResourceManager);
        final String raName2 = Utils.randomUuid(azureResourceManager);
        final String groupEmail1 = Utils.randomResourceName(azureResourceManager, "group1", 15);
        final String groupEmail2 = Utils.randomResourceName(azureResourceManager, "group2", 15);
        final String groupName1 = groupEmail1.replace("group1", "Group ");
        final String groupName2 = groupEmail2.replace("group2", "Group ");
        String spId = "";
        try {
            // ============================================================
            // Create a user

            System.out.println("Creating an AD user " + userName + "...");
//
            ActiveDirectoryUser user = azureResourceManager.accessManagement().activeDirectoryUsers()
                    .define(userName)
                    .withEmailAlias(userEmail)
                    .withPassword(Utils.password())
                    .create();
//
            System.out.println("Created AD user " + userName);
            Utils.print(user);

            } catch (Exception e) {
                System.out.println("Did not create Service Principal in Azure. No clean up is necessary");
            }
}

Я прошла

эти детали в окружающей среде. Откуда секрет клиента я извлек после регистрации приложения на портале. Я не могу завершить аутентификацию по вышеуказанной логике. Может ли кто-нибудь помочь мне здесь?

Пожалуйста, отредактируйте свой вопрос и укажите две вещи: 1) ваш полный код (мы не знаем, что происходит в вашем runSample коде) и 2) ошибку, которую вы получаете.

Gaurav Mantri 30.07.2024 16:32

@GauravMantri Добавлено. пожалуйста, проверьте

MI Haque 30.07.2024 16:51
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать пакет SDK Microsoft Graph Java для аутентификации Azure AD при добавлении и удалении пользователей.

Первоначально я зарегистрировал одно приложение и предоставил User.ReadWrite.All разрешение типа «Приложение» с согласием, как показано ниже:

Теперь я создал один секрет клиента при регистрации приложения выше и отметил его значение следующим образом:

В моем случае я запустил приведенный ниже пример кода для создания пользователя в Azure AD и получил такой ответ:

Главный.java:

package org.example;

import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.microsoft.graph.authentication.TokenCredentialAuthProvider;
import com.microsoft.graph.models.User;
import com.microsoft.graph.models.PasswordProfile;
import com.microsoft.graph.requests.GraphServiceClient;
import okhttp3.Request;
import java.util.Arrays;
import java.util.List;

public class Main {
    private static final String CLIENT_ID = "appId";
    private static final String CLIENT_SECRET = "secretValue";
    private static final String TENANT_ID = "tenantId";

    public static void main(String[] args) {
        try {
            ClientSecretCredential credential = new ClientSecretCredentialBuilder()
                    .clientId(CLIENT_ID)
                    .clientSecret(CLIENT_SECRET)
                    .tenantId(TENANT_ID)
                    .build();

            List<String> scopes = Arrays.asList("https://graph.microsoft.com/.default");
            TokenCredentialAuthProvider authProvider = new TokenCredentialAuthProvider(
                    scopes,
                    credential
            );

            GraphServiceClient<Request> graphClient = GraphServiceClient
                    .builder()
                    .authenticationProvider(authProvider)
                    .buildClient();

            createUser(graphClient);

            // delete a user
            // deleteUser(graphClient, "<USER_ID>");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void createUser(GraphServiceClient<Request> graphClient) {
        User user = new User();
        user.displayName = "User Name";
        user.mailNickname = "username";
        user.userPrincipalName = "[email protected]";
        user.accountEnabled = true;
        user.passwordProfile = new PasswordProfile();
        user.passwordProfile.password = "P@ssw0rd!";
        user.passwordProfile.forceChangePasswordNextSignIn = false;

        User createdUser = graphClient.users()
                .buildRequest()
                .post(user);

        System.out.println("Created User with ID: " + createdUser.id);
        System.out.println("Created User with Name: " + createdUser.displayName);
    }

    private static void deleteUser(GraphServiceClient<Request> graphClient, String userId) {
        graphClient.users(userId)
                .buildRequest()
                .delete();
        System.out.println("Deleted User with ID: " + userId);
    }
}

Ответ:

Чтобы подтвердить это, я проверил то же самое на портале, где новый пользователь был успешно создан, как показано ниже:

Прежде чем выполнять приведенный выше код, убедитесь, что в вашем Java-проекте установлены необходимые зависимости:

пом.xml:

<dependencies>
        <!-- Azure Identity library for authentication -->
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-identity</artifactId>
            <version>1.6.0</version>
        </dependency>
        <!-- Microsoft Graph SDK for Java -->
        <dependency>
            <groupId>com.microsoft.graph</groupId>
            <artifactId>microsoft-graph</artifactId>
            <version>5.0.0</version>
        </dependency>
        <!-- Logging -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.6</version>
        </dependency>
</dependencies>

Ссылка:

Создать пользователя — Microsoft Graph v1.0

Большое спасибо. Это сработало для создания пользователя. Я также рассмотрю графический подход для добавления в группу.

MI Haque 31.07.2024 12:26

Рад помочь! Не стесняйтесь задавать новые вопросы и делиться ссылкой здесь, если у вас возникнут какие-либо проблемы при работе с группами :)

Sridevi 31.07.2024 12:31

Другие вопросы по теме

Похожие вопросы