Best Practice für Salesforce.com API-Authentifizierung für die hintergrund-apps
Den Salesforce.com API scheint anzunehmen, dass Sie immer verwenden Sie die app als aktiver Benutzer. Ihre Authentifizierungsmethoden (Session-ID und OAuth) unterstützt dies, da Sie beide erfordern eine authentifizierte Benutzer "etwas tun".
Was ist die Strategie für, wenn Sie haben eine hintergrund-app benötigt Zugriff auf die API? Die Beispiele, die ich gesehen haben, Fragen Sie Ihren vollen Anmeldeinformationen - Benutzername, Passwort und security token. Nicht nur, dass ich nicht wissen will oder speichern dieser Informationen, aber es kann sich ändern (von Passwort-Richtlinien, etc.) und ich würde lieber nicht haben, die app zu brechen, weil die.
Was ist "best practice" für lange lebte Authentifizierung SFDCs APIs, erfordert keine Benutzer-Interaktion?
- Ehrlich gesagt, ich habe das gleiche problem. Alle 90 Tage, wir haben zu gehen und aktualisieren unsere SF Anwendungen Passwörter, weil SF erfordert. Echte PITA.
- Können Sie nicht einfach eine API erstellen nur Benutzer mit Daten ändern und ein Kennwort, das nicht abläuft? Oder muss er noch andere Sachen zu tun außer nur API-Zugriff?
- Ich bin momentan dabei die app, die im Idealfall auch von anderen genutzt werden, so ist dies etwas, das ich haben würde, alle zu Fragen, zu tun. SFDC Benutzerkonten sind teuer, so ist dies nicht eine sehr attraktive option. Außerdem finde ich die Passwort-policy ist auf der org-Ebene, nicht auf der individuellen Ebene.
- Dies könnte helfen (Tat es für mich), salesforce.stackexchange.com/questions/90110/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Salesforce.com API-Anfragen bewegen sich im Kontext eines Nutzers, gekennzeichnet durch eine sessionId (aka access_token) (nicht authentifizierte benutzerdefinierte APIs via Websites ist die einzige Ausnahme).
So, in Reihenfolge zu make-API-Aufrufe, benötigen Sie eine sessionId bekommen Sie eine-wie Sie sagen-durch speichern von Benutzername/Passwort/Sicherheits-token und login aufrufen (oder die oauth2 Benutzername/Passwort-flow), wenn Sie müssen.
Alternativ können Sie über die interaktive OAuth-flow, die erfordert, dass der Benutzer nur einmal die Berechtigung Ihrer Anwendung, und Sie erhalten einen langlebigen token bezeichnet ein refresh token. An keiner Stelle nach, dass Sie können verwenden Sie die oauth2-token service, um einen neuen access_token (die können dann API-Aufrufe) verwenden Sie einfach die refresh-token.
Scheint, wie dieser Letzte Ansatz am besten Ihre Bedürfnisse zu erfüllen, dies würde erfordern, nur eine einmalige Interaktion mit dem Benutzer zunächst autorisieren, Ihre Anwendung.
Leider müssen Sie ein Konto verwenden, um Zugriff auf die SF-APIs. Am Anfang dachte ich, dass der Zweck der Erstellung eines Remote-Access-war zu vermeiden, dies zu tun, aber ach, ist es nicht.
Nicht sicher, ob das, was ich Tue, ist ein best-practice-Weg, Dinge zu tun, aber ich bin mit einem API-spezifische Benutzer, die wir für diesen Zweck erstellt, und die Speicherung der Anmeldedaten in der Konfiguration-Datei und verschlüsseln Sie das Kennwort mit DPAPI. Ich bin mit SOAP WS so nenne ich login-Daten(Benutzername, Kennwort) und ich benutze session-id, die in nachfolgenden aufrufen. Sie könnten alternativ erhalten Sie Ihre session-Id, durch die Verwendung von OAuth 2.0, aber dies erfordert, dass Sie zum erstellen einer Remote-Access-Anwendung, und Sie würden noch müssen einen Benutzernamen/Passwort.
OAuth 2.0-web-server-Authentifizierung ist am besten geeignet für den aktuellen Anwendungsfall.
https://help.salesforce.com/HTViewHelpDoc?id=remoteaccess_oauth_web_server_flow.htm&language=en_US