Loading
識別使用者與管理存取
目錄
選取篩選

          沒有結果
          沒有結果
          以下是搜尋小祕訣

          檢查關鍵字的拼字。
          使用較常見的搜尋字詞。
          選取較少篩選條件以擴大您的搜尋。

          搜尋所有 Salesforce 說明
          OAuth 2.0 混合式 Web 伺服器流程

          OAuth 2.0 混合式 Web 伺服器流程

          使用 OAuth 2.0 混合式Web 伺服器流程,可供混合式 Web 伺服器流程直接管理 Web 工作階段。當授權伺服器授與存取權杖時,會在其回應中包括要求網域的工作階段識別碼 (SID)。然後混合式應用程式便可設定 Lightning、Visualforce 和內容網域 Cookie,並將存取權杖橋接至 Web 工作階段,以提供不間斷的服務。

          必要版本

          提供版本:Salesforce Classic (並非所有組織皆適用) 和 Lightning Experience
          提供版本:所有版本

          混合式 Web 伺服器流程會遵循與在「桌面或行動應用程式整合」的 OAuth 2.0 使用者代理程式流程中使用的相同授權步驟,但混合式 Web 伺服器流程使用 hybrid_auth_code 作為其授與類型除外。例如,您為銷售部門建立混合式應用程式以隨時隨地存取資訊,包括可追蹤最具銷售潛力的潛在客戶顯示面板。此應用程式會遵循以下步驟,實作混合式應用使用者代理程式權杖流程。

          • 若要將混合式應用程式與 Salesforce API 整合,請建立外部用戶端應用程式。啟用 OAuth 設定,然後將這些 OAuth 範圍指派給外部用戶端應用程式。
            • lightning
            • content
            • refresh_token
            • visualforce
            • web
          • 一般使用者開啟應用程式後,會重新導向至 Salesforce 進行驗證及授權應用程式。
          • 在使用者批准此授權流程的存取權後,應用程式會從 Salesforce 收到重新導向 URL 的回呼,這會 ⁇ 取存取與重新整理權杖。也包含各自網域的 Visualforce、Lightning 和內容 SID,以及讓應用程式能直接橋接 Web 工作階段的工作階段 Cookie。
            備註
            備註 只有在外部用戶端應用程式未啟用重新整理權杖輪換時,此流程才支援 JWT 型存取權杖。如果啟用重新整理權杖輪換,則權杖要求會傳回 invalid_grant 錯誤。
          • 應用程式會設定 Lightning、Visualforce 和內容網域的工作階段 Cookie,並將存取權杖橋接至 Web 工作階段。
          • 使用者無須中斷工作階段,即可存取最具銷售潛力的潛在客戶顯示面板。

          要求授權代碼

          若要起始 OAuth 2.0 混合式 Web 伺服器流程,外部 Web 服務會透過外部用戶端應用程式,使用授權代碼授與類型將授權代碼要求張貼至 Salesforce 授權端點。透過授權代碼,外部用戶端應用程式可以證明其已獲得網站的安全訪客授權,且具有要求存取權杖的權限。

          授權代碼的組成形式為 HTTP 重新導向,如此範例所示。

          https://MyDomainName.my.salesforce.com/services/oauth2/authorize?
          client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
          redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback&
          response_type=code

          在授權代碼要求中包含這些參數。

          參數 描述
          Request Header Salesforce OAuth 2.0 授權端點。外部用戶端應用程式會將 OAuth 授權要求傳送至此端點。
          client_id 外部用戶端應用程式的取用者金鑰。若要存取取用者金鑰,請進入「外部用戶端應用程式管理員」,找到外部用戶端應用程式,然後從下拉式清單中選取「編輯設定」。然後展開「OAuth 設定」區段,然後按一下「取用者金鑰和密碼」。有時系統會提示您在檢視消費者金鑰前先驗證身分。
          redirect_uri 在成功驗證後,將使用者重新導向至其中的 URL。重新導向 URI 必須符合外部用戶端應用程式其「回呼 URL」欄位中的其中一個值。否則批准會失敗。您可以在外部用戶端應用程式的「OAuth 設定」頁面上找到重新導向 URI。這個值必須經過 URL 編碼。
          response_type 外部用戶端應用程式要求的 OAuth 2.0 授與類型。此流程的值必須是 code 以表示外部用戶端應用程式正在要求授權代碼。

          您也可以在授權代碼要求中包含這些參數。

          參數 描述
          scope

          定義外部用戶端應用程式可存取之受保護資源類型的權限。您在建立外部用戶端應用程式時將範圍指派給外部用戶端應用程式,且這些範圍會包含在授權流程期間的 OAuth 權杖中。

          如果您未包含此參數,則會要求指派給外部用戶端應用程式的所有範圍。傳入此參數的範圍必須為註冊範圍的子集。如需有效參數,請參閱 OAuth 權杖和範圍

          state 外部 Web 服務要求傳送至回呼 URL 的任何狀態。這個值必須經過 URL 編碼。
          immediate

          判斷使用者是否收到登入與批准提示的布林值。預設值為 false。如果您將此參數設定為 true,則會發生下列其中一個情況。

          • 如果使用者登入,且先前曾批准用戶端的存取權,Salesforce 就會略過此批准步驟。
          • 如果使用者尚未登入或先前尚未批准用戶端的存取權,則 Salesforce 會立即以 immediate_unsuccessful 錯誤碼終止。

          immediate 選項不適用於 Experience Cloud 網站。

          code_challenge

          指定權杖要求中 code_verifier 值的 SHA256 雜湊值。設定此參數來協助避免授權代碼攔截攻擊。此值必須如 https://tools.ietf.org/html/rfc4648#section-5 中定義的方式以 base64url 編碼。

          如果在權杖要求中指定 code_verifier,則需要此參數。

          • 如果授權要求中提供 code_challenge 值,且權杖要求中提供 code_verifier 值,則 Salesforce 會將 code_challengecode_verifier 比較。如果 code_challenge 無效或不相符,則登入會失敗並顯示 invalid_request 錯誤碼。
          • 如果授權要求中提供 code_challenge 值,但權杖要求中未提供 code_verifier 值,則登入會失敗並顯示 invalid_grant 錯誤碼。
          display

          變更登入與授權頁面的顯示類型。Salesforce 支援這些值。

          • page—全頁授權畫面 (預設值)。
          • popup—針對現代網頁瀏覽器快顯視窗最佳化的精簡對話方塊。
          • touch—針對 Android 與 iPhone 等現代行動裝置設計的行動最佳化對話方塊。
          • mobile—針對低能力裝置設計的行動最佳化對話方塊,例如 BlackBerry 作業系統 5。
          login_hint

          提供有效的使用者名稱值,以使用使用者名稱 (例如 login_hint=username@company.com) 預先填入登入頁面。如果使用者在瀏覽器中已啟用工作階段,則 login_hint 參數不會執行任何動作,且啟用使用者工作階段會繼續。

          若要傳遞 Experience Cloud 網站的 login_hint 參數,請同時傳遞 prompt=login 參數。這些參數會一起透過正確的登入提示,將使用者重新導向至登入頁面。

          nonce openid 範圍一起使用,以要求使用者識別碼權杖。回應中會傳回使用者識別碼權杖。此參數是選用的,但其可協助偵測重新執行攻擊。
          prompt

          指定授權伺服器如何提示使用者來進行重新驗證與重新批准。Salesforce 支援這些值。

          • login—授權伺服器必須提示使用者進行重新驗證,強制使用者再次登入。
          • consent—授權伺服器必須提示使用者重新批准,才能將資訊傳回給用戶端。
          • select_account—若已呈現,請採取下列其中一個動作。
            • 若零或一個提示可用,且使用者已登入,則會顯示批准頁面而不提示登入。
            • 若零或一個提示可用,且使用者未登入,則會提示登入。
            • 若一個以上提示可用,則會顯示帳戶選擇器。

          您可以傳遞以空格分隔的 loginconsent 值,以要求使用者登入並重新驗證。例如:?prompt=login%20consent

          Uvid-Hint 標題

          或者,若要將此流程連線至無周邊來賓流程,您可以包含具有 JWT 型存取權杖的 Uvid-Hint 標頭,其中包含 UVID 值,這是您應用程式產生和管理的第 4 版通用唯一識別碼 (UUID)。若要取得具有 UVID 的存取權杖,您必須啟用外部用戶端應用程式來核發 JWT 型存取權杖,並在應用程式上實作無周邊來賓流程。

          否。如果您在應用程式上實作來賓使用者流程,您可以選擇性使用此標頭傳遞 JSON Web 權杖 (JWT) 型存取權杖,其中包含與來賓使用者身分繫結的唯一訪客識別碼 (UVID)。透過將 UVID 傳遞給已命名使用者流程,您可以將來自來賓使用者工作階段的內容資訊 (例如使用者的 Cookie 偏好設定) 帶入至已命名使用者工作階段。

          uvid_hint 內文參數

          純文字 UVID 值,這是您應用程式產生與管理的版本 4 UUID。若要取得 UVID,您必須啟用外部用戶端應用程式來核發 JWT 型存取權杖,並在應用程式上實作無周邊來賓流程。您可以選擇性使用此參數傳遞與來賓使用者身分繫結的 UVID 值,將來賓使用者工作階段中的內容資訊帶入已命名使用者工作階段。

          您也可以透過 UVID-Hint 標頭,以 JWT 型權杖傳遞 UVID,而不是在要求內文中傳遞 UVID。

          使用者驗證和授權存取權

          在 Salesforce 將授權代碼提供給外部用戶端應用程式之前,系統會要求驗證使用者登入 Salesforce。

          Salesforce 組織的登入頁面

          成功登入後,Salesforce 會將使用者重新導向至批准頁面來授與應用程式的存取權。

          授與外部用戶端應用程式存取權的批准頁面」

          如果使用者先前曾批准存取權,就不需再次批准存取權。

          Salesforce 授與授權代碼

          在使用者批准對外部用戶端應用程式的存取權後,Salesforce 會將使用者重新導向至回呼 URL,使用者可在此使用授權代碼檢視回呼。

          https://www.mycustomerorderstatus.com/oauth2/callback?
          code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==
          • 回呼的第一個部分是外部用戶端應用程式的回呼 URL:https://www.mycustomerorderstatus.com/oauth2/callback.
          • 第二個部分是外部用戶端應用程式用來取得存取權杖的授權代碼: code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==。授權代碼會於 15 分鐘後過期。

          如果原始查詢字串中包含 state 參數,則指定的狀態會傳遞至批准步驟。

          要求存取權杖

          若要要求存取權杖,外部用戶端應用程式會將授權代碼作為 HTTP POST 傳遞至 Salesforce 權杖端點。

          POST /services/oauth2/token HTTP/1.1
          Host: mycompany.my.salesforce.com
          Content-length: 307
          Content-type: application/x-www-form-urlencoded
          grant_type=hybrid_auth_code&
          code=aPrxhgZ2MIpkSy0aOdn07LjKFvsFOis6RGcWXz7p8JQCjcqfed5NQLe7sxWwMY_JQFuLwHRaRA==&
          client_id=3MVG9IHf89I1t8hrvswazsWedXWY0iqK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
          client_secret=*******************&
          redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback
          

          範例中的 POST 包含以下參數。

          重要
          重要 開發 OAuth 整合時,請一律在 POST 要求內文或要求標題中傳遞敏感資訊。請勿在 URL 查詢字串中使用 GET 參數傳遞敏感資訊。敏感資訊包括 (但不限於) 使用者名稱、密碼、OAuth 權杖、用戶端密碼,以及任何個人可識別資訊。如需安全性最佳作法的詳細資訊,請參閱《安全編碼指南》中的儲存敏感資料
          參數 描述
          Request Header

          要求標題可能包含以下參數。

          • Salesforce OAuth 2.0 端點。外部用戶端應用程式會將 OAuth 權杖要求傳送至此端點。
          • 主控服務的 URL。
          • 要求內容的長度。
          • 傳回回應的要求格式。支援這些格式。
            • Accept: application/json
            • Accept: application/xml
            • Accept: application/x-www-form-urlencoded

          要求標題同時支援以下參數。

          • 接受 */* 萬用字元並傳回 JSON。
          • 值清單,系統會由左而右進行檢查。例如:application/xml,application/json,application/html,*/* 會傳回 XML。

          format 參數優先於存取要求標頭。

          grant_type 外部用戶端應用程式可提供以證明其為安全訪客的驗證類型。針對混合式 Web 伺服器流程,此值必須是 hybrid_auth_code
          code 自授權伺服器接收的暫存授權代碼。外部用戶端應用程式會使用此程式碼來交換存取權杖。此類型的 OAuth 2.0 是能安全地將存取權杖傳回至應用程式的一種方法。
          client_id 外部用戶端應用程式的取用者金鑰。若要存取取用者金鑰,請進入「外部用戶端應用程式管理員」,找到外部用戶端應用程式,然後從下拉式清單中選取「編輯設定」。然後展開「OAuth 設定」區段,然後按一下「取用者金鑰和密碼」。有時系統會提示您在檢視消費者金鑰前先驗證身分。
          client_secret

          外部用戶端應用程式的取用者密碼。若要存取取用者密碼,請進入「外部用戶端應用程式管理員」,找到外部用戶端應用程式,然後從下拉式清單中選取「編輯設定」。然後展開「OAuth 設定」區段,然後按一下「取用者金鑰和密碼」。有時系統會提示您在檢視取用者密碼前先驗證身分。

          除非外部用戶端應用程式未啟用「需要 Web 伺服器流程的密碼」,否則此參數為必要。如果不需要 client_secret,且外部用戶端應用程式在授權要求中傳送它,則 Salesforce 仍會嘗試驗證它。

          redirect_uri 在成功驗證後,將使用者重新導向至其中的 URL。重新導向 URI 必須符合外部用戶端應用程式其「回呼 URL」欄位中的其中一個值。否則批准會失敗。您可以在外部用戶端應用程式的「OAuth 設定」頁面上或從外部用戶端應用程式的定義中找到重新導向 URI。這個值必須經過 URL 編碼。

          您也可以包含這些參數。

          參數 描述
          client_assertion 您可以提供 client_assertionclient_assertion_type,而不是傳遞 client_secret。如果未提供 client_secret 參數,Salesforce 會檢查 client_assertionclient_assertion_type。請參閱使用 client_assertion 而非 client_secret
          client_assertion_type

          使用 client_assertion 參數時提供此值。

          client_assertion_type 的值必須是 urn:ietf:params:oauth:client-assertion-type:jwt-bearer

          code_verifier

          僅在授權要求指定 code_challenge 參數時才需要此值。指定具有高 ⁇ 度的 128 位元組隨機資料,以難以猜出 code 值。設定此參數來協助避免授權代碼攔截攻擊。此值必須如 https://tools.ietf.org/html/rfc4648#section-5 中定義的方式以 base64url 編碼。

          • 如果授權要求中提供 code_verifier 值,而權杖要求中包含 code_challenge 值,Salesforce 會比較 code_verifiercode_challenge。如果 code_verifier 無效或不符合,則登入會失敗並顯示 invalid_grant 錯誤碼。
          • 如果權杖要求中提供 code_verifier 值,但授權要求中未提供 code_challenge 值,則登入會失敗並顯示 invalid_grant 錯誤碼。
          format

          如果未包含在要求的標頭中,刖您可以指定預期的傳回格式。format 參數的優先順序高於要求的標頭。支援這些格式。

          • urlencoded
          • json (預設值)
          • xml

          使用 client_assertion 而非 client_secret

          如果您提供 client_assertion 而非 client_secret,則 client_assertion 的值必須包含這些參數。

          • iss—來自外部用戶端應用程式定義的 client_id
          • sub—來自外部用戶端應用程式定義的 client_id
          • aud—權杖 servlet URL:https://hostname/services/oauth2/token
          • exp—判斷式在 5 分鐘內到期的時間,以 1970-01-01T0:0:0Z 以 UTC 測量的秒數表示。

          client_assertion 也必須使用與 OAuth 取用者已上載憑證相關聯的私人金鑰進行簽署。僅支援 RS256 演算法。如需 private_key_jwt 用戶端驗證方法,請參閱 OpenID Connect 規格

          HTTP 基本驗證結構描述

          Salesforce 支援 HTTP 基本驗證結構描述,而不是在 POST 內文中傳送用戶端認證作為參數。此計畫的格式需要貼文授權標題中的 client_idclient_secret,如下所示。

          Authorization: Basic64Encode(client_id:secret)

          client_idclient_secret 以冒號 (:) 分隔。如需詳細資訊,請參閱「OAuth 2.0 授權架構」文件。

          此範例顯示存取權杖 POST 要求,其會使用 HTTP 基本驗證結構描述,而不是在 POST 要求內文中傳送用戶端認證。

          POST /services/oauth2/token HTTP/1.1
          Host: mycompany.my.salesforce.com
          Authorization: Basic client_id=3MVG9IHf89I1t8hrvswazsWedXWY0iqK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
          client_secret=*******************&
          
          grant_type=hybrid_auth_code&code=aPrxsmIEeqM9PiQroGEWx1UiMQd95_5JUZ
          VEhsOFhS8EVvbfYBBJli2W5fn3zbo.8hojaNW_1g%3D%3D&
          redirect_uri=https%3A%2F%2Fwww.mysite.com%2Fcode_callback.jsp
          備註
          備註 如果在 POST 內文中傳送 client_idclient_secret,則會忽略授權標頭。

          Salesforce 授與存取權杖

          在 Salesforce 驗證應用程式的認證後,會傳回具有存取權杖的回應。

          在此範例中,回應的格式為 JSON。

          {
          "access_token": "00DB0000000TfcR!AQQAQFhoK8vTMg_rKA.esrJ2bCs.OOIjJgl.9Cx6O7KqjZmHMLOyVb.U61BU9tm4xRusf7d3fD1P9oefzqS6i9sJMPWj48IK",
          "signature": "d/SxeYBxH0GSVko0HMgcUxuZy0PA2cDDz1u7g7JtDHw=",
          "scope": "web openid",
          "id_token": "eyJraWQiOiIyMjAiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiSVBRNkJOTjlvUnUyazdaYnYwbkZrUSIsInN1YiI6Imh0dHBzOi8vbG9...",
          "instance_url": "https://mycompany.my.salesforce.com",
          "id": "https://login.salesforce.com/id/00DB0000000TfcRMAS/005B0000005Bk90IAC",
          "token_type": "Bearer",
          "issued_at": "1558553873237"
          }
          

          權杖回應包含以下參數。

          參數 描述
          access_token 外部用戶端應用程式用於代表用戶端應用程式要求對受保護資源存取權的 OAuth 權杖。範圍格式的其他權限可能會隨附存取權杖。
          signature client_secret 簽署的 Base64 編碼 HMAC-SHA256 簽章。簽章可以包含串連的識別碼和 issued_at value,您可以用來確認身分 URL 自伺服器傳送後未變更。
          scope

          與存取權杖相關聯的範圍。

          範圍會進一步定義用戶端可存取的受保護資源類型。您在建立外部用戶端應用程式時將範圍指派給外部用戶端應用程式,且這些範圍會包含在授權流程期間的 OAuth 權杖中。

          如需有效參數,請參閱 OAuth 權杖和範圍

          content_domain 內容工作階段的網域,會對應到內容 SID:MyDomainName.file.force.com → content_sid.
          content_sid 與內容工作階段網域相關聯的 SID。Salesforce 會傳回的唯一 SID,混合式應用程式直接在網域的工作階段 Cookie 中設定該 SID。
          lightning_domain Lightning 工作階段的網域,會對應到 Lightning SID:<MyDomainName or instance>.lightning.force.com → lightning_sid.
          lightning_sid 與 Lightning 工作階段網域相關聯的 SID。Salesforce 會傳回的唯一 SID,混合式應用程式直接在網域的工作階段 Cookie 中設定該 SID。
          visualforce_domain Visualforce 工作階段的網域,會對應到 Visualforce SID:MyDomainName.vf.force.com → visualforce_sid.
          visualforce_sid 與 Visualforce 工作階段網域相關聯的 SID。Salesforce 會傳回的唯一 SID,混合式應用程式直接在網域的工作階段 Cookie 中設定該 SID。
          csrf_token 可防止在子工作階段期間遭攻擊之偽造的跨站台要求 (CSRF) 權杖。
          id_token

          包含經驗證使用者屬性的已簽署資料結構,屬性內含使用者的唯一識別碼,以及指示權杖核發時間的時間戳記。此權杖也會識別提出要求的用戶端應用程式。請參閱 OpenID Connect 規格

          如果 scope 參數包含 openid,則會傳回此參數。

          instance_url 指示使用者組織例項的 URL。例如:https://yourInstance.salesforce.com/.
          id 身分 URL,此 URL 可用來識別使用者與查詢使用者的詳細資訊。請參閱身分 URL
          token_type Bearer 權杖類型,用於包含存取權杖的所有回應。
          issued_at 建立簽章時的時間戳記 (單位為毫秒)。
          sidCookieName 混合式應用程式用來直接橋接 Web 工作階段的工作階段 Cookie 名稱。預設值為 sid
          cookie-sid_Client 工作階段 Cookie,可偵測並防止工作階段竄改。此工作階段 Cookie 允許混合式應用程式直接橋接到 Web 工作階段。
          cookie-clientSrc 用於安全性保護的工作階段 Cookie。此工作階段 Cookie 允許混合式應用程式直接橋接到 Web 工作階段。

          權杖回應也可以包含這些參數。

          參數 描述
          refresh_token

          從混合式 Web 伺服器、使用者代理程式或混合式應用程式權杖流程取得的 權杖。這個值是密碼。採取適當的措施來保護此值。

          只有在您的外部用戶端應用程式設定為具有 refresh_token 範圍時,才會傳回此參數。

          sfdc_community_url 如果使用者是 Experience Cloud 網站的成員,則會提供網站 URL。
          sfdc_community_id 如果使用者是 Experience Cloud 網站的成員,則會提供使用者網站的識別碼。
          state 用戶端所要求的狀態。只有在原始查詢字串中包含 state 參數時,才會包含此值。
          parent_sid 與使用者父系 UI 工作階段相關聯的 SID。只有在您的應用程式能夠核發 JWT 型存取權杖時,才會包含該 parent_sid
           
          正在載入
          Salesforce Help | Article