Я пытаюсь создать метод аутентификации для аутентификации в объявлении 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");
}
}
Я прошла
эти детали в окружающей среде. Откуда секрет клиента я извлек после регистрации приложения на портале. Я не могу завершить аутентификацию по вышеуказанной логике. Может ли кто-нибудь помочь мне здесь?
@GauravMantri Добавлено. пожалуйста, проверьте
Вы можете использовать пакет 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
Большое спасибо. Это сработало для создания пользователя. Я также рассмотрю графический подход для добавления в группу.
Рад помочь! Не стесняйтесь задавать новые вопросы и делиться ссылкой здесь, если у вас возникнут какие-либо проблемы при работе с группами :)
Пожалуйста, отредактируйте свой вопрос и укажите две вещи: 1) ваш полный код (мы не знаем, что происходит в вашем
runSample
коде) и 2) ошибку, которую вы получаете.