使用 keyrock 验证测试网络应用程序时遇到问题

Trouble with authenticating a test web app using keyrock

首先我们在 fiware 实验室中设置我们的应用程序:

我们用来创建应用程序的代码位于 this site

我们唯一改变的是 link 是 config.js:

var config = {}

config.idmURL = 'https://account.lab.fiware.org/';
config.client_id = 'f9b5940d67a741a38039690e4d6e6c6f';
config.client_secret = 'c9f854c96c9e4c70a0d402bce3233a17';
config.callbackURL = 'http://panonit.com:8802/user_info';

// Depending on Grant Type:
// Authorization Code Grant: code
// Implicit Grant: token
config.response_type = 'code';

module.exports = config;

部署节点服务器时,我们有以下站点,运行(在同事的笔记本电脑上): 您可以在欧洲中部时间 09 点到 18 点之间亲眼看到。

单击登录后,我们将正确地带到用户可以进行身份​​验证的 fiware 站点:

这就是网站崩溃的地方(它说页面不可用):

为了解决这个问题,我们仅将 server.js 更改为仅输出响应:

// Ask IDM for user info
app.get('/user_info', function(req, res){
    var url = config.idmURL + '/user/';

    // Using the access token asks the IDM for the user info
    oa.get(url, req.session.access_token, function (e, response) {

        //var user = JSON.parse(response);
  var user = response;
  console.log("Getting user response is: " + user)
        //res.send("Welcome " + user.displayName + "<br> Your email address is " + user.email + "<br><br><button onclick='window.location.href=\"/logout\"'>Log out</button>");
  res.send("Welcome " + user)
    });
});

完成此操作后,我们重新启动了服务器。从这里我们再次按下登录并验证应用程序使用情况,我们得到的不是站点中断:

这里我们得出结论,响应是一个空对象,因为打印出了undefined。

我们做错了什么?

检查了一下,问题是你使用了错误的回调URL。如果您检查 server.js,您正在使用的回调 URL 的路径是 /user_info,要使用它,首先您需要在 [= 处检索的 req.session.access_token 13=]。只需将回调 url 更改为:

config.callbackURL = 'http://panonit.com:8802/login';

一切都应该正常。还记得在您的 IdM 应用程序配置中更改它!

是的,问题就是 albertinisg 指出的问题。 callbackURL 必须是 /login 才能获取代码并从中检索访问令牌。然后使用访问令牌,您将能够检索用户信息。

BR