Запрос пользовательских атрибутов в Azure Active Directory с помощью Microsoft Graph API (НЕ Azure AD API) - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть веб-сайт Asp.Net, который использует Azure Active Directory авторизацию (с использованием ADAL) и возвращает основные атрибуты, такие как отображаемое имя пользователя.Я хочу получить пользовательские атрибуты (например, employeeID), используя Microsoft Graph API (НЕ API Azure AD)

Пример запроса API Graph:

string graphRequest = string.Format(CultureInfo.InvariantCulture,
    "{0}{1}/users?api-version={2}&$filter=startswith(userPrincipalName, '{3}')",
    graphApiEndpoint,
    tenant,
    graphApiVersion,
    "SearchText.Text");

1 Ответ

0 голосов
/ 28 сентября 2018

Вы вызываете Microsoft Graph, используя шаблон URI из API Azure Graph.Это разные API, которые имеют разные шаблоны вызовов.

Правильный URI должен быть:

https://graph.microsoft.com/v1.0/users?$filter=startsWith(userPrincipalName, 'string')

По умолчанию /users возвращает только ограниченный набор свойств.Из документации :

По умолчанию возвращается только ограниченный набор свойств ( businessPhones, displayName, GivenName, id, jobTitle, mail, mobilePhone, officeLocation,предпочитаемый язык, фамилия, userPrincipalName ).

Чтобы вернуть альтернативный набор свойств, вы должны указать желаемый набор пользовательских свойств, используя параметр запроса OData $select.Например, чтобы вернуть displayName , данное имя и postalCode , вы должны добавить в свой запрос следующее $select=displayName,givenName,postalCode

Примечание.: Некоторые свойства не могут быть возвращены в пользовательской коллекции.Следующие свойства поддерживаются только при извлечении одного пользователя: aboutMe, день рождения, hireDate, интересы, mySite, pastProjects, предпочитаемое имя, обязанности, школы, навыки, mailboxSettings

В другихИными словами, если вам нужно что-то отличное от свойств по умолчанию, вам нужно точно запросить набор свойств, который вы хотите.

Исходя из вышесказанного, ваш пример кода должен выглядеть примерно так:

const string graphApiEndpoint = "https://graph.microsoft.com";
const string graphApiVersion = "v1.0";
const string userProperties = "id,userPrincipalName,displayName,jobTitle,mail,employeeId"
string graphRequest = string.Format(CultureInfo.InvariantCulture,
    "{0}/{1}/users?$select={2}&$filter=startswith(userPrincipalName, '{3}')",
    graphApiEndpoint,
    graphApiVersion,
    userProperties,
    "SearchText.Text");
...