2017-01-11 1 views
1

Ich bin in CORS Probleme beim Versuch, Dynamics WS von einer externen HTML-Seite aufzurufen.authentifizieren Dynamics CRM 2016 Ruhe Webservice von externen System

Ich schaute auf wie man CORS auf dem Server aktivieren und tat dies, indem Sie die folgenden Zeilen in die web.config der CRM-Website setzen.

<system.webServer> 
    <httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
    </httpProtocol> 
</system.webServer> 

Dies schien die CORS Problem zu lösen, aber dann einen neuen Fehler ausgelöst, der erklärte:

Authentifizierung

fehlgeschlagen

Ich benutzte das REST Builder Werkzeug, um den JavaScript-Code zu generieren. Ich bin mir jedoch nicht sicher, wie ich den Anruf authentifizieren soll.

Der Code ich benutze ist wie folgt:

var entity = {}; 
entity.new_name = "John Smith"; 
entity.new_guid = "KHU464KOU3"; 

var req = new XMLHttpRequest(); 
req.open("POST", "http://crmsitedomain.com/api/data/v8.2/new_consumer", true); 
req.setRequestHeader("OData-MaxVersion", "4.0"); 
req.setRequestHeader("OData-Version", "4.0"); 
req.setRequestHeader("Accept", "application/json"); 
req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
req.onreadystatechange = function() { 
    if (this.readyState === 4) { 
     req.onreadystatechange = null; 
     if (this.status === 204) { 
      alert("Created"); 
     } else { 
      alert(this.status); // is returning "0" 
     } 
    } 
}; 
req.send(JSON.stringify(entity)); 

Ich sehe einen „Token Header“ und „Impersonate“ Optionen im Werkzeug, aber wo bekomme ich die Werte für diese Parameter?

+0

nur über diese. Hast du eine Antwort gefunden? (Wenn Sie eine haben, wäre es toll, Ihre eigene Frage zu beantworten.) Während Sie meine eigenen Recherchen durchführen, scheint es so, als müssten Sie Ihre App bei Azure Active Directory registrieren. Siehe hier: https://msdn.microsoft.com/en-gb/library/gg327838.aspx – Chris76786777

Antwort

3

Erstens würde ich diese Änderungen an der CRM-Website web.config rückgängig machen, Ihre nicht wirklich gemeint, um die Anwendungsdateien zu ändern, ist es wahrscheinlich nicht unterstützt, und ist unwahrscheinlich, Ihr Problem zu beheben.

Der MSDN beschreibt, wie Sie Authenticate to Microsoft Dynamics 365 with the Web API erfolgreich authentifizieren können.

Es ist ein bisschen langatmig, hier zu reproduzieren, also überprüfen Sie bitte die Links.

Mit Microsoft Dynamics 365 (online) oder Internet gegenüber Implementierungen Wenn Sie den Web-API für Dynamics 365 (online) oder ein lokalen das Internet verbundenen Einsatz (IFD) verwenden, müssen Sie OAuth verwenden, wie beschrieben Connect to Microsoft Dynamics 365 web services using OAuth.

Wenn Sie eine einzelne Seitenanwendung (SPA) mit JavaScript erstellen, können Sie die Bibliothek adal.js wie in Use OAuth with Cross-Origin Resource Sharing to connect a Single Page Application to Microsoft Dynamics 365 beschrieben verwenden.

+0

Ja, ich bin mir bewusst 'adal.js'. Aber kann es gemacht werden, ohne auf andere Bibliotheken angewiesen zu sein? – asprin

0

Haben Sie this MSDN Seite gesehen? Dies ist für Web-API, nicht WS, aber es ist fast das gleiche

+0

Ja, ich kenne "adal.js". Aber kann es gemacht werden, ohne auf andere Bibliotheken angewiesen zu sein? – asprin

Verwandte Themen