情境授權碼

使用使用者名稱和密碼登入使用者,並交換授權碼。

請參閱情境概述,以取得所有情境的清單。

情境步驟

  1. 開啟登入頁面。

  2. 使用使用者名稱和密碼登入。

  3. 交換授權碼以取得權杖。

  4. 給定的機率登出。

有關詳細資訊,請參閱 AuthorizationCode.scala 的原始碼。

由於 issue #945 中描述的情況,此情境將無法與非 TLS localhost URL(如 https://127.0.0.1http://127.0.0.1 或類似的 URL)搭配使用。請改用其他介面的 IP 位址,或 http://0.0.0.0,或使用 TLS 憑證執行 Keycloak。

執行範例情境

先決條件

  • Keycloak 正在執行。

  • 領域、使用者和用戶端存在,其值列在 CLI 中。

  • 用戶端需要啟用用戶端驗證,這會產生機密存取類型的 OIDC 類型,因為機密用戶端密碼用於授權碼交換。

  • 此情境不需要為用戶端設定任何服務帳戶角色。

請參閱準備 Keycloak 進行測試,以了解如何針對領域和用戶端自動執行此操作的詳細資訊。

執行情境

以下情境以預設設定執行 30 秒。

請參閱設定基準測試以取得其他 CLI 選項。

bin/kcb.sh \
  --scenario=keycloak.scenario.authentication.AuthorizationCode \
  --server-url=http://0.0.0.0:8080/ \
  --realm-name=realm-0 \
  --username=user-0 \
  --user-password=user-0-password \
  --client-id=client-0 \
  --client-secret=client-0-secret \
  --client-redirect-uri=http://0.0.0.0:8080 \
  --log-http-on-failure

變體

若要建立離線工作階段,請將參數--scope 設定為包含 offline_access 的值,例如,openid profile offline_access

若要測試驗證和登出之間重複重新整理權杖,請傳遞 --refresh-token-count=<count>--refresh-token-period=<seconds>。依預設,它將關閉 HTTP 連線,以便下一個請求需要建立新的連線,模擬用戶端通常在與 Keycloak 的先前連線過期後才會重新整理權杖的行為。若要變更此行為,請新增選項 --refresh-close-http-connection=false

錯誤訊息

參數無效:redirect_uri

這可能由以下原因造成

  • 具有給定用戶端 ID 的用戶端不存在於給定的領域中,或輸入錯誤。

    補救措施:檢查在命令列上或作為預設值給定的用戶端 ID 是否存在於給定的領域中。

  • 重新導向 URI 與用戶端中設定的重新導向 URI 不符。

    補救措施:檢查在命令列上或作為預設值給定的重新導向 URI 是否與用戶端中的重新導向 URI 相符。

使用者名稱或密碼無效

可以透過嘗試以使用者的身分登入 https://{keyloak-server}/realms/{realm}/account/ 上的帳戶主控台來手動測試。這可能由以下原因造成

  • 具有給定使用者名稱的使用者不存在。

    補救措施:檢查在命令列上或作為預設值給定的使用者是否存在於給定的領域中。

  • 使用者擁有不同的密碼。

    補救措施:檢查使用者是否設定了正確的密碼。

參數值無效:scope

在 scope 參數中列出了未知的範圍。

檢查用戶端的 _用戶端範圍_ 索引標籤中,所有範圍是否都以預設或選用範圍的形式存在。作為參數給定的範圍可能不存在或有錯字。