Azure AD B2 C. Net SDK - получение пользователя по электронной почте - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь найти пользователя по электронной почте для входа в наш Azure AD B2 C Арендатор, используя C#. NET SDK и фильтр, описанный в этот ответ , примерно так:

        private async Task<User> GetB2CUserByEmail(string email)
        {
            IGraphServiceUsersCollectionPage collectionPage = await this.GraphServiceClient.Users
                .Request()
                .Filter($"signInNames/any(c:c/value eq '{email}')")
                .Select(this.UserSelectValue)
                .GetAsync();

            if (collectionPage == null || collectionPage.Count == 0)
            {
                return null;
            }

            return collectionPage[0];
        }

Я получаю сообщение об ошибке:

 Microsoft.Graph.ServiceException : Code: BadRequest
    Message: Filter not supported.

Где this.UserSelectValue - список выбора свойств, например "id,givenName...". Я подтвердил, что это не проблема, потому что у нас есть похожий рабочий метод, который ищет пользователя по свойству расширения; единственное отличие - параметр .Filter().

Как я могу заставить эту работу работать? Спасибо.

1 Ответ

1 голос
/ 29 апреля 2020

Нет свойства signInNames в типе ресурса пользователя . Вот почему вы получаете эту ошибку.

Вы должны использовать .Filter("identities/any(c:c/issuerAssignedId eq '{email}' and c/issuer eq '{email}')").

См. Подробности из официального образца здесь .

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