我必须将旧的身份验证系统移至 Keycloak,并且无法更改客户端上的实际工作流程。因此,我需要为我的 api(在 node.js 中)提供一个用户创建和登录系统,该系统又代表用户从 Keycloak 创建和获取访问令牌。
我能够创建一个用户,但无法找到为该用户生成访问令牌的方法。我发现的唯一解决方法是创建一个用户并设置一个随机密码,然后要求授予用户提供用户名和密码,但这意味着我必须在我这边存储密码,这正是我想移动的原因到钥匙斗篷。
const KcAdminClient = require('keycloak-admin').default;
const Keycloak = require('keycloak-connect');
const _keycloakAdmin = new KcAdminClient({
baseUrl: process.env.KEYCLOAK_SERVER_AUTH_URL,
realm: process.env.KEYCLOAK_REALM
});
await _keycloakAdmin.auth({
realm: process.env.KEYCLOAK_REALM,
username: process.env.KEYCLOAK_USER,
password: process.env.KEYCLOAK_PASSWORD,
grantType: 'password',
clientId: process.env.KEYCLOAK_CLIENT_ID,
});
//Create a user and set password
const newUser = await _keycloakAdmin.users.create({
realm: process.env.KEYCLOAK_REALM,
username: 'something',
email: 'someone@domain.com',
firstName: 'Some',
lastName: 'One',
emailVerified: true,
enabled: true,
});
await _keycloakAdmin.users.resetPassword({
realm: process.env.KEYCLOAK_REALM,
id: newUser.id,
credential: {
temporary: false,
type: 'password',
value: 'randompassword'
} …Run Code Online (Sandbox Code Playgroud)