web-dev-qa-db-fra.com

Echec de l'authentification Salesforce

J'essaie d'utiliser l'authentification OAuth pour obtenir le jeton d'authentification Salesforce. J'ai donc référé wiki docs , mais après l'obtention du code d'autorisation, lorsque je fais une demande de publication avec 5 paramètres obligatoires, l'exception suivante s'affiche. 

{"error":"invalid_grant","error_description":"authentication failure"} CODE 400
JSON = {"error":"invalid_grant","error_description":"authentication failure"}

ce qui est, je suppose, une mauvaise demande.

PostMethod post = new PostMethod("https://login.salesforce.com/services/oauth2/token");
post.addParameter("code",##############);
post.addParameter("grant_type","authorization_code");
post.addParameter("redirect_uri","#################");  
post.addParameter("client_id",this.client_id);
post.addParameter("client_secret",this.client_secret);
httpclient.executeMethod(post);
String responseBody = post.getResponseBodyAsString();
System.out.println(responseBody+" CODE "+post.getStatusCode());

Veuillez répondre, si l'exception est connue?

41
Vardan Gupta

Pour ceux qui sont aussi bloqués et frustrés que moi, j'ai laissé un blog détaillé sur l'ensemble du processus (avec des images et des commentaires élogieux!). Cliquez sur le lien si vous voulez que:

http://www.calvinfroedge.com/salesforce-how-to-generate-api-credentials/

Voici une réponse en texte seul:

Étape 1:

Créer un compte. Vous pouvez créer un compte de développeur (gratuit) sur developer.salesforce.com.


Étape 2:

Ignorer toutes les pages de destination et se lancer merde. C'est une boucle marketing sans fin.


Étape 3:

Cliquez sur le lien "Setup"


Étape 4:

Dans la barre d’outils de gauche, sous "Créer", cliquez sur "Applications".


Étape 5:

Sous "Applications connectées", cliquez sur "Nouveau".


Étape 6:

Remplir le formulaire. Les champs importants sont ceux marqués comme requis et la section oauth. Notez que vous pouvez laisser n'importe quelle URL pour votre rappel (j'ai utilisé localhost).


Étape 7:

Sachez que Salesforce a une disponibilité médiocre.


Étape 8:

Appuyez sur Continuer. Vous avez enfin votre clé client_id (intitulée «Consumer Key») et votre client_secret (intitulée «Consumer Secret»).


Étape 9:

Mais attendez! Vous n'êtes pas encore fini. sélectionnez 'Manage' puis 'Edit Policies'

  1. Assurez-vous que relaxation IP _ est défini sur assouplir les restrictions IP

  2. et assurez-vous que Utilisateurs autorisés est défini sur "Tous les utilisateurs peuvent s'auto-autoriser".

  3. et assurez-vous également que votre Sécurité> Accès au réseau> Plages IP de confiance a été définie

 OAuth settings

 Security > Network Access > Trusted IP Ranges

Si vous êtes préoccupé par la désactivation de la sécurité, ne soyez pas pour le moment, vous voulez simplement que cela fonctionne pour le moment afin que vous puissiez passer des appels d'API. Resserrez les autorisations une fois que tout fonctionne, une à la fois, pour vous permettre de déterminer le paramètre qui vous donne des erreurs d'authentification.


Étape 10:

Célébrer! Cet appel curl devrait réussir:

sur production:

curl -v https://login.salesforce.com/services/oauth2/token \
  -d "grant_type=password" \
  -d "client_id=YOUR_CLIENT_ID_FROM_STEP_8" \
  -d "client_secret=YOUR_CLIENT_SECRET_FROM_STEP_8" \
  -d "[email protected]" -d "[email protected]"

sur bac à sable ou test:

curl -v https://test.salesforce.com/services/oauth2/token \
  -d "grant_type=password" \
  -d "client_id=YOUR_CLIENT_ID_FROM_STEP_8" \
  -d "client_secret=YOUR_CLIENT_SECRET_FROM_STEP_8" \
  -d "[email protected]" -d "[email protected]"

Remarques:

  • Vous ne devez pas autoriser de mot de passe si vous créez une application à plusieurs locataires, où les utilisateurs doivent autoriser leur propre application. Utilisez le flux de travail Oauth2 pour cela.

  • Vous devrez peut-être transmettre votre jeton de sécurité ajouté à votre mot de passe.

117
Calvin Froedge

Měli jsme i tento problém.

Zkontrolujte svůjConnected Appnastavení - podSelected OAuth Scopes, budete muset upravit vybraná oprávnění. Naše aplikace využívá především Chatter , takže jsme museli přidat oba:

  • Přístup ke zdroji chatu a jeho správa (chatter_api)
  • Provádějte požadavky ve vašem zastoupení kdykoliv (refresh_token).

