4.2. 使用方法


实例化 Keycloak 类
Keycloak 类为配置和集成应用程序提供了一个中央点。最简单的创建涉及任何参数。

在项目的根目录中,创建名为 server.js 的文件并添加以下代码:

    const session = require('express-session');
    const Keycloak = require('keycloak-connect');

    const memoryStore = new session.MemoryStore();
    const keycloak = new Keycloak({ store: memoryStore });

安装 express-session 依赖项:

    npm install express-session

要启动 server.js 脚本,请在 package.json 的"scripts"部分中添加以下内容:

    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "node server.js"
    },

现在,我们可以使用以下命令运行我们的服务器:

    npm run start

默认情况下,这将找到名为 keycloak.json 的文件以及应用程序的主可执行文件(在 root 文件夹中),以初始化红帽构建的 Keycloak 特定设置,如公钥、域名、各种 URL。

在这种情况下,需要红帽构建的 Keycloak 部署来访问红帽构建的 Keycloak 管理控制台。

请访问如何使用 PodmanDocker部署红帽构建的 Keycloak 管理控制台的链接

现在,我们可以通过访问 Keycloak Admin Console client (左侧边栏)的红帽构建来获取 keycloak.json 文件,→ 选择您的客户端 Installation Format Option Keycloak OIDC JSON Download

将下载的文件粘贴到项目的根目录上。

使用此方法实例化会导致所有合理的默认值。另外,也可提供配置对象,而不是 keycloak.json 文件:

    const kcConfig = {
        clientId: 'myclient',
        bearerOnly: true,
        serverUrl: 'http://localhost:8080',
        realm: 'myrealm',
        realmPublicKey: 'MIIBIjANB...'
    };

    const keycloak = new Keycloak({ store: memoryStore }, kcConfig);

应用程序也可以使用以下方法将用户重定向到首选身份提供程序:

    const keycloak = new Keycloak({ store: memoryStore, idpHint: myIdP }, kcConfig);
配置 Web 会话存储
如果要使用 Web 会话来管理服务器端状态进行身份验证,您需要使用至少一个 store 参数初始化 Keycloak (…​),传递 express-session 使用的实际会话存储。
    const session = require('express-session');
    const memoryStore = new session.MemoryStore();

    // Configure session
    app.use(
      session({
        secret: 'mySecret',
        resave: false,
        saveUninitialized: true,
        store: memoryStore,
      })
    );

    const keycloak = new Keycloak({ store: memoryStore });
传递自定义范围值
默认情况下,范围值 openid 作为查询参数传递给红帽构建的 Keycloak 登录 URL,但您可以添加额外的自定义值:
    const keycloak = new Keycloak({ scope: 'offline_access' });
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部