【发布时间】:2021-06-11 12:17:11
【问题描述】:
尝试使用 Keycloak 作为在 minikube 上的 Kubernetes 集群中运行的 SSO 来验证演示 nodejs 应用程序:
var express = require('express');
var session = require('express-session');
var Keycloak = require('keycloak-connect');
var cors = require('cors');
var app = express();
app.use(cors());
const memoryStore = new session.MemoryStore();
app.use(session({
secret: 'some secret',
resave: false,
saveUninitialized: true,
store: memoryStore
}));
var keycloakConfig = {
"realm": "Demo-Realm",
"auth-server-url": "https://keycloak.192.168.49.2.nip.io/auth/",
"ssl-required": "external",
"resource": "nodejs-microservice",
"verify-token-audience": true,
"credentials": {
"secret": "14de3a01-5c15-42fd-aa6a-fcc35c0961ff"
},
"use-resource-role-mappings": true,
"confidential-port": 0,
"policy-enforcer": {}
};
const keycloak = new Keycloak( { store : memoryStore }, keycloakConfig );
app.use(keycloak.middleware({
logout: '/logout',
admin: '/'
}));
app.get('/user', keycloak.protect('user'), function(req, res){
res.send("Hello User");
});
app.listen(3000, function () {
console.log('Started at port 3000');
});
但是在使用 NodeJS 控制台错误访问 http://localhost:3000/user 时获得 Access denied 页面:Could not obtain grant code: Error: unable to verify the first certificate
我在 Keycloak 中使用以下设置创建了 Demo-Realm 领域:
nodejs-microservice client:
Access Type: confidential
Valid Redirect URIs: http://localhost:3000/*
Authorization Enabled: ON
Roles: [ 'user', 'admin' ]
没有发生登录重定向(basic 示例虽然可以正常工作)。可能是什么问题呢?如何使用 Keycloak 保护我的 NodeJS 微服务?
【问题讨论】:
标签: keycloak