Tag: keycloak

Keycloak:authZ和nodeJS

我正在尝试使用keycloak授权机制来保护REST API。 我的API在NodeJS中用express。 说我有这个API: http://www.example.com/api/v1/houses 端点支持GET / POST / PUT / DELETE。 一个房子有一个名字和一个主人: { name: 'myhouse', owner: 'smith' } 每个人都可以看房子。 你也可以创build房屋,并自动成为所有者。 只有业主可以删除一个房子。 这和photoz例子很相似。 使用Keycloak连接仅在bearer-only模式下使用nodeJS express: router.get('/houses*', keycloakProtect(), myHandler) 但是这只提供了authentication,而不是授权。 基本上它只是检查你提供了正确的标记。 KeycloakProtect仅提供基于angular色名称的基本授权机制。 但是,我想充分利用客户端授权(包括资源,范围和策略)…是否有任何NodeJS支持? 如果不是,如何使用Keycloak API呢?

KEYCLOAK不改变使用keycloak.protect()的空闲时间

我试图在我的应用程序中实现keycloak一切工作正常,除了空闲时间的configuration,如果我把我的空闲时间设置为2分钟,最大Sso超时到4分钟(testing)我的应用程序仅在2分钟内注销。 即使我在每个API调用上都调用“Keycloak.protect()”方法。 根据文档“空闲时间刷新与该会话的keycloak服务器的每个行动,即:用户login,SSO,刷新令牌授权等。 我已经读了keycloak.protect()为用户login身份validation,但它不是在我的代码中工作。 可以任何1请帮助我如何刷新我的应用程序上打的每个API的空闲时间。

Keycloak – 授权validation失败。 原因:无效标记(错误的ISS)

