对于前端React,我使用ReactKeycloakProvider作为一种要求用户登录的方式,然后令牌应该从'keycloak-js'存储到Keycloak中。
<ReactKeycloakProvider
authClient={MYKEYCLOAK}
initOptions={{onLoad: 'login-required'}}
>
<BrowserRouter>
<MainRouter />
</BrowserRouter>
</ReactKeycloakProvider>
对于 Keycloak,我正在使用 Keycloak v.20.0.2,客户端访问类型设置为机密,因为这是必需的,客户端验证器是客户端 ID 和密码。
问题在于,在用户登录后,我无法获取令牌,会出现 401 错误:
{
"error":"unauthorized_client",
"error_description":"Invalid client or Invalid client credentials"
}
然而,我期望成功获取令牌。
我已将访问类型设置为公共,然后成功检索到令牌。但是,当我将其设置为机密时,会出现401错误。因此,我认为这是因为我没有将客户端秘钥放入keycloak对象中。
另外,尝试使用keycloak.json将客户端秘钥放入keycloak配置中,像这样:
import Keycloak from 'keycloak-js';
const KEYCLOAK = new Keycloak('/keycloak.json');
但是只有当 .json 文件放置在公共文件夹中时才能被识别,这很奇怪,并且会导致无限循环。