4.3. 使用方法
- 实例化 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 管理控制台。
部署 Admin Console 后,我们已准备好通过访问红帽构建的 Keycloak Admin Console keycloak.json 文件。
将下载的文件粘贴到项目的根目录上。
使用此方法实例化会导致所有合理的默认值。另外,也可提供配置对象,而不是 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' });