Cliquez sur le bouton "Ajouter au panier", cliquez sur "Ajouter au panier" pour obtenir un aperçu du résultat.

En savoir plus, en savoir plus chyba invalid_grant nastala kvůli omezení IP. Liste des adresses, des adresses IP, des noms de domaine, des noms de domaine, etc. Zjistil jsem, pokud prostředí SFDC má nastavení omezení IPEnforce IP restrictionsset (Setup->Administer->Manage Apps->Connected Apps), pak každý Profil utilisateur Musí mít také povolené Adresse de propriété intellectuelle.

14
dotNetkow

Salesforce exige une mise à niveau vers TLS 1.1 ou une version ultérieure avant le 22 juillet 2017 afin de s'aligner sur les meilleures pratiques de l'industrie en matière de sécurité et d'intégrité des données: de help.salesforce.com .

essayez d'ajouter ce code:

System.Net.ServicePointManager.SecurityProtocol = 
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

Une autre option consiste à modifier votre base de registre:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

Vérifiez ce lien pour des réponses plus détaillées: SecurityProtocol par défaut dans .NET 4.5

5
Amir M

Pour ajouter une plage d'adresses IP à la liste blanche, procédez comme suit:

  1. Cliquez sur Setup en haut à droite
  2. Sélectionnez Administer> Security Controls> Network Access dans le menu de navigation de gauche.
  3. Cliquez sur New
  4. Ajoutez votre plage d'adresses IP
  5. Cliquez sur Save
3
Troy Harvey

TL: DR

Pour OAuth 2 jetons si vous vous connectez ...

Récit:

  1. Je suivais Salesforce "Configurer OAuth 2.0"
  2. Les informations d'identification étaient correctes (plusieurs vérifications caractère par caractère)
  3. Quand j'appelais curl https://login.salesforce.com/services/oauth2/token -d "...credentials...", il échouait toujours avec:

    {"error":"invalid_grant","error_description":"authentication failure"}

Solution:

Nous nous sommes rendu compte qu'il existe différents environnements OAuth lors de la lecture de - Approfondir nos connaissances sur OAuth 2.0 dans Salesforce spécifiquement (accentuation ajoutée):

Points de terminaison d'authentification OAuth 2.0

Les points finaux OAuth sont les URL que vous utilisez pour effectuer des demandes d'authentification OAuth auprès de Salesforce. Lorsque votre application effectue une demande d'authentification, vérifiez que vous utilisez le bon point de terminaison Salesforce OAuth. Les principaux paramètres sont:

Au lieu de login.salesforce.com, les clients peuvent également utiliser le Mon domaine, communauté ou test.salesforce.com (sandbox) domaines de ces noeuds finaux.

Réparer

Comme je me suis connecté à mon environnement via test.salesforce.com, le passage à curl https://test.salesforce.com/services/oauth2/token -d "...credentials..." a provoqué un "Félicitations! (> ^ _ ^)> Donner une réponse au jeton OAuth"

3
3ygun

Remplacez votre mot de passe Salesforce par une combinaison du mot de passe et du jeton de sécurité. Par exemple, si votre mot de passe est "MyPassword" et votre jeton de sécurité est "XXXXXX", vous devrez entrer "MyPasswordXXXXXX" dans le champ du mot de passe.

Si vous ne possédez pas le jeton de sécurité, vous pouvez le réinitialiser comme indiqué ci-dessous.

  • Accédez à Votre nom -> Mes paramètres -> Personnel -> Réinitialiser mon jeton de sécurité.
1
Satish Tata

Vous pouvez appeler votre contrôleur APEX à l’aide de Postman si vous entrez la clé du consommateur et le secret du consommateur dans les paramètres du jeton d’accès - vous n’avez pas besoin du jeton de sécurité pour cela.

Configurez l'autorisation comme sur cette capture d'écran ...

Postman OAuth 2.0

Et entrez vos informations d'identification dans la fenêtre après avoir cliqué sur le bouton Obtenir un nouveau jeton d'accès ...

Obtenir un jeton d'accès

Cliquez ensuite sur le bouton Demander un jeton pour générer un jeton, puis sur le bouton Utiliser un jeton. Le champ Jeton d'accès sera alors renseigné dans l'onglet Autorisation où vous appuierez sur le bouton Obtenir un nouveau jeton d'accès.

0
Kevin

Je frappais ma tête contre le bureau en essayant de faire fonctionner cela. Il s’est avéré que mon problème était de copier-coller, ce qui a gâché le "caractère. Je suis allé et j'ai tapé manuellement" cela collé dans la ligne de commande et puis ça a marché.

0
That Guy