为什么在刷新页面时,Keycloak 会出现未经授权的情况?

3

我已经成功地将Keycloak与ReactJS集成,但是当我刷新页面时,keycloak.authenticate返回false并再次要求凭据。

我已经在互联网上搜索了相关信息,建议在initOptions属性中传递令牌和刷新令牌,我已经这样做了,但仍然面临同样的问题。

我正在使用"@react-keycloak/web": "^2.1.1"和"keycloak-js": "^10.0.1"

以下是我的Keycloak.js代码:


import * as Keycloak from 'keycloak-js';

const keycloakConfig = {
   url: 'https://smartgrid.doersops.com/auth/',
   realm: 'OneSmartgrid',
   clientId: 'smartgrid-react-web-admin',
}

const keycloak = new Keycloak(keycloakConfig);

export default keycloak

这是我的 App.js 代码:

import React from 'react';
import { KeycloakProvider } from '@react-keycloak/web'
import keycloak from './keycloak';
import { AppRouter }  from './routes';
function App() {
  const token = localStorage.getItem('token');
  const refreshToken = localStorage.getItem('refreshToken');

  const setTokens = (token, idToken, refreshToken) => {
    localStorage.setItem('token', token);
    localStorage.setItem('refreshToken', refreshToken);
    localStorage.setItem('idToken', idToken);
  }
  return (
    <KeycloakProvider 
      keycloak={keycloak}
      onTokens={
          (tokens:  keycloakTokens) => 
          setTokens(tokens.token ?? '', tokens.idToken ?? '', tokens.refreshToken ?? '')
        }
      initOptions={{ onLoad: 'login-required', token, refreshToken }}
      >
      <AppRouter />
    </KeycloakProvider>
  )
}

export default App;
2个回答

0

我正在回答自己的问题,实际上我需要从Keycloak管理面板更改设置。从侧边菜单中选择身份验证,然后从下拉菜单中选择浏览器。

enter image description here


1
然后呢? - Krusty the Clown

0

根据KC管理面板上的提示,将Cookie的要求(浏览器身份验证流)标记为“备选”对我解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接