Несколько человек правильно указали, что WebApplicationInfo.Resource должен совпадать с appId, зарегистрированным на вашем сервере AD.
Но, по сути, ВСЕ мои проблемы были связаны с тем, с какой учетной записью AD нужно войти (у меня есть личная учетная запись).и корпоративную учетную запись, и вы используете другой портал для доступа к каждому), и как настроить манифест для этой учетной записи AD / регистрация приложения на https://portal.azure.com.
Существуют сотни регуляторов / переменных, которые можно настроить, ипрактически нет обратной связи относительно того, что они имеют в виду, или как их настроить.Поэтому я просто приведу РАБОЧИЙ пример, который кто-то другой мог бы использовать, чтобы заставить это работать.Я не совсем уверен, какие именно ручки / разрешения имеют значение.
Вот рабочий манифест (подмножество моего приложения):
...
<WebApplicationInfo>
<Id>fc63fe86-d03c-4ae9-b520-373fcb386d40</Id>
<Resource>api://localhost:8001/09c94a00-cad9-4af6-ac2c-cdb81a724f16</Resource>
<Scopes>
<Scope>Files.Read.All</Scope>
<Scope>offline_access</Scope>
<Scope>openid</Scope>
<Scope>profile</Scope>
</Scopes>
</WebApplicationInfo>
Примечание - 'id 'выше не имеет значения, но указатель в Resource ДОЛЖЕН совпадать с appid в приложении, которое вы регистрируете.И остальные appID должны соответствовать тому, как вы подключаетесь к плагину (сейчас я просто использую localhost).
Используйте портал https://portal.azure.com для создания регистрации вашего приложения:
выберите "Azure Active Directory", выберите "Регистрация приложений". Создайте новую регистрацию приложения ... большинство деталей, вероятно, не имеют значения, поскольку вы замените их все, но я выбрал type = web
Затем при помощи вы захотите загрузить манифест и DIFF против этого, и продолжайте вносить изменения в манифест, пока он не совпадет с этим (из-за использования GUID в манифесте, который вы не можете просто заменить).
{
"id": "1a225d9a-13f5-4ff6-a62d-bdbd819ef5e5",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"allowPublicClient": null,
"appId": "09c94a00-cad9-4af6-ac2c-cdb81a724f16",
"appRoles": [],
"oauth2AllowUrlPathMatching": false,
"createdDateTime": "2019-03-11T15:45:24Z",
"groupMembershipClaims": null,
"identifierUris": [
"api://localhost:8001/09c94a00-cad9-4af6-ac2c-cdb81a724f16"
],
"informationalUrls": {
"termsOfService": null,
"support": null,
"privacy": null,
"marketing": null
},
"keyCredentials": [],
"knownClientApplications": [],
"logoUrl": null,
"logoutUrl": null,
"name": "StackOverflowTest",
"oauth2AllowIdTokenImplicitFlow": true,
"oauth2AllowImplicitFlow": true,
"oauth2Permissions": [
{
"adminConsentDescription": "consent to use plugin",
"adminConsentDisplayName": "consent to use plugin",
"id": "56b9c899-4e7f-47d3-a584-50ab695b164e",
"isEnabled": true,
"lang": null,
"origin": "Application",
"type": "User",
"userConsentDescription": "consent to use plugin",
"userConsentDisplayName": null,
"value": "user_impersonation"
}
],
"oauth2RequirePostResponse": false,
"optionalClaims": null,
"orgRestrictions": [],
"parentalControlSettings": {
"countriesBlockedForMinors": [],
"legalAgeGroupRule": "Allow"
},
"passwordCredentials": [],
"preAuthorizedApplications": [
{
"appId": "57fb890c-0dab-4253-a5e0-7188c88b2bb4",
"permissionIds": [
"56b9c899-4e7f-47d3-a584-50ab695b164e"
]
},
{
"appId": "d3590ed6-52b3-4102-aeff-aad2292ab01c",
"permissionIds": [
"56b9c899-4e7f-47d3-a584-50ab695b164e"
]
},
{
"appId": "bc59ab01-8403-45c6-8796-ac3ef710b3e3",
"permissionIds": [
"56b9c899-4e7f-47d3-a584-50ab695b164e"
]
}
],
"publisherDomain": "USENAMEFROMYOURDEFAULTGENERATEDAPPREGISRATION.onmicrosoft.com",
"replyUrlsWithType": [
{
"url": "https://localhost:8001",
"type": "Web"
}
],
"requiredResourceAccess": [
{
"resourceAppId": "00000003-0000-0000-c000-000000000000",
"resourceAccess": [
{
"id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
"type": "Scope"
}
]
}
],
"samlMetadataUrl": null,
"signInUrl": null,
"signInAudience": "AzureADMultipleOrgs",
"tags": [],
"tokenEncryptionKeyId": null
}
Примечание. Нельзя просто скопировать критические разделы requiredResourceAccess и preAuthorizedApplications.Вместо этого используйте графический интерфейс на странице регистрации приложения Ad и перейдите в раздел «Предоставление API».Сначала добавьте область с помощью scope-name = 'user_impersonation';А затем добавьте 3 авторизованных клиентских приложения (при условии, что вы хотите поддерживать настольные и офисные приложения Excel в сети) - 57fb890c-0dab-4253-a5e0-7188c88b2bb4, d3590ed6-52b3-4102-aeff-aad2292ab01c, bc59ab01-8403-45c6-8796-ac3ef71028 *
Это должно привести к появлению в вашем манифесте разделов, достаточно близких к моим для preAuthorizedApplications.
И я хотел бы поблагодарить человека, который помог мне разобраться во всем этом - Джим Барретт (https://stackoverflow.com/users/4114387/jim-barrett)
Удачи!