如何从keycloak机密客户端获取token?

idk*_*idk 4 javascript reactjs keycloak

对于前端反应,我使用 ReactKeycloakProvider 作为要求用户登录的方式,然后令牌应该从“keycloak-js”存储到 Keycloak 中。

    <ReactKeycloakProvider 
      authClient={MYKEYCLOAK} 
      initOptions={{onLoad: 'login-required'}}
    >
      <BrowserRouter>
        <MainRouter />
      </BrowserRouter>
    </ReactKeycloakProvider>
Run Code Online (Sandbox Code Playgroud)

对于Keycloak,我使用的是 Keycloak v.20.0.2,客户端访问类型根据需要设置为机密,客户端身份验证器是客户端 Id 和 Secret。

问题是,用户登录后无法获取token,出现401错误:

    {
       "error":"unauthorized_client",
       "error_description":"Invalid client or Invalid client credentials"
     }
Run Code Online (Sandbox Code Playgroud)

。不过,我希望能够成功获得令牌。

我已将访问类型设置为public,然后成功检索到令牌。但是,当我将其设置为机密时,就会出现401错误。所以我认为这是因为我没有将客户端密钥放入 keycloak 对象中。

另外,尝试使用 keycloak.json 将客户端密钥放入 keycloak 配置中,如下所示:

import Keycloak from 'keycloak-js';
const KEYCLOAK = new Keycloak('/keycloak.json');
Run Code Online (Sandbox Code Playgroud)

但只有将.json放在public文件夹中时才能识别,这很奇怪,并且会出现死循环。

小智 17

我的问题是客户端身份验证设置为 true ,一旦我将其更改为 false ,它就可以在此处输入图像描述 输入图片