所以我有一些问题让我的Keycloak连接示例工作。 基本上我有一个快速路由在我的虚拟机上与Keycloak简单的检查 (10.10.10.54:8081)如下。 app.get('/api*', keycloak.protect(), (req, res) => res.status(200).send({ message: 'Hit API Backend!', })); 我的Keycloak服务器在一个单独的虚拟机上(对于这个例子http://keycloak.myexternaldomain.ca/auth/ ) 我一直在做这个testing的电话是。 RESULT=`curl –data "grant_type=password&client_secret=mysecret&client_id=account&username=myusername&password=mypassword" http://keycloak.myexternaldomain.ca/auth/realms/TEST/protocol/openid-connect/token` 这每次都会返回正确的访问令牌, TOKEN=`echo $RESULT | sed 's/.*access_token":"//g' | sed 's/".*//g'` 将令牌parsing为一个variables。 curl http://10.10.10.54:8081/api -H "Authorization: bearer $TOKEN" 这仍然不断返回访问拒绝,我尝试了一个类似的例子与Keycloak快速启动节点服务 ,看看是否有一个更详细的错误。 我收到回来的是 Validate grant failed Grant validation failed. Reason: invalid token (wrong ISS) 虽然如果我等了一会儿,它会给我一个过期的令牌错误,所以我觉得我在正确的轨道上。 所以很明显,我从哪里发布令牌不符合它所期望的地方有什么问题? 我可以拨打电话,通过cURLing从keycloak服务器本身获取用户凭据 curl […]

从NodeJS中的Keycloak令牌获取信息

我有login用户界面后生成的重要斗篷令牌。 我将这个令牌传递给了nodeJS的后端。 在节点中,我想获取这个用户的信息,比如用户angular色,用户标识。 有没有任何模块或pakage?

OAuth 2.0 OpenID连接环回和Keycloak

我无法从Loopback连接到Keycloak。 我一直在尝试使用keycloak-connect lib: https://github.com/keycloak/keycloak-nodejs-connect 这是我目前的server/boot/root.js module.exports = function (server) { var session = require('express-session'); var Keycloak = require('keycloak-connect'); var memoryStore = new session.MemoryStore(); var keycloak = new Keycloak({ store: memoryStore }); server.use(session({ secret: 'xxx', resave: false, saveUninitialized: true, store: memoryStore, })) server.use(keycloak.middleware({})); server.get('/*', keycloak.protect(), function (req, resp) { resp.send('hello'); }) };' 看起来很简单,但它陷入redirect循环。 我也试过交换 server.use(session 同 […]

更新:NodeJS – connect-keycloak中间件空响应错误

我在使用带有NodeJS的connect-keycloak中间件的时候遇到了一个问题,而且使用它的人似乎只有很less的文档。 这是基于在这里find的官方文档'A Full Example': http : //keycloak.github.io/keycloak-nodejs/connect/ 使用curl进行testing时,出现了一个意外的错误,涉及到未定义的“keycloak-token”。 在我的代码或源代码中找不到任何对此的引用,也没有任何人在网上遇到同样的问题。 任何人都可以看到我做错了什么? connect-keycloak对象包含并按预期方式实例化: // app.js: // module dependencies var request = require('sync-request'); var fs = require('fs'); var restify = require('restify'); var Keycloak = require('connect-keycloak'); var session = require('express-session'); var memoryStore = new session.MemoryStore(); // Keycloak var keycloak = new Keycloak({ store: memoryStore }); 并使用中间件: var server = […]

获取“无效参数:redirect_uri”,尝试使用KeyCloak进行NODE.JSauthentication

我使用Node.JS(express)和一个名为keycloak-connect的NPM连接到keycloak服务器。 当我执行所描述的默认机制来保护路由时: app.get( '/about', keycloak.protect(), function(req,resp) { resp.send( 'Page: ' + req.params.page + '<br><a href="/logout">logout</a>'); } ); 我确实被提到keycloak,但有以下错误:“ 无效的参数:redirect_uri ” 我的查询string是: (xx为演示) https://xx.xx.xx.xx:8443/auth/realms/master/protocol/openid-connect/auth?client_id=account&state=aa11b27a-8a0b-4a3b-89dc-cb8a303dbde8&redirect_uri=http%3A%2F%2Flocalhost%3A3002%2Fabout%3Fauth_callback%3D1&response_type=code 我的keycloak.json是: (xx为演示) { "realm": "master", "realm-public-key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwS00kUaH6OoERNSkFUwxEBxx2SsqmHu9oVQiPs6nlP9fNQm0cK2lpNPphbLzooZL6kivaC4VzXg20F3zY7jRDc4U/XHgXjZVZUXxJ0NeCI5ESDo00EV9xh9XL3xvXslmG0YLWpywtQSYc+XcGDkz87edokbHQIIlQc2sgoVKIKpajZyrI5wnyMhL8JSk+Mdo2T9DeNnZxPkauiKBwWFJReBO51gsoZ49cbD39FRa8pLi8W0TtXoESIf/eGUSdc3revVFR7cjzHUzxF0p0WrLsTA1aBCLkt8yhnq88NqcKsW5mkxRmhLdw20ODTdsmRtm68rjtusMwifo/dZLJ9v5eQIDAQAB", "auth-server-url": "https://xx.xx.xx.xx:8443/auth", "ssl-required": "external", "resource": "account", "credentials": { "secret": "9140d4e6-ed05-4899-a3c0-a9cf94ab407d" }, "use-resource-role-mappings": true } keycloakconfiguration:

KeyCloak-Nodejs – 返回授权码和状态后进入无限循环

我正在使用KeyCloak为虚拟节点应用程序设置Open Id连接。 我正在使用在关键斗篷文档中提到的nodejs适配器 。 以下是节点应用程序的routes.js文件: 'use strict'; /** * Module dependencies. */ const home = require('../app/controllers/home'); /** * Expose */ module.exports = function (app, passport) { var session = require('express-session'); var Keycloak = require('keycloak-connect'); var memoryStore = new session.MemoryStore(); var keycloak = new Keycloak({ store: memoryStore }) // app.use(session({ // secret: 'mySecret', // resave: false, […]