使用 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
首先我们在 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;
部署节点服务器时,我们有以下站点,运行(在同事的笔记本电脑上):
单击登录后,我们将正确地带到用户可以进行身份验证的 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