Fiware 有人能通过PeP代理解释一下上下文代理的用法吗?

Fiware 有人能通过PeP代理解释一下上下文代理的用法吗?,fiware,fiware-orion,fiware-wilma,Fiware,Fiware Orion,Fiware Wilma,我已经在我的机器上安装了orion上下文代理和pep代理。我的目标是keyRock的全局实例和AuthZforce来验证上下文代理 这是我的config.js: var config = {}; config.pep_port = 1307; // Set this var to undefined if you don't want the server to listen on HTTPS config.https = { enabled: false, cert_fil

我已经在我的机器上安装了orion上下文代理和pep代理。我的目标是keyRock的全局实例和AuthZforce来验证上下文代理

这是我的config.js:

var config = {};

config.pep_port = 1307;

// Set this var to undefined if you don't want the server to listen on HTTPS
config.https = {
    enabled: false,
    cert_file: 'cert/cert.crt',
    key_file: 'cert/key.key',
    port: 443
};

config.account_host = 'https://account.lab.fiware.org';
config.keystone_host = 'cloud.lab.fiware.org';
config.keystone_port = 4731;


config.app_host = 'localhost';
config.app_port = '1026';

config.username = '<my fiware lab username>';
config.password = '<my fiware lab pass>';



// in seconds
config.chache_time = 300;

// if enabled PEP checks permissions with AuthZForce GE.
// only compatible with oauth2 tokens engine
config.azf = {
    enabled: false,
    host: 'auth.lab.fiware.org',
    port: 6019,
    path: '/authzforce/domains/d698df7f-ffd4-11e4-a09d-ed06f24e1e78/pdp'
};

// list of paths that will not check authentication/authorization
// example: ['/public/*', '/static/css/']
config.public_paths = [];

// options: oauth2/keystone
config.tokens_engine = 'oauth2';

config.magic_key = undefined;

module.exports = config;
在此之后,我执行了以下命令:

卷曲——标题“X-Auth-Token:e2189bdc1a8b4aae9280b0fd5a6ae8a0”

从那里我得到了这样的信息:

[TOKEN] Checking token with IDM...
User access-token not authorized
我在这里真是不知所措,不知道如何通过这三个中介访问context broker

我应该向谁的主人索要代币

我不知道我问的问题是否正确。所有这些的要点是确保对上下文代理的访问

编辑1

设置auth-token.sh后,我出现以下错误:

<orionError>
  <code>400</code>
  <reasonPhrase>Bad Request</reasonPhrase>
  <details>service not found</details>
</orionError>
node server.js报告了以下情况:

Starting PEP proxy in port 1307. Keystone authentication ...
Success authenticating PEP proxy. Proxy Auth-token:  b90604bc94134c1a81414e97a23196f3


[TOKEN] Checking token with IDM...
[ROOT] Access-token OK. Redirecting to app...
先前的命令:
sh auth-token.sh
给了我:

X-Auth-Token for '<my email on fiware lab>': OxFTGtMM6ckBa7FQCUmwvvhj6GQYFc
“”的X-Auth-Token:OxFTGtMM6ckBa7FQCUmwvvhj6GQYFc
然后我就
curl--header“X-Auth-Token:OxFTGtMM6ckBa7FQCUmwvvhj6GQYFc”http://localhost:1307
这给了我前面提到的错误。

PEP代理启动屏幕中显示的令牌不是您需要在PEP代理上进行身份验证的令牌。请查看此处的描述:

简单的方法如下:

下载此处提供的文件:

将客户端ID和客户端机密替换为从FIWARE Lab获得的。也替换为,然后运行:

   sh auth-token.sh <user-email> <password>
sh auth-token.sh
脚本将向您显示已使用的用户帐户的身份验证令牌。您可以运行以下操作来访问Orion上下文代理:

   curl --header "X-Auth-Token: <AUTH-TOKEN-DISPLAYED>" http://localhost:1307
curl--header“X-Auth-Token:http://localhost:1307
您现在应该会收到orion的正确响应,它应该根据您的配置在端口1026上运行。
还要确保您在FIWARE实验室中正确配置了重定向URL。

