* * * * Graph api passwordprofile NULL для пользователей b2 c - PullRequest
0 голосов
/ 18 марта 2020

Пользователи регистрируются / авторизируются через Azure AD B2 C, используя Identity-провайдер Локальная учетная запись-электронная почта.

Я вижу пользователей, зарегистрировавшихся (с их паролем) для арендатора: enter image description here Когда я запускаю пример "Управление учетными записями пользователей с помощью Graph API" , чтобы проверить наличие локального идентификатора пароля. В файлах профилей паролей они показывают нулевое значение. Я предполагаю, что это свойство заполняется автоматически, когда пользователь создает пароль, аналогичный другим User ресурсам.

Может кто-нибудь подсказать, что мне не хватает?

public static async Task GetUserByIssuerAssignedID(AppSettings config, GraphServiceClient graphClient)
    {
        Console.Write("Enter user sign-in name (username or email address): ");
        string userName = Console.ReadLine();

        Console.WriteLine($"Looking for user with sign-in name '{userName}'...");

        try
        {
            // Get user by sign-in name
            var result = await graphClient.Users
                .Request()
                .Filter($"identities/any(c:c/issuerAssignedId eq '{userName}' and c/issuer eq '{config.TenantId}')")
                .Select(e => new
                {
                    e.PasswordProfile,
                    e.DisplayName,
                    e.Id,
                    e.Identities
                })
                .GetAsync();

            if (result != null)
            {
                Console.WriteLine(JsonConvert.SerializeObject(result));
            }

enter image description here Спасибо за помощь

1 Ответ

1 голос
/ 19 марта 2020

Это ожидаемый результат.

Azure AD B2 C не требует от локальных пользователей смены пароля при следующем входе. Как документ говорит:

Свойство должно быть установлено на .forceChangePasswordNextSignIn false.

Установить forceChangePasswordNextSignIn как true не имеет смысла. В этом случае passwordProfile не будет виден через метод GET Microsoft Graph API.

Вы можете быстро проверить это в Microsoft Graph Explorer .

Например, если вы создадите пользователя с "forceChangePasswordNextSignIn": true в клиенте Azure AD, вы получите passwordProfile в результате.

Если вы создадите пользователя с "forceChangePasswordNextSignIn": true в Azure AD B2 C арендаторе, вы можете получить "passwordProfile" в результате, но пароль будет нулевым.

"passwordProfile": {
    "password": null,
    "forceChangePasswordNextSignIn": true,
    "forceChangePasswordNextSignInWithMfa": false
}

Мы никогда не сможем получить пароль пользователя, используя Microsoft Graph API или любой другой официальный API. Azure AD не будет хранить пароль. Так что вы не можете получить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...