2016-11-02 6 views
1

Ich muss auf CRM-OData-REST-API für die Integration zugreifen. Ich habe einen PHP Cron-Job für die Synchronisierung von Daten aus CRM. Wenn ich den Endpunkt der CRM WEB API https://internal.crm.org.com:5443/appname/api/data/v8.0/ vom Browser treffe, leite ich auf den folgenden Link um: https://adfs.crm.org.com/adfs/ls/?wa=wsignin1.0&wtrealm=https://internal.crm.org.com:5443/&wctx=rm=1&id=4d65271b-682e-44bb-80ce-ed44b5370ed7&ru=%2forgTechnicalTraining%2fdefault.aspx&wct=2016-11-02T07:15:47Z&wauth=urn:federation:authentication:windows und ein Fenster wird angezeigt, um sich mit Benutzername und Passwort zu authentifizieren.Zugriff auf Microsoft Dynamics CRM 2016-REST-WEB-API

Also meine Frage ist, wie mit dem Ressourcen-Server zu authentifizieren? Microsoft zeigen Sie mir auf dieser Seite https://msdn.microsoft.com/library/mt622431.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 und dieser Typ erklären, wie oauth2 http://www.powerobjects.com/2016/01/22/start-your-engines-getting-started-with-the-crm-2016-web-api/#collapse2

Microsoft die Dynamik 365 authentifizieren wird drei verschiedene Sicherheitsmodelle (Ansprüche, aktive dirctory und AUTH2 Authentifizierungen) mit

+0

Ihr Link scheint inkorrekt zu sein. Bitte reparieren Sie das! – zx485

+0

Ich weiß, es ist nur ein Beispiel mit diesem Format falsch –

Antwort

2

I haben erfolgreich mit CRM web api 2016 das ws-trust-Protokoll integriert.

This lib sind die schwere Arbeit für Sie und implment die WS-Trust-Protokoll-Nachrichten. Schritte zum Authentifizieren mit CRM, das von ADFS 3.0 protokolliert wird. 1- Das gleiche Sicherheitstoken anfordern (der Endpunkt für ws-trust für aktive Authentifizierung muss auf dem adfs-Server konfiguriert werden). 2-2- Dieses Token pro HTTP-Anforderung in die Kopfzeile einschließen als earer token Code:

<?php 

include_once dirname(dirname(__FILE__)) . '/http.php'; 
include_once dirname(dirname(__FILE__)) . '/wstrust.php'; 

// username/password of a user in the LDAP directory 
// LDAP as configured in the PingFederate Username Token WS-Trust connection settings for Salesforce 
$username = 'username'; 
$password = 'password'; 

// RST appliesTo 
$appliesTo = 'crmservice/api/data/v8.0/'; 

//STS service 
$IPSTS = 'org/adfs/services/trust/13/UsernameMixed'; 

// special token type (needs to be enabled in run.properties) 
$tokenType = WSTRUST::TOKENTYPE_SAML20; 

// call to IP-STS, authenticate with uname/pwd, retrieve RSTR with generated token 
//get security token 
$result = HTTP::doSOAP(
     $IPSTS, 
     WSTRUST::getRSTHeader(
       WSTRUST::getUserNameToken($username, $password), 
       WSTRUST::getTimestampHeader(), $IPSTS), 
     WSTRUST::getRST($tokenType, $appliesTo) 
); 

// parse the RSTR that is returned 
list($dom, $xpath, $token, $proofKey) = WSTRUST::parseRSTR($result); 

$xpath->registerNamespace('saml', 'urn:oasis:names:tc:SAML:2.0:assertion'); 
$token = $xpath->query('saml:EncryptedAssertion', $token); 
$token = $token->item(0); 

// now pass the encrypted assertion to the RP 
$ts = WSTRUST::getTimestampHeader('_0'); 
$token = $dom->saveXML($token); 

//include the token with the http header per request like this Authorization: Bearer $token 
Verwandte Themen