2012-04-02 12 views
12

Salesforce.com APIは、常にそのアプリをアクティブユーザーとして使用することを前提としているようです。彼らの認証方法(セッションIDとOAuth)は両方をサポートするため、認証されたユーザーに "何かをする"必要があるため、これをサポートしています。バックグラウンドアプリのSalesforce.com API認証のベストプラクティス

APIにアクセスする必要のあるバックグラウンドアプリを使用する場合の戦略は何ですか?私が見た例では、ユーザー名、パスワード、セキュリティトークンなどの完全な資格情報を求めています。その情報を知りたい、または保存したくないだけでなく、(パスワードポリシーなどから)変更することができます。そのためにアプリケーションが中断しないようにしたいと思います。

ユーザーの操作を必要としないSFDC APIへの長期間の認証の「ベストプラクティス」とは何ですか?

+0

正直なところ、私は同じ問題があります。 90日ごとに、SFアプリケーションのパスワードが必要なため、SFアプリケーションのパスワードを更新する必要があります。リアルピタ – Josh

+1

変更のないデータと期限切れのないパスワードを持つユーザーのみを作成できますか?それとも、APIへのアクセス以外にも他のことをする必要がありますか? – Gobbledigook

+1

私は、他人が理想的に使うアプリを作っています。だから、みんなに頼む必要があるでしょう。 SFDCユーザーアカウントは高価ですので、これは非常に魅力的な選択肢ではありません。また、パスワードポリシーは個人レベルではなく組織レベルで設定されていると思います。 –

答えて

10

Salesforce.com APIリクエストは、sessionId(別名access_token)(サイト経由で公開される認証されていないカスタムAPI)が識別するユーザーのコンテキストで動作します。

APIコールを作成するには、sessionIdが必要です。必要に応じてusername/password/securityトークンを保存し、login(またはoauth2のユーザー名/パスワードの流れ)を呼び出すことで得ることができます。

また、対話型のOAuthフローを使用することもできます。これにより、ユーザーはアプリケーションの認証を1回だけ行う必要があります。その時点で、更新トークンと呼ばれる長いトークンが与えられます。その後、oauth2トークン・サービスを使用して、リフレッシュ・トークンを使用して新しいaccess_token(APIコールを作成できる)を取得できます。

このような最後のアプローチはニーズに最も適しているようですが、これは最初にアプリケーションを許可するために1回だけのユーザー操作が必要です。

+0

ありがとう、私は対話型OAuthフロー。私は一度の承認でOKです(実際にはそういうことが期待されます)。毎回許可する必要はありません。 –

+1

ここに挙げた方法のリンクがいくつかあります:https://na1.salesforce.com/help/doc/en/remoteaccess_oauth_web_server_flow.htmとhttps://na1.salesforce.com/help/doc/en/remoteaccess_oauth_refresh_token_flow.htm –

0

残念ながら、SF APIにアクセスするには、アカウントを使用する必要があります。最初はリモートアクセスを作成する目的はこれを避けることだと思っていましたが、残念ながらそうではありません。

私がやっていることがベストプラクティスの方法であるかどうかはわかりませんが、この目的のために作成したAPI固有のユーザーを使用して、構成ファイルに資格情報を格納し、DPAPIを使用してパスワードを暗号化しています。私はSOAP WSを使用しているので、login(username、psswd)を呼び出し、その後の呼び出しでそのセッションIDを使用します。代わりにOAuth 2.0を使用してセッションIDを取得することもできますが、これにはリモートアクセスアプリケーションを作成する必要があります。はまだにユーザ名/パスワードが必要です。

関連する問題