小编Mar*_*ini的帖子

Keycloak:使用 keycloak-admin 为用户生成访问令牌

我必须将旧的身份验证系统移至 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)

node.js keycloak keycloak-rest-api

5
推荐指数
1
解决办法
2万
查看次数

未找到路线时快速4中间件(未调用最终处理程序):如何检查它?

我设置了以下Express 4中间件堆栈:

const app = express();
const router = express.Router();
router.get('/test', testResponse);
app.use(checkAccessToken);
app.use(router);
app.use(sendResponse);
//Error Handling
app.use(function(err,req,res,next) {
  // ... Do something here
});

function sendResponse(req, res) {
  res.json({
    data: res.locals.data,
    meta: res.locals.meta
  });
}
Run Code Online (Sandbox Code Playgroud)

如果我使用不存在的路由(如GET/something)调用服务器,则在调用路由器处理程序之后调用sendResponse函数并且调用者获得标准响应而不是通常的消息"Can not GET/something",来自最后的处理程序模块.
我认为应该调用错误处理程序,但事实并非如此.
有没有办法强制路由器在找不到路由时发出错误,或者如果路由未匹配则检查标准响应处理程序?
我知道我可以在res.locals中为任何匹配的路由添加一个值,并在标准响应处理程序中检查它,但我想用"正确"的方式来做,而不是使用一个变通方法.

middleware node.js express

4
推荐指数
1
解决办法
6328
查看次数