4
votes

Office addin Office.context.auth.getAccessTokenAsync erreur 13004

Je construis un addin excel office.js.

J'ai du code pour essayer d'obtenir les informations d'authentification:

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

  </VersionOverrides>

en faisant cela, je reviens erreur 13004, avec le message "name =" URL de ressource d'application non valide fournie. ""

mon manifeste contient:

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
    }
  }

J'ai créé une inscription d'application complémentaire sur: https://portal.azure.com qui a cet identifiant d'application (j'ai essayé à la fois le type "natif" et le type "Web" sans savoir lequel s'appliquait à un complément Office).


6 commentaires

Assurez-vous que la valeur URI de l'ID d'application de l'inscription d'application Azure AD correspond exactement à la valeur que vous fournissez pour Ressource . Pour vérifier l'URI de l'ID d'application, accédez à Azure Portal> Azure AD> Inscriptions d'applications> accédez à l'inscription d'application pour votre complément> Paramètres> Propriétés


Dans l'inscription de l'application Azure ID, je ne trouve aucun champ où vous avez dit "URI de l'ID d'application". J'ai trouvé un champ appelé "ID d'application", et l'ID ci-dessus (dans WebApplicaitonInfo) le correspond exactement. @ RohitSaigal


Vous devriez le voir dans le panneau des propriétés. Voici une capture d'écran .. i.stack.imgur.com /OozS1.png assurez-vous que la valeur de URI de l'ID d'application correspond exactement à la valeur de


Merci @RohitSaigal. Maintenant, je vois pourquoi vous avez cet URI d'ID d'application (et cela pourrait être lié à mon problème). Vous avez marqué votre type d'application "Web appAPI" et j'ai sélectionné "application native". Ce champ auquel vous faites référence n'apparaît que lorsque vous sélectionnez "Application Web / API". Maintenant, je ne suis pas sûr de ce qu'est un plugin office js. Je ne sais pas si MSFT appelle cette application Web ou native? C'est vraiment NI (ou un peu des deux). C'est une application javascript, exécutée dans du code Excel natif. Je ne sais pas ce que peut signifier Native? Le plus proche pour les compléments Office serait VSTO addins, mais ils ne prennent pas en charge VSTO avec ADAL, donc il ne peut pas en être ainsi.


Quoi qu'il en soit - même après avoir essayé de l'appeler une application Web / API, cela ne fonctionnait toujours pas. Le format de ce champ est xxxx.onmicrosoft.com/d1df84dddd-5ddd-4f15- 9f1b-bd56b221cbad , mais la documentation de WebApplicationInfo indique que la ressource doit être de la forme api: //myDomain.com/12345678-abcd-1234-efab-123456789abc, donc votre indice ne semble pas correspondre.


il vous suffit de remplacer https: par api: le reste de la valeur doit être exactement le même. Je fais référence à ce guide sur github. github.com/OfficeDev/office-js-docs-pr/blob/master/docs/deve‌ lop /…


3 Réponses :


2
votes

Le code d'erreur 13004 et le message URL de ressource d'application non valide fournie indiquent qu'il y a une incompatibilité entre la valeur utilisée pour identifier la ressource dans Azure AD v / s ce qui est spécifié dans le manifeste du complément.

La valeur de la balise dans votre manifeste de complément doit correspondre exactement à la valeur de URI de l'ID d'application pour l'inscription dans Azure UN D. La seule différence sera que la partie du protocole de la valeur de la ressource dans votre manifeste sera api et non https .

Donc au cas où

  • L'URI de l'ID d'application dans l'inscription d'application Azure AD est https://yourdomain.onmicrosoft.com/GUID1
  • La valeur de la ressource sera api://yourdomain.onmicrosoft.com/GUID1

Il peut y avoir ou non d'autres problèmes qui doivent être résolus avant que l'authentification des compléments fonctionne correctement, alors regardez si vous commencez à recevoir un message d'erreur différent après avoir effectué ces étapes.

Voici quelques liens d'orientation de Microsoft Docs et Github qui expliquent cela:

  1. Dépannage des messages d'erreur pour l'authentification unique dans le complément Office

     entrez la description de l'image ici

  2. Activer l'authentification unique pour les compléments Office

     entrez la description de l'image ici

     entrez la description de l'image ici

  3. Enregistrer un complément Office qui utilise l'authentification unique avec le point de terminaison Azure AD v2.0

     entrez la description de l'image ici


2 commentaires

