我们在从配置了keycloak的chrome访问nodejs应用程序时遇到了问题。
Keycloak版本:21.0.1
我们正试图从chrome访问http://localhost:3101/graphql
,它显示下面的错误从浏览器控制台。
Access to fetch at 'https://com-dns/realms/dev-realm/protocol/openid-connect/auth?client_id=app-next-bff&state=15b78012-7f01-4176-a7c0-f0b7b6e0c22a&redirect_uri=http%3A%2F%2Flocalhost%3A3101%2Fgraphql%3Fauth_callback%3D1&scope=openid&response_type=code' (redirected from 'http://localhost:3101/graphql') from origin 'http://localhost:3101' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
我们在node js中示例化keycloak时添加了/graphql
const graphqlPath = "/graphql";
const app = express();
const corsConfig = {
credentials: true,
allowedHeaders: ["Authorization", "Content-Type"],
exposedHeaders: ["Authorization"],
origin: true,
};
app.use(cors(corsConfig));
const { keycloak, token } = await configureKeycloak(app, graphqlPath);
if (!process.env.KEYCLOAK_GENERATED_TOKEN) {
process.env.KEYCLOAK_GENERATED_TOKEN = token.access_token.token;
}
app.use(graphqlPath, keycloak.protect());
有效的重定向URI和Web源配置为**"*"**,我也尝试了http://ip,但没有运气
我尝试使用机器的IP地址而不是本地主机,并在领域的客户端也更新,但同样存在。
我已经看到了许多关于keycloak的问题,并尝试了它的答案,但没有帮助。
请让我知道如果任何人需要更多的信息。
1条答案
按热度按时间kxeu7u2r1#
您正在使用的SSO系统(OpenID)通过将用户重定向到Keycloak网站,在那里他们可以将凭据输入到表单中,然后被重定向回您的网站沿着证明他们是有效用户的令牌。
由于这个过程涉及到用户实际访问和直接与第三方网站交互,**你不能为此使用 AJAX **(并且像这样的系统 * 不能 * 构建为使用Ajax,因为这意味着系统必须信任您的用户凭据,这将使第三方识别身份验证器的目的失败)。