我正在使用 Keycloak 25。 我正在使用 python keycloak 来使用 keycloak API。
我已成功从 Web 界面启用模拟,但我需要使用令牌交换通过 api 模拟用户。
官方页面有不同的屏幕截图,我找不到启用 token_exchange 的部分。
https://www.keycloak.org/docs/latest/securing_apps/index.html#_token-exchange
这是KeycloakOpenID中的方法标志
def exchange_token(
self,
token: str,
audience: Optional[str] = None,
subject: Optional[str] = None,
subject_token_type: Optional[str] = None,
subject_issuer: Optional[str] = None,
requested_issuer: Optional[str] = None,
requested_token_type: str = "urn:ietf:params:oauth:token-type:refresh_token",
scope: str = "openid",
) -> dict:
"""Exchange user token.
Use a token to obtain an entirely different token. See
https://www.keycloak.org/docs/latest/securing_apps/index.html#_token-exchange
这是我得到的错误:
keycloak.exceptions.KeycloakPostError: 400: b'{"error":"unsupported_grant_type","error_description":"Unsupported grant_type"}'
我也有同样的问题,你可以检查一下:
我只需重新启动我的 keycloak 环境并添加 KC_FEATURES=token-exchange 即可启用该功能。
(我使用chart helm来部署)
containers:
- name: my_container_name
image: "quay.io/keycloak/keycloak:{{ .Values.KC_version }}"
command:
- /opt/keycloak/bin/kc.sh
- start
env:
....
- name: KC_FEATURES
value: token-exchange