office addin Office.context.auth.getAccessTokenAsync ошибка 13004 - PullRequest
0 голосов
/ 20 февраля 2019

Я создаю дополнение Office.js Excel.

У меня есть код, чтобы попытаться получить информацию об аутентификации:

Office.context.auth.getAccessTokenAsync(function(result) {
  if (result.status === "succeeded") {
    // Use this token to call Web API
    var ssoToken = result.value;
  } else {
    if (result.error.code === 13003) {
      // SSO is not supported for domain user accounts, only
      // work or school (Office 365) or Microsoft Account IDs.
    } else {
      // Handle error
    }
  }

при этом я получаю сообщение об ошибке 13004,с сообщением "name =" Предоставлен неверный URL ресурса приложения. ""

мой манифест содержит:

 <WebApplicationInfo>
      <Id>a02210cd-88ac-4af6-b6cf-ee79006731c1</Id>
      <Resource>api://localhost:8001/a02210cd-88ac-4af6-b6cf-ee79006731c1</Resource>
    </WebApplicationInfo>

  </VersionOverrides>

Я создал регистрацию приложения-надстройки: https://portal.azure.com, которая имеетэтот идентификатор приложения (я пытался использовать как «родной», так и «веб» тип, не зная, какой из них применяется к служебному надстройке).

Ответы [ 3 ]

0 голосов
/ 11 марта 2019

Несколько человек правильно указали, что 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)

Удачи!

0 голосов
/ 11 марта 2019

Ваши проблемы связаны с тем, что вы пытаетесь зарегистрировать надстройку на portal.azure.com. Это не поддерживается. Чтобы использовать систему единого входа для надстроек Office, необходимо зарегистрироваться в конечной точке AAD V 2.0: введите описание ссылки здесь .Это указано в документации, например, в обзорной статье: Включить единый вход в надстройку , с которой @RohitSaigal связан в нескольких местах.Он также сослался на инструкции о том, как это сделать, в Надстройке для реестра и Office, в которой используется конечная точка Azure AD v2.0 .

Ответ, который вы дали на свой вопрос:не поддерживаемая конфигурация.

Я думаю, вам стоит подумать о предоставлении Rohit награды

0 голосов
/ 07 марта 2019

error code 13004 и сообщение Invalid application resource Url provided указывают на несоответствие между значением, используемым для идентификации ресурса в Azure AD v / s, которое указанов манифесте надстройки.

Значение тега <Resource> в манифесте надстройки должно точно соответствовать значению в App ID URI для регистрации в Azure AD.Единственная разница будет в том, что часть протокола значения ресурса в вашем манифесте будет api, а не https.

Так что в случае

  • URI идентификатора приложения в Azure AD: регистрация приложения https://yourdomain.onmicrosoft.com/GUID1
  • Значение ресурса будет api://yourdomain.onmicrosoft.com/GUID1

Могут существовать или не возникать другие проблемы, которые необходимо решить, прежде чем проверка подлинности надстройки будет работать нормально, поэтому обратите внимание, если после выполнения этих действий вы начнете получать другое сообщение об ошибке.

Вот несколько рекомендаций отMicrosoft Docs и Github, которые объясняют это:

  1. Устранение неполадок Сообщения об ошибках для SSO в офисе надстройки

    enter image description here

  2. Включить единый вход для надстроек Office

    enter image description here

    enter image description here

  3. Зарегистрируйте надстройку Office, использующую единый вход, с конечной точкой Azure AD v2.0

    enter image description here

...