Sto cercando di ottenere un esempio funzionante di autenticazione di un'applicazione MVC in .NET contro Salesforce utilizzando il loro flusso di lavoro di autenticazione OAuth
. Ho fatto riferimento a this walkthrough che è abbastanza semplice. È molto simile al fatto che l'autenticazione di Google funzioni. Si riduce all'impostazione del progetto .NET MVC con il modello di autenticazione dell'account individuale e crea una nuova applicazione connessa in Salesforce. Quindi aggiungere la libreria Owin.Security.Providers
per Salesforce, regolare un po 'lo Startup.Auth.cse includere ClientId
e ClientSecret
dall'app Salesforce e gli endpoint Autorizzazione e Token. L'URL di richiamata che suggerisce è http://localhost:[port]/signin-salesforce che è molto simile all'URL di richiamata utilizzato per l'autenticazione di Google.MVC autenticazione OAuth con Salesforce ritorna alla pagina di login
Mentre sono reindirizzato a Salesforce e posso accedere, la stretta di mano che mi riporta alla mia applicazione MVC sembra incontrare un problema che non riesco a definire. Vengo reindirizzato alla pagina di accesso e .NET non sembra essere a conoscenza delle mie informazioni di accesso, anche se ho sicuramente una sessione attiva con Salesforce (il dashboard di Salesforce mi collegherà automaticamente). Nel codice, le cose cominciano ad andare di traverso qui:
// GET: /Account/ExternalLoginCallback
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
//more code we never reach
}
loginInfo
è sempre nullo. Così, per capire che tipo di richiesta viene inviato a NET, ho girato a Fiddler e incontrato una richiesta contro localhost:[port]/signin-salesforce
con un gruppo di parametri che ottiene una risposta curiosa:
HTTP/1.1 302 Trovato
?Località:/account/ExternalLoginCallback errore = ACCESS_DENIED
Server: Microsoft-IIS/10.0
Set-Cookie: .AspNet.Correlation.Salesforce =; percorso = /; scade = Thu, 01-gen-1970 00:00:00 GMT
X-SourceFiles: = UTF-8 B YzpcdXNlcnNcc3RldmUuY2FtaXJlXGRvY3VtZW50c1x2aXN1YWwgc3R1ZGlvIDIwMTVcUHJvamVjdHNcU2FsZXNGb3JjZUludGVncmF0aW9uXFNhbGVzRm9yY2VJbnRlZ3JhdGlvblxzaWduaW4tc2FsZXNmb3JjZQ == =
X-Powered-By:???? ASP.NET
Data: Fri, 20 maggio 2016 21:46:09 GMT
Content-Length: 0
nota l'intestazione Location , che dice a .NET di reindirizzare a /Account/ExternalLoginCallback
con un parametro di errore "access_denied". Abilitando un po 'di tracciato inrivela che qualcosa restituisce un 400 in .NET o su .NET, ma non so cosa sia.
Quindi, è lì che sono. Un oggetto loginInfo null
nel controller e la prova che qualcosa sta andando storto in alcune richieste web. Ho esaminato diverse altre domande correlate, ma quasi nessuna si concentra su SalesForce e fornisce risposte che non sono realmente applicabili (ad esempio, non ho API di Google+ da abilitare). Qualche idea su come rettificare questo?
Hai trovato una soluzione a questo? Ho lo stesso problema. – vaibinewbee
@vaibinewbee Purtroppo, non l'ho fatto. Lo stavo facendo per alcune ricerche, che ho finito per non dover completare, quindi non ho continuato a cercare una soluzione. Considerando la completa mancanza di attività su questa domanda, suggerirei di raggiungere alcuni forum di Salesforce o di contattare direttamente Salesforce. Se lo risolvi, condividi la risposta qui. Ho un segno di spunta verde in attesa di essere utilizzato su un'ottima risposta. – Ellesedil
per favore non testare le autenticazioni esterne con 'localhost'. Provalo nel dominio del mondo reale e dimmi il risultato. –