Loading
識別使用者與管理存取
OAuth 1.0.A 流程

OAuth 1.0.A 流程

如果組織使用 OAuth 1.0.A 通訊協定,請使用此授權流程,透過連線應用程式來整合用戶端與 Salesforce API。

必要版本

提供版本:Salesforce Classic 與 Lightning Experience
提供版本:所有版本
需要的使用者權限
管理、建立、編輯和刪除 OAuth 應用程式: 「管理已連線的應用程式」權限

這裡是主要的授權步驟。

小秘訣
小秘訣 若要在 Sandbox 使用連線的應用程式,請在下列區段中使用 test.salesforce.com 而非 login.salesforce.com

如需 Salesforce 所傳回可能錯誤碼的清單,請參閱 OAuth 1.0.A 錯誤碼

要求要求權杖

若要起始 OAuth 1.0.A 流程,連線應用程式會將要求傳送至 Salesforce OAuth 要求權杖處理常式端點 (https://login.salesforce.com/_nc_external/system/security/oauth/RequestTokenHandler)。

在要求中包含以下 OAuth 參數。

參數 描述
oauth_consumer_key 連線的應用程式取用者金鑰。若要存取取用者金鑰,請在「應用程式管理員」中尋找連線的應用程式,然後從下拉式清單選取「檢視」。然後按一下「管理取用者細節」。有時會要求您驗證身分。
oauth_signature_method OAuth 簽章方法必須是此流程的 HMAC-SHA1。
oauth_signature

登入所用的 OAuth 簽章,您會根據 HMAC-SHA1 的 OAuth 規格來產生此簽章。

您可以使用下列其中一種方法來產生 oauth_signature

  • 使用介面—使用 https://login.salesforce.com 來產生簽章。
  • API—使用 https://login.salesforce.com/services/OAuth/type/api-version 來產生簽章。

    type 必須是下列其中一個值。

    • u—Partner WSDL
    • c—企業 WSDL
    例如,https://login.salesforce.com/services/OAuth/u/17.0
oauth_timestamp 建立簽章時的時間戳記。
oauth_nonce 選擇性。允許服務提供者確認以前是否發出要求,並協助避免重新執行攻擊。
oauth_version 選擇性。如果包含,則此流程的 OAuth 版本必須為 1.0。
oauth_callback

必須是以下其中一個值:

  • 客戶代管的 URL,例如 https://www.appirio.com/sfdc_accounts/access_token_ready.html。此 URL 使用 HTTPS 或其他通訊協定。它無法使用 HTTPS。
  • oob,意即非色帶。

在 Salesforce 接收要求後,其會執行以下動作:

  • 驗證要求是否具備其消費者密碼的專屬複本。
  • 產生回應,其中包含在 HTTP 內文中的要求權杖和要求權杖密碼作為名稱和值配對。
  • 將回應傳送回給銷售者。

要求權杖的有效期間為 15 分鐘,再加上另外 3 分鐘的時間因應電腦時鐘的誤差。

使用者授權存取權

在連線應用程式發出要求權杖的初始要求後,使用者會收到授權存取權的提示。

  • 連線應用程式會將使用者重新導向至 https://login.salesforce.com/setup/secur/RemoteAccessAuthorizationPage.apexp。適當的 GET 查詢參數會附加於此 URL 之後。
    • oauth_token (要求權杖)
    • oauth_consumer_key
    備註
    備註 如果包含 oauth_callback 參數,則會忽略該參數。
  • 使用者會收到提示,要求在「遠端存取授權」頁面上授權連線應用程式的存取權。
  • 在使用者授權存取權後,Salesforce 會產生存取權杖和存取權杖密碼。
    備註
    備註 使用者可以將有限數量的同時存取權杖授與給應用程式。預設為每個使用者的每個應用程式有五個。如果此授權超過組織的限制,則使用者會收到通知,且系統會撤銷前一個使用的權杖。
  • Salesforce 會如下確認回呼 URL 並重新導向使用者。
    • 如果要求權杖中定義的 oauth_callbackoob,且連線應用程式的回呼 URL 有效,則會將使用者重新導向至該 URL。
    • 如果要求權杖中定義的 oauth_callback 是有效的 URL,則會將使用者重新導向至該 URL。

要求存取權杖

在使用者授權連線應用程式的存取權後,連線應用程式就可以交換要求權杖來要求存取權杖。此會對 https://login.salesforce.com/_nc_external/system/security/oauth/AccessTokenHandler 發出 HTTPS GET 或 POST 要求。在查詢或貼文資料中包含這些參數。

參數 描述
oauth_consumer_key 連線的應用程式取用者金鑰。若要存取取用者金鑰,請在「應用程式管理員」中尋找連線的應用程式,然後從下拉式清單選取「檢視」。然後按一下「管理取用者細節」並驗證身分。
oauth_signature_method OAuth 簽章方法必須是此流程的 HMAC-SHA1。
oauth_signature 登入所用的 OAuth 簽章,您會根據 HMAC-SHA1 的 OAuth 規格產生此簽章。請參閱 oauth_signature
oauth_timestamp 建立簽章時的時間戳記。
oauth_token 連線應用程式在其初始要求中接收的要求權杖。
oauth_nonce 選擇性。允許服務提供者確認以前是否發出要求,並協助避免重新執行攻擊。
oauth_verifier 連線應用程式在其初始要求中接收的要求權杖密碼。
oauth_version 選擇性。如果包含,則此流程的 OAuth 版本必須為 1.0。

Salesforce 會在要求中驗證這些元素:

  • 消費者密碼
  • 消費者金鑰
  • 簽署
  • 是否在以前曾使用過要求權杖
  • 時間戳記 (必須在 15 分鐘內,再加上另外 3 分鐘的時間因應電腦時鐘的誤差)
  • 先前是否曾使用過該亂數

驗證後,Salesforce 會在 HTTP 回應內文中傳回存取權杖和存取權杖密碼作為名稱和值配對。

存取資料

在連線應用程式擁有有效的存取權杖後,就能夠透過將要求張貼至 https://login.salesforce.com,以存取 Salesforce 資料。以下參數會包含在 HTTP POST 授權標頭中。

參數 描述
oauth_consumer_key 連線的應用程式的取用者金鑰若要存取取用者金鑰,請在「應用程式管理員」中尋找連線的應用程式,然後從下拉式清單選取「檢視」。然後按一下「管理取用者細節」。有時會要求您驗證身分。
oauth_token 連線應用程式透過 Salesforce 接收的存取權杖。
oauth_signature_method OAuth 簽章方法必須是此流程的 HMAC-SHA1。
oauth_signature 登入所用的 OAuth 簽章,您會根據 HMAC-SHA1 的 OAuth 規格產生此簽章。請參閱 oauth_signature
oauth_timestamp 建立簽章時的時間戳記。
oauth_nonce 選擇性。允許服務提供者確認以前是否發出要求,並協助避免重新執行攻擊。
oauth_version 選擇性。如果包含,則此流程的 OAuth 版本必須為 1.0。

Salesforce 會驗證要求,並將有效的工作階段識別碼傳送至連線應用程式。工作階段識別碼是短暫的且僅對 frontdoor.jsp 有效。若要取得可直接使用的工作階段識別碼,請使用 API 存取權杖交換。

使用 API 存取 Salesforce 資料

連線的應用程式擁有有效的存取權杖時,其就可以使用 Lightning 平台 API 來存取 Salesforce 資料。連線應用程式可以將要求張貼至 https://login.salesforce.com/services/OAuth/type/api-version

使用以下值來取代 URL 變數:

  • type 必須是下列其中一個值。
    • u—Partner WSDL
    • c—企業 WSDL
  • Api-version 必須是有效的 API 版本。

將以下參數包含在 HTTPS POST 授權標頭。

參數描述
oauth_consumer_key 連線的應用程式取用者金鑰。若要存取取用者金鑰,請在「應用程式管理員」中尋找連線的應用程式,然後從下拉式清單選取「檢視」。然後按一下「管理取用者細節」。有時會要求您驗證身分。
oauth_token 連線應用程式透過 Salesforce 接收的存取權杖。
oauth_signature_method OAuth 簽章方法必須是此流程的 HMAC-SHA1。
oauth_signature 登入所用的 OAuth 簽章,您會根據 HMAC-SHA1 的 OAuth 規格產生此簽章。請參閱 oauth_signature
oauth_timestamp 建立簽章時的時間戳記。
oauth_nonce 選擇性。允許服務提供者確認以前是否發出要求,並協助避免重新執行攻擊。
oauth_version 選擇性。如果包含,則此流程的 OAuth 版本必須為 1.0。

Salesforce 會驗證要求,並且將有效的工作階段識別碼傳送給客戶。回應標頭包含以下內容。

<response>
    <metadataServerUrl>https://yourInstance.salesforce.com/services/Soap/m/17.0/00D300000006qjK
    </metadataServerUrl>
    <sandbox>false</sandbox>
    <serverUrl>https://yourInstance.salesforce.com/services/Soap/u/17.0/00D300000006qjK
    </serverUrl>
    <sessionId>00D300000006qrN!AQoAQJTMzwTa67tGgQck1ng_xgMSuWVBpFwZ1xUq2kLjMYg6Zq
       GTS8Ezu_C3w0pdT1DMyHiJgB6fbhhEPxKjGqlYnlROIUs1</sessionId>
</response>

 
正在載入
Salesforce Help | Article