Merci pour votre réponse, mais cela ne résout pas mon problème particulier (c'était avec la configuration AD).


J'ai une question très spécifique: le contenu Web du complément doit-il être hébergé sur Azure en particulier ou peut-il être hébergé sur n'importe quel autre fournisseur d'hébergement?



0
votes

Plusieurs personnes ont correctement fait remarquer que la ressource WebApplicationInfo.Resource doit correspondre à l'appId enregistré sur votre serveur AD.

Mais essentiellement TOUS mes problèmes ont dû être liés à QUEL compte AD pour me connecter (j'ai un compte personnel et un et vous utilisez un portail différent pour accéder à chacun), et comment configurer le manifeste sur ce compte AD / enregistrement de l'application sur https : //portal.azure.com .

Il y a des centaines de boutons / variables à régler, et pratiquement aucun retour sur ce qu'ils signifient ou comment les ajuster. Je vais donc simplement présenter un exemple de travail que quelqu'un d'autre pourrait utiliser pour que cela fonctionne. Je ne sais pas vraiment quels boutons / autorisations comptent.

Voici un manifeste (sous-ensemble de mon application) fonctionnel:

{
"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

p >

Remarque - l'ID ci-dessus ne semble pas avoir d'importance, mais le guid dans la ressource DOIT correspondre à l'appid de l'application que vous enregistrez. Et le reste de l'appID doit correspondre à la façon dont vous vous connectez au plugin (pour l'instant, j'utilise simplement localhost).

Utilisez le portail https://portal.azure.com pour créer l'enregistrement de votre application:

sélectionnez "Azure Active Directory" sélectionnez "Inscriptions d'application" Créer une nouvelle inscription d'application ... la plupart des détails n'ont probablement pas d'importance car vous les remplacerez tous, mais j'ai sélectionné type = web

Ensuite, utilisez, vous voudrez télécharger votre manifeste et le différencier de celui-ci, et continuer à apporter des modifications à votre manifeste jusqu'à ce qu'il corresponde à celui-ci (en raison de l'utilisation de GUID dans le manifeste, vous ne pouvez pas simplement remplacer) .

 ...
 <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>

}

Remarque - vous ne pouvez pas simplement COPIER les sections critiques requiredResourceAccess et preAuthorizedApplications. À la place, utilisez l'interface graphique dans la page d'inscription de l'application publicitaire et accédez à la section «Exposer une API». Ajoutez d'abord une portée avec scope-name = 'user_impersonation'; Et puis ajoutez 3 applications clientes autorisées (en supposant que vous souhaitiez prendre en charge Excel Desktop et Office Online) - 57fb890c-0dab-4253-a5e0-7188c88b2bb4, d3590ed6-52b3-4102-aeff-aad2292ab01c, bc59ab01-8403-45c6-ef8796-ac / p>

Cela devrait produire des sections dans votre manifeste qui sont assez proches des miennes pour les applications préautorisées.

Et j'aimerais rendre hommage à la personne qui m'a aidé à comprendre tout cela - Jim Barrett ( https://stackoverflow.com/users/4114387/jim-barrett )

Bonne chance!


5 commentaires

L'enregistrement de l'application sur portal.azure.com n'est pas pris en charge. Vous devez utiliser le point de terminaison AAD V2.0. Voir docs.microsoft .com / fr-fr / office / dev / add-ins / develop /… .


Essayez-le vous-même. J'aimerais pouvoir inclure une capture d'écran. J'ai essayé ce que vous proposez. J'ai créé l'application sur le site les documents recommandés. Ensuite, une boîte de dialogue (sur ce site) est apparue disant «Nous avons une nouvelle expérience dans le portail Azure Nous vous recommandons de gérer cette application dans le portail Azure. Ainsi, les derniers 99% de modification / manipulation de l'enregistrement de l'application ont été effectués sur le portail azur. @RickKirkham


@RickKirkham Vous m'avez peut-être mal compris plus tôt. Je n'ai jamais dit que le conseil de Rohit était faux. Mais j'avais déjà suivi ces instructions et mon application ne fonctionnait pas. Il s'est avéré que cela ne fonctionnait PAS à cause du contenu de ces instructions (le fichier manifeste, etc.) - mais à cause des détails (les instructions laissées de côté et qui ont / sont en train de changer) sur la façon de configurer la configuration AD. Ne pas dire que TOUT LE MONDE aura mon problème. Juste que MON problème n'était PAS avec le manifeste pour le complément, mais avec la configuration / les autorisations AD.


Eh bien, dans un commentaire à ma réponse, vous avez dit, à propos de la réponse de Rohit "Mais la réponse était FAUX ...". Je ne sais toujours pas si vous pensez que la documentation actuelle fonctionne. Vous dites que vous avez eu un problème avec "le détail (les instructions laissées de côté et qui ont / sont en train de changer) sur la façon de configurer la configuration AD". Les instructions fonctionnent pour moi et pour les autres. Quel est le détail laissé de côté?


@RickKirkham Je vais devoir formuler mes commentaires plus attentivement. Désolé. C'était FAUX dans le sens où cela n'a PAS répondu à ma question, ni résolu mon problème. Pas dans le sens où c'était faux. Donc mon libellé était alors «faux» ;-). Ce que j'aurais dû dire, c'est simplement que cela ne répondait pas correctement à ma question. Ce n'était pas «faux». En fait, ce n'était guère plus que copier et coller les instructions originales. En ce qui concerne la deuxième partie de votre question - sur CE QUI n'allait pas - j'ai essayé de répondre dans MA réponse fournie (ci-dessus). Pas de place ici pour répéter. Mais concentrez-vous sur une partie manifeste de ma réponse.



1
votes

Vos problèmes proviennent du fait que vous essayez d'enregistrer le complément sur portal.azure.com. Ceci n'est pas pris en charge. Pour utiliser le système d'authentification unique pour les compléments Office, vous devez vous inscrire au point de terminaison AAD V 2.0: entrez la description du lien ici . Ceci est indiqué dans la documentation, par exemple, dans l'article de présentation: Activez la connexion unique dans un complément , auquel @RohitSaigal a lié, à plusieurs endroits. Il a également lié aux instructions sur la façon de procéder à l'adresse Complément Register et Office qui utilise le point de terminaison Azure AD v2.0 .

La réponse que vous avez donnée à votre propre question n'est pas une configuration prise en charge.

Je pense que vous devriez envisager de donner la prime à Rohit.


5 commentaires

Je serais heureux de donner à tous ceux que vous souhaitez la prime ;-). Mais la réponse était FAUX donc je ne la marquerai pas comme correcte. Et VOUS vous trompez sur l'enregistrement - comme je l'ai expliqué dans la réponse à l'autre commentaire. Les documents sur le Web sont souvent obsolètes. Le site que vous référez REDIRECTS vers le portail azure. Et comme j'ai dû éditer et changer et manipuler l'enregistrement de l'application pendant une longue période, j'ai passé 99% de mon temps sur le portail azur. J'ai également CRÉÉ des inscriptions d'applications entièrement fonctionnelles sur ce portail d'applications.


@LewisPringle Merci pour l'info. Je vais regarder ça. Cette remarque: "Le site que vous référez REDIRECTS vers le portail azur." aurait dû être dans le message d'origine. Il s'agit d'une information cruciale que les lecteurs de votre publication ne peuvent pas supposer connaître.


@LewisPringle Lorsque je vais sur apps.dev.microsoft.com, il ne redirige pas automatiquement. Il a un avis en haut de la page "Nous ne prendrons plus en charge l'inscription et la gestion des applications convergées et Azure AD ici à partir de mai 2019. Nous vous recommandons de gérer vos applications existantes et d'enregistrer de nouvelles applications à l'aide de l'expérience Inscriptions d'applications (préversion) dans le Portail Azure. Cliquez sur cette bannière pour lancer l'expérience d'aperçu. " Mais il y a toujours un bouton Ajouter une application et je peux toujours m'inscrire en suivant les instructions de la documentation. Est-ce ce que vous voyez?


Oui, c'est ce à quoi je faisais référence. Désolé, je me rends compte que j'ai peut-être induit en erreur. Je voulais dire «rediriger» dans le sens ANGLAIS du mot, pas dans le sens HTTP du mot. Et plus important encore, l'essentiel de mon point est que malgré l'ancienne documentation, il semble pris en charge d'utiliser ce site portal.azure (et sera bientôt la SEULE chose prise en charge).


Merci. J'ai créé un élément de travail interne pour Microsoft afin de remplacer les instructions d'enregistrement AAD actuelles par des instructions pour l'expérience azure.portal avant mai. Je ne sais pas si les nouvelles instructions correspondront à votre réponse à cette question; mais jusqu'en mai, je recommande aux gens d'utiliser les instructions existantes, conformément à la réponse de @RohitSaigal. Au moins jusqu'en mai, c'est une bonne réponse. Merci d'avoir porté ce changement à notre attention.