Sono stato incaricato di integrare il nostro CRM multi-cliente con Salesforce.com. Sto andando a scrivere un servizio basato su server che invierà informazioni da ciascuno dei nostri datastore CRM clienti a Salesforce. Mi piacerebbe utilizzare l'API REST di SFDC, ma se possibile, è possibile utilizzare l'API SOAP.Miglior approccio di sicurezza per l'integrazione di Salesforce.com con .NET Server C#
Sto lottando per capire il miglior meccanismo di sicurezza da utilizzare. Poiché la soluzione sarà basata su server, è essenziale che non sia necessaria alcuna interazione da parte dell'utente durante la connessione a SFDC. Il nostro server deve essere in grado di stabilire una connessione sicura a SFDC senza che l'utente fornisca le proprie credenziali di accesso.
Finora ho sperimentato con l'API REST e OAuth2.0. Ho configurato un account SFDC di test e configurato la nostra app al suo interno, ottenendo la chiave del consumatore, la chiave segreta e il callback uri. Tutto funziona e la mia pagina di richiamata riceve un token di sicurezza. La mia pagina di callback utilizza il token forniti come segue:
string rc = "";
try
{
string uri = "https://eu2.salesforce.com/services/data/v20.0/sobjects/";
System.Net.WebRequest req = System.Net.WebRequest.Create(uri);
req.Method = "GET";
req.Headers.Add("Authorization: Bearer " + token);
System.Net.WebResponse resp = req.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
rc = "code=" + code + ", response=" + sr.ReadToEnd().Trim();
}
catch (Exception ex)
{
rc = "45435465 Token=" + token + ", err=" + ex.Message;
}
return rc;
Il problema è che, ogni volta che corro questo ho ricevuto una risposta (non autorizzato) 401 da SFDC, anche se sto passando il token di protezione fornito da SFDC.
L'API REST è l'approccio corretto per l'accesso "non presidiato" come questo, e qualcuno può consigliare cosa sto facendo male nel mio codice o offrire parole di saggezza su come farlo funzionare?
Molte grazie.