Я пытаюсь использовать GraphAPI, используя официальную библиотеку nuget (https://github.com/microsoftgraph/msgraph-sdk-dotnet). Однако процесс аутентификации не тривиален и не очень хорошо документирован.
Я являюсь партнером CSP в межмашинном сценарии, поэтому нет приложения пользовательского интерфейса с URL-адресом перенаправления, где пользователь вручную вводит свои учетные данные для согласия на доступ. Но, кажется, это уникальный сценарий, хорошо задокументированный или доступный в найденных мной образцах... Даже официальная документация CSP не ясна (https://developer.microsoft.com/en-us/graph/docs/concepts/auth_cloudsolutionprovider).
Раньше я использовал многие другие API в производстве (и в среде TIP) в качестве CSP, например MSOL, CrestAPI и AzureGraph, поэтому вся настройка и регистрация приложения не представляет проблемы.
Можно ли использовать MSAL в качестве CSP в межмашинном сценарии? Есть ли какая-либо документация или образец для моего варианта использования?
ОБНОВЛЕНИЕ
Я думаю, что я на правильном пути.
Во-первых, мне пришлось зарегистрировать свое приложение на apps.dev.microsoft.com. Мои приложения ранее были зарегистрированы на сайте portal.azure.com. Похоже, у AzureAD и Graph разные требования к тому, где должны быть зарегистрированы приложения.
Во-вторых, я использую образец здесь: https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2 .
В-третьих, я могу вызывать Graph API, когда предоставляю свой CSP TenantId. Однако, когда я пытаюсь вызвать Graph API, используя TenantId одного из арендаторов, которыми я управляю, я получаю:
{ "error": {
"code": "Authorization_IdentityNotFound",
"message": "The identity of the calling application could not be established.",
"innerError": {
"request-id": "7cab3137-b3e7-4622-9123-e47f2c018c56",
"date": "2017-09-04T14:48:34"
} } }
(У меня не может быть страницы согласия в моем случае использования, поэтому я попытался предварительно дать согласие на мое приложение для всех потребителей, используя: https://developer.microsoft.com/en-us/graph/docs/concepts/auth_cloudsolutionprovider)