常見問題 App ID

此常見問題提供 IBM Cloud® App ID 服務常見問題的回答。

為什麼我需要允許重定向 URI?

重新導向 URI 是應用程式的回呼端點。 當您允許您的 URI 時,您就等於允許 App ID 將您的使用者傳送到該位置。 在執行時期,App ID 會根據您的允許清單驗證 URI,然後再重新導向使用者。 此程序可協助防止網路釣魚攻擊,並減少攻擊者能夠存取使用者代幣的可能性。 如需重新導向 URI 的相關資訊,請參閱新增重新導向 URI

請不要在您的 URL 中包括任何查詢參數。 在驗證處理程序中,會忽略它們。 範例 URL: http://host:[port]/path

加密在 App ID 中如何運作?

請參閱下表,以取得加密常見問題的答案。

有關App ID如何處理加密的常見問題
問題 答案
您為何使用加密? 我們保護使用者資訊的方法之一,是在資料靜止和傳輸過程中加密客戶資料。 服務會使用每個承租戶金鑰來加密靜止的客戶資料,並在所有網路區段中施行 TLS 1.2+。
App ID 中使用的是哪些演算法? 該服務使用 AESSHA-256 與鹽漬。
您是否使用公用或開放程式碼加密模組或提供者? 您是否曾經公開加密功能? 該服務使用 avax.crypto Java 函式庫,但從未公開加密功能。
金鑰如何儲存? 系統會產生金鑰,並以每一個地區特定的主要金鑰進行加密,然後儲存在本端。 主要金鑰儲存在 Key Protect 中。 每個地區都有其自己的信任根金鑰,此金鑰儲存在 Key Protect 中,並以 HSM 進行備份。 每個服務實例(承租戶)都有自己的資料加密和記號簽章金鑰,這些金鑰使用地區的信任根金鑰進行加密。
您使用的金鑰強度為何? 服務使用 16 個位元組。
您是否調用任何揭露加密功能的遠端 API 否,我們沒有。

App ID 使用什麼時鐘同步化?

App ID 在 IBM Cloud中執行,它使用內部 NTP 伺服器: servertime.service.softlayer.com

將應用程式與 App ID的時間來源同步化,取決於您用來執行應用程式的環境。

  • 如果您的應用程式在 IBM Cloud 標準基礎架構中執行,請將 NTP 伺服器設為 servertime.service.softlayer.com
  • 如果您的應用程式在IBM Cloud VPC Infrastructure 中執行,請將 NTP 伺服器設定為 time.adn.networklayer.com
  • 如果您的應用程式不在 IBM Cloud中執行,則您無法存取這些時間伺服器。 在此情況下,請將 NTP 伺服器設為 time-a.nist.govtime-b.nist.gov

App ID 與 Keycloak 之間的差異為何?

App ID 和 Keycloak 都可用來將鑑別新增至應用程式及安全服務。 這兩個供應項目之間的主要差異在於它們的包裝方式。

Keycloak 會包裝為軟體,這表示身為開發人員的您在下載它之後,要負責維護產品的功能。 您要負責管理、高可用性、法規遵循、備份、DDoS 保護、負載平衡、Web 防火牆、資料庫等等。

App ID 是一個以「即服務」方式提供的完全受管理供應項目。 這表示 IBM 會處理服務的作業、處理合規性、多個區域中的可用性、SLA 等。App ID 也具有 IBM Cloud Platform 的整合體驗,其中包括原生執行時期及服務,例如 Kubernetes Service、Cloud Functions及 Activity Tracker。

可以在多個應用程式中使用相同用戶端 ID 嗎?

雖然在技術上 _can_,您可以在一個以上的應用程式中使用相同的憑證,但基於幾個原因,我們強烈建議您不要這樣做。 最重要的是,當您在各應用程式間共用 ID 時,任何類型的攻擊或入侵都會影響整個環境,而非單一應用程式。 例如,如果您在三個應用程式之間使用您的 ID,且其中一個應用程式已受損,則這三個應用程式都會受損。 攻擊者能夠假冒您的任何應用程式。 第二個原因是,當您在多個應用程式中使用相同的用戶端 ID 時,就無法區分不同的應用程式。 例如,您無法判斷使用了哪個應用程式來產生記號。

如何更新應用程式以使用新的服務實例而不遺失任何資料

您可以將一個 App ID 實例中的資訊移轉到另一個實例。

  1. 建立服務的實例。
  2. 使用 GUI 複製身分提供者配置。
  3. 移轉使用者設定檔。 已知使用者會匯出為 JSON 物件。 無法移轉匿名使用者。 您可以選擇將整個物件匯入新實例,或者如果有多個實例,則可以視情形分割物件並劃分使用者。 對於 Cloud Directory,請參閱移轉使用者。 對於聯合身分提供者,請使用下列步驟。
  4. 建立應用程式認證以呼叫新的服務實例。
    1. 在服務儀表板中,導覽到應用程式索引標籤。
    2. 按一下新增應用程式,並提供應用程式的名稱。 然後,按一下儲存
    3. 按一下表格中的檢視認證,並複製輸出。
    4. 將新認證貼入應用程式。
  5. 將應用程式更新為使用包含任何 URL 的新認證。
  6. 根據配置,您可能需要重新部署應用程式,或者取消連結並重新連結應用程式。

App ID 可以協助配置登出嗎?

視您配置應用程式的方式而定,App ID 可以協助為使用者提供登出功能。 請參閱下表,以查看可使用登出功能的位置。

登出功能選項
說明
App ID SDK App ID SDK 具有內建登出功能。
雲端目錄 SSO[1] App ID 提供 Cloud Directory SSO 特性的內建登出功能。
Ingress Ingress 提供內建登出功能。
Istio Istio 适配卡配置为通过 OIDC 提供注销功能。

配置登出

若要配置登出,您必須配置應用程式將要求傳送至身分提供者。 然後,將使用者重新導向至不需要鑑別的應用程式區域。 在大多數的使用案例中,應用程式伺服器會話可能會由 App ID SDKs、Ingress 或 Istio 設定,並與聯合身分提供者 (例如 SAML 或 Cloud Directory) 合作,以啟用驗證與授權。

在下列 HTML 範例中,使用 App ID SDK 來配置登出。 但是,如果您使用另一個選項,則可以使用此 Snippet 作為指引,並更新它以符合您的需求。

<script>
  var ticker = setInterval(tick, 1000);
  var counter = 5;
  function tick() {
    var timerDiv = document.getElementById("timer");
    if (counter > 0) {
      timerDiv.innerText = "Logged out. Redirecting back in " + (counter--) + " seconds.";
    } else {
      document.location = "./appid_logout";
    }
  } </script>
<iframe height="0" width="0" src="https://login.microsoftonline.com/common/wsfederation?wa=wsignout1.0"></iframe>

  1. 雲端目錄 SSO 功能使用的所有重定向 URL 必須新增至 App ID UI 中的登出 URL allowlist。 ↩︎