PEP代理启动屏幕中显示的令牌不是您需要在PEP代理上进行身份验证的令牌。请查看此处的描述:

简单的方法如下:

下载此处提供的文件:

将客户端ID和客户端机密替换为从FIWARE Lab获得的。也替换为,然后运行:

   sh auth-token.sh <user-email> <password>
sh auth-token.sh
脚本将向您显示已使用的用户帐户的身份验证令牌。您可以运行以下操作来访问Orion上下文代理:

   curl --header "X-Auth-Token: <AUTH-TOKEN-DISPLAYED>" http://localhost:1307
curl--header“X-Auth-Token:http://localhost:1307
您现在应该会收到orion的正确响应,它应该根据您的配置在端口1026上运行。
还要确保您在FIWARE实验室中正确配置了重定向URL。

从@geissler给出的答案是正确的。关于编辑1,这不是PEP、Authzforce或KeyRock返回的错误,而是关于Orion上下文代理使用的错误

curl --header "X-Auth-Token:OxFTGtMM6ckBa7FQCUmwvvhj6GQYFc" http://localhost:1307
您没有查询任何操作,这就是您收到此错误的原因。请查看以了解如何使用Orion上下文代理

对于端到端测试,您始终可以通过执行以下操作查询Orion以检索版本:

curl --header "X-Auth-Token:OxFTGtMM6ckBa7FQCUmwvvhj6GQYFc" http://localhost:1307/version 

因此,如果您得到它,您将正确访问受保护的猎户座。

来自@geissler的答案是正确的。关于编辑1,这不是PEP、Authzforce或KeyRock返回的错误,而是关于Orion上下文代理使用的错误

curl --header "X-Auth-Token:OxFTGtMM6ckBa7FQCUmwvvhj6GQYFc" http://localhost:1307
您没有查询任何操作,这就是您收到此错误的原因。请查看以了解如何使用Orion上下文代理

对于端到端测试,您始终可以通过执行以下操作查询Orion以检索版本:

curl --header "X-Auth-Token:OxFTGtMM6ckBa7FQCUmwvvhj6GQYFc" http://localhost:1307/version 

因此,如果您得到它,您将正确访问受保护的Orion。

我仍然有一个问题,刚刚更新了我的问题,请查找编辑1。请记住,我仔细检查了一下,上下文代理确实正在运行。我仍然有一个问题,刚刚更新了我的问题,请查找编辑1。请记住,我仔细检查了,上下文代理确实正在运行。当我查询信息时,它会工作,例如:
curl--header“X-Auth-Token:oxftgtmm6ckba7fqcumwvhj6gqyfc” http://localhost:1307/v1/queryContext -s-s--header'Content Type:application/json'--header'Accept:application/json'-d@-| python-mjson.tool)它取决于脚本的位置和执行位置。例如,我们使用docker,为了在容器外运行脚本,我们对容器使用
docker exec
,如
docker exec-i-t auth-token.shuser0@test.com测试
。如果您使用的是虚拟机,您可以通过
ssh
启动它,只需执行
ssh即可user@host“sh auth-token.sh | awk'{print\$1}'
我的问题是获取令牌。有没有其他方法来实现这一点,或者我必须使用shell脚本和您刚才描述的方法?例如,我可以使用java来获取令牌吗?您可以使用java或任何您想要的语言来实现它。为了简单起见,我们使用了
bash
,但是您当然可以使用java、python、javascript或任何您觉得更舒服的语言。只要确保您遵循两种受支持的oauth2身份验证类型中的一种,正如这里所示,当我查询信息时它会起作用,例如:
curl--header“X-Auth-Token:OxFTGtMM6ckBa7FQCUmwvvhj6GQYFc” http://localhost:1307/v1/queryContext -s-s--header'Content Type:application/json'--header'Accept:application/json'-d@-| python-mjson.tool)它取决于脚本的位置和执行位置。例如,我们使用docker,为了在容器外运行脚本,我们对容器使用
docker exec
,如
docker exec-i-t auth-token.shuser0@test.com测试
。如果您使用的是虚拟机,则可以通过ssh启动它