设置 PEP 代理



我一直在研究PEP-Proxy-Steelskin,所以我可以为我的Orion上下文提供一些安全层,但是,有一些问题一直阻碍着我的进步。

我想使用 IDM 和 Keystone 全局实例。

我已经按照各自的说明(https://github.com/telefonicaid/fiware-pep-steelskin)成功安装了pepProxy,但是,结果总是相同的:

{
"name": "KEYSTONE_AUTHENTICATION_ERROR",
"message": "There was a connection error while authenticating to Keystone: 500"
}

我在config.js文件中使用的配置如下所示:

var config = {};
// Protected Resource configuration
//--------------------------------------------------
// Configures the address of the component that is being proxied and the address of the proxy itself.
config.resource = {
original: {
/**
* Host that is being proxied.
*/
host: 'account.lab.fiware.org',
/**
* Port where the proxied server is listening.
*/
port: 10026
},
proxy: {
/**
* Port where the proxy is listening to redirect requests.
*/
port: 1026,
/**
* Administration port for the proxy.
*/
adminPort: 11211
}
};
// Access Control configuration
//--------------------------------------------------
/**
* This options can be used to configure the address and options of the Access Control, responsible of the request
* validation.
*/
config.access = {
/**
* Indicates whether the access control validation should be enabled. Defaults to false.
*/
disable: false,
/**
* Protocol to use to access the Access Control.
*/
protocol: 'http',
/**
* Host where the Access Control is located.
*/
host: 'account.lab.fiware.org',
/**
* Port where the Access Control is listening.
*/
port: 7070,
/**
* Path of the authentication action.
*/
path: '/pdp/v3'
}
// User identity configuration
//--------------------------------------------------
/**
* Information about the Identity Manager server from where the information about a user will be drawn.
*/
config.authentication = {
checkHeaders: false,
module: 'keystone',
user: 'pep_proxy_99c595...',
password: 'e3025a2...',
domainName: 'matest',
retries: 3,
cacheTTLs: {
users: 1000,
projectIds: 1000,
roles: 60,
validation: 120
},
options: {
protocol: 'http',
host: 'cloud.lab.fiware.org',
port: 5000,
path: '/v3/role_assignments',
authPath: '/v3/auth/tokens'
}
};

// Security configuration
//--------------------------------------------------
config.ssl = {
/**
* This flag activates the HTTPS protocol in the server. The endpoint always listen to the indicated port
* independently of the chosen protocol.
*/
active: false,
/**
* Key file to use for codifying the HTTPS requests. Only mandatory when the flag active is true.
*/
keyFile: '',
/**
* SSL Certificate to present to the clients. Only mandatory when the flag active is true.
*/
certFile: ''
}
/**
* Default log level. Can be one of: 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'
*/
config.logLevel = 'FATAL';
// List of component middlewares
//-------------------------------------------------
/**
* To validate the request, the proxy needs some information that is dependant of the component: the action that a
* request is going to execute. How to detect the action given the request is component-specific logic, that can be
* codified in a middleware-like function that will be executed before the user validation. This logic must populate
* the 'action' parameter of the request.
*/
config.middlewares = {
/**
* Indicates the module from where the middlewares will be loaded.
*/
require: 'lib/plugins/orionPlugin',
/**
* Indicates the list of middlewares to load.
*/
functions: [
'extractCBAction'
]
};
/**
* If this flag is activated, whenever the pepProxy is not able to redirect a request, instead of returning a 501 error
* (that is the default functionality) the PEP Proxy process will exit with a -2 code.
*/
config.dieOnRedirectError = false;
/**
* Name of the component. It will be used in the generation of the FRN.
*/
config.componentName = 'orion';
/**
* Prefix to use in the FRN (Not to change, usually).
*/
config.resourceNamePrefix = 'fiware:';
/**
* Indicates whether this PEP should have an admin bypass or not. If it does, whenever a user request arrives to the
* PEP from a user that has the role defined in the "adminRoleId" property, that request is not validated against the
* Access Control, but it is automatically proxied instead.
*/
config.bypass = false;
/**
* ID of the admin user if it exists. Only effective if the "bypass" property is true.
*/
config.bypassRoleId = '';
/**
* Configures the maximum number of clients that can be simultaneously queued while waiting for the PEP to
* authenticate itself against Keystone (due to an expired token).
*/
config.maxQueuedClients = 1000;
module.exports = config;

在这种情况下:

使用
  1. account.lab.fiware.org作为资源和访问主机是否正确,还是应该使用其他主机?
  2. 使用cloud.lab.fiware.org作为身份验证主机是否正确?
  3. 用户和密码由我的 IDM 全局实例自动创建。角色和权限通过同一全局实例分配。这个程序是适当的还是我应该遵循不同的程序?
  4. 我错过了什么吗?

有人对我的问题有任何提示吗?

注意:我已经成功尝试了不同的帖子。部分原因是其中许多解决方案都安装了自己的梯形失真,例如: PEP-代理-钢皮日志配置 , 用于集成 IDM GE、PEP 代理和 Cosmos 大数据的 PEP 代理配置文件 , PEP-代理-钢皮日志配置。这个是与我一直在做的事情更相关的一个,但我相信仍然不是最新的: Fiware Orion - pepProxy

如果这不是您希望的回复,我@netzahdzc抱歉,但是我已经有一段时间没有使用Fiware技术了,所以我不记得所有事情,但我会尽力提供帮助。

使用

account.lab.fiware.org 作为资源和访问主机是否正确,还是应该使用其他主机?

我认为您使用的是正确的,请参阅我在GitHub上的项目的配置文件,该项目是"旧的",因此某些内容可能已经从Fiware方面进行了更改...正如您在PepProxy - 配置中看到的那样.js我使用的实例与您相同:

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

使用 cloud.lab.fiware.org 作为身份验证主机是否正确?

在我使用的配置(上面)中,您可以看到account_hostaccount.lab.fiware.org,keystone_host(用于身份验证)是cloud.lab.fiware.org,所以我认为你是对的。

用户和密码由我的 IDM 全局实例自动创建。角色和权限通过同一全局实例分配。这个程序是适当的还是我应该遵循不同的程序?

我不敢深入研究这个问题,但对于什么回忆,是的,你是对的,角色和权限应该由 Keystone 全局实例处理,但我不知道自从我使用它以来情况是否发生了变化。

抱歉,如果我不能提供更多帮助,请尝试看看您是否可以使用我的一些配置,或者至少它可以帮助您。你也可以试着和丹尼尔·莫兰·希门尼斯谈谈,我相信他能比我更好地帮助你。

你的提议成功了吗?

我认为如果您想使用 IdM 的全局实例作为身份验证的身份提供程序,您必须填充 config.js 值,如以下代码片段所示,但我不确定它是否会起作用。

// User identity configuration
//--------------------------------------------------
/**
* Information about the Identity Manager server from where the information about a user will be drawn.
*/
config.authentication = {
checkHeaders: true,
module: 'keystone',
user: 'pep_proxy_1234...',
password: 'my-autogenerated-password',
domainName: 'Default',
retries: 3,
cacheTTLs: {
users: 1000,
projectIds: 1000,
roles: 60,
validation: 120
},
options: {
protocol: 'http',
host: 'cloud.lab.fiware.org',
port: 4730,
path: '/v3/role_assignments',
authPath: '/v3/auth/tokens'
}
};

当然,将字段用户和密码替换为值 由您的 IDM 全局实例自动创建。

但是,我认为您应该使用PEP代理GE(Wilma PEP Proxy)的参考实现,以防您仍然想使用Fiware Cloud的全局实例。

您正在使用此GE的Telefonica实现,从我的角度来看,它与Wilma有一些差异,我不能100%确定它是否可以与使用Fiware Cloud全局实例的IdM Keyrock和Authorization PDP Authzforce的参考实现集成。

一种完全不同的方法,可能是使用您自己的 IdM、PDP 授权和 PEP 代理通用启用程序 (GE) 实例。在这种情况下,您仍然可以使用这三个组件的引用实现,也可以使用 Steelskin PEP 代理。如果您遵循Steelskin路径,我鼓励您使用Keystone-spassword和Keypass,它们分别是Telefonica对IdM和Authorization PDP的实现。在这里,您可以找到有关安装和配置此 GE 的出色分步。

最后,如果您想遵循"参考"GE路径,您可以在此幻灯片中找到一些亮点。

问候

埃米利亚诺

最新更新