NodeJS keycloak -请求的资源上不存在“Access-Control-Allow-Origin”标头

g6ll5ycj  于 2023-06-29  发布在  Node.js
关注(0)|答案(1)|浏览(157)

我们在从配置了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的问题,并尝试了它的答案,但没有帮助。
请让我知道如果任何人需要更多的信息。

kxeu7u2r

kxeu7u2r1#

您正在使用的SSO系统(OpenID)通过将用户重定向到Keycloak网站,在那里他们可以将凭据输入到表单中,然后被重定向回您的网站沿着证明他们是有效用户的令牌。
由于这个过程涉及到用户实际访问和直接与第三方网站交互,**你不能为此使用 AJAX **(并且像这样的系统 * 不能 * 构建为使用Ajax,因为这意味着系统必须信任您的用户凭据,这将使第三方识别身份验证器的目的失败)。

相关问题