Я использую пользовательскую политику для регистрации пользователей в Azure AD B2 C. На последнем этапе, перед выпуском JWT, технический профиль выполняет следующие действия:
<!-- Store the user in the AD -->
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" ContinueOnError="false" />
<!-- Sends the user information, including ObjectId to website to store locally-->
<ValidationTechnicalProfile ReferenceId="REST-SendUserInformation" ContinueOnError="false"/>
Итак, все работает нормально. Однако, в моем коде, если что-то пойдет не так на шаге 2 (отправка информации о пользователе для локального хранения), я вызываю Graph API для удаления только что созданного пользователя. Тем не менее, я заметил, что Graph API работает, когда я «отлаживаю» (что означает, что требуется некоторое время, чтобы нажать «Далее ... Далее ...»), но когда он работает на сервере, пользователь не удаляется из AD. Это не вызывает исключения.
Мой код для удаления пользователя выглядит следующим образом:
public AzureGraphService(IConfiguration configuration)
{
var azureOptions = new AzureAdOptions();
configuration.Bind("AzureAdB2C", azureOptions);
// Client credential provider is used by services and desktop applications to acquire Microsoft Graph access token without a user.
_confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(azureOptions.ClientId)
.WithTenantId(azureOptions.Domain)
.WithClientSecret(azureOptions.ClientSecret)
.Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(_confidentialClientApplication);
// Set up the Microsoft Graph service client with client credentials
_graphClient = new GraphServiceClient(authProvider);
}
public async Task DeleteUserFromAD(string azuresubid)
{
try
{
// Delete user by object ID
await _graphClient.Users[azuresubid]
.Request()
.DeleteAsync();
}
catch (Exception ex)
{
// TODO - Log exception?
throw ex;
}
}
После просмотра журналов аудита в Azure AD B2 C я нашел это "ObjectNotFoundException".
Тем не менее, я уверен, что объект правильный, и идентификатор объекта, который я использую для удаления, также является правильным, поскольку он работает, если я "отлаживаю" (go медленно).
Мой вопрос: есть ли задержка между созданием объекта (пользователя) в AD B2 C и временем, которое я действительно могу увидеть и удалить объект оттуда?
Спасибо