首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cosmos-gui应用程序在使用keystone进行身份验证后崩溃

Cosmos-gui应用程序在使用keystone进行身份验证后崩溃
EN

Stack Overflow用户
提问于 2015-08-24 14:40:00
回答 2查看 95关注 0票数 1

我有个问题。我的cosmos gui应用程序在尝试使用keystone授权后崩溃。地平线应用程序运行在https://192.168.4.33:443上,而cosmos-gui运行在http://192.168.4.180:81上。我的gui配置文件如下所示:

代码语言:javascript
复制
"oauth2": {
"idmURL": "https://192.168.4.33",
"client_id": "***********************************",
"client_secret": "*********************************",
"callbackURL": "http://192.168.4.180:81/auth",
"response_type": "code"

},

在地平线内部,我注册了具有参数的宇宙大数据应用程序:

代码语言:javascript
复制
Description
Cosmos Big data

URL
https://192.168.4.33

Callback URL
http://192.168.4.180:81/auth

因此,之后我启动了cosmos-gui应用程序,在单击登录后,它将我重定向到这个url:

代码语言:javascript
复制
https://192.168.4.33/oauth2/authorize/?response_type=code&client_id=0434fdf60897479588c3c31cfc957b6d&state=xyz&redirect_uri=http://192.168.4.180:81/auth

这就是ok.But,当我单击“授权”按钮时,它将我引向这个url:

代码语言:javascript
复制
http://192.168.4.180:81/auth?state=xyz&code=NVfyZUov1KuQ8yTw498oItHgYC2l9Z

就在那一刻,cosmos-gui应用程序崩溃了,我从日志中得到的所有信息都是:

代码语言:javascript
复制
/home/cosmos-gui/fiware-cosmos/cosmos-gui/src/app.js:138
    req.session.access_token = results.access_token;
                                      ^
TypeError: Cannot read property 'access_token' of undefined
at /home/cosmos-gui/fiware-cosmos/cosmos-gui/src/app.js:138:43
at /home/cosmos-gui/fiware-cosmos/cosmos-gui/src/oauth2.js:168:22
at ClientRequest.<anonymous> (/home/cosmos-gui/fiware-cosmos/cosmos-  gui/src/oauth2.js:140:9)
at ClientRequest.emit (events.js:95:17)
at CleartextStream.socketErrorListener (http.js:1548:9)
at CleartextStream.emit (events.js:95:17)
at SecurePair.<anonymous> (tls.js:1400:19)
at SecurePair.emit (events.js:92:17)
at SecurePair.maybeInitFinished (tls.js:980:10)
at CleartextStream.read [as _read] (tls.js:472:13)

在keystone这一边,所有看起来都是ok.This的东西都来自keystones日志:

代码语言:javascript
复制
2015-08-24 16:34:02.604 27693 INFO keystone.contrib.oauth2.controllers [-] OAUTH2: Created Authorization Code to consumer 0434fdf60897479588c3c31cfc957b6d                 for user idm with scope [u'all_info']. Redirecting to http://192.168.4.180:81/auth?state=xyz&code=NVfyZUov1KuQ8yTw498oItHgYC2l9Z
2015-08-24 16:34:02.606 27693 INFO eventlet.wsgi.server [-] 127.0.0.1 - -   [24/Aug/2015 16:34:02] "POST /v3/OS-OAUTH2/authorize HTTP/1.1" 302 208 0.121336
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-25 10:36:17

在调试和打印到app.get('/auth',函数(req,res)中的参数之后

我发现了这个错误: DEPTH_ZERO_SELF_SIGNED_CERT

似乎不承认自签名证书是有效的。无论如何,作为文件中的第一行:

cosmos-gui/src/app.js

代码语言:javascript
复制
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

现在它起作用了。

票数 1
EN

Stack Overflow用户

发布于 2015-08-25 20:59:06

当您在Keystone中授权Cosmos应用程序时,将调用回调URL,并执行以下软件:

代码语言:javascript
复制
// Handles requests from IDM with the access code

app.get('/auth', function(req, res) {
    // Using the access code goes again to the IDM to obtain the access_token
    oa.getOAuthAccessToken(req.query.code, function (e, results){
    // Stores the access_token in a session cookie
        req.session.access_token = results.access_token;
        res.redirect('/');
    });
});

也就是说,Keystone使用访问代码(一种软安全性)调用回调,该代码可用于检索最终访问令牌(一个硬安全元素)。

您的Keystone似乎正在生成访问代码,但当请求它时,它不会返回访问令牌。您能检查Keystone日志以找到访问令牌请求吗?您可以打印此调用返回的任何错误吗?

代码语言:javascript
复制
oa.getOAuthAccessToken(req.query.code, function (e, results)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32185071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档