【问题标题】:Setting up PEP Proxy设置 PEP 代理
【发布时间】:2017-05-05 15:30:54
【问题描述】:

我一直在研究 PEP-Proxy-Steelskin,因此我可以为我的 Orion Context 提供一些安全层,但是,有一些问题阻碍了我的进步。

我想使用 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. 我错过了什么吗?

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

注意:我已经成功尝试过不同的帖子。部分原因是其中许多解决方案都安装了自己的 keystone,例如: PEP-Proxy-Steelskin Log configuration , PEP proxy config file for integration of IDM GE, PEP proxy and Cosmos big data , PEP-Proxy-Steelskin Log configuration。这一个与我一直在做的工作更相关,但我仍然相信它不是最新的: Fiware Orion - pepProxy

【问题讨论】:

    标签: fiware fiware-orion keystone


    【解决方案1】:

    我@netzahdzc 很抱歉,如果这不是您希望的答复,但我暂时不使用 Fiware 技术,所以我不记得所有内容,但我会尽力提供帮助。

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

    我认为你使用的是正确的,请参考我的项目的配置文件GitHub,这个项目是“旧的”,所以有些东西可能已经从 Fiware 方面改变了......你可以在 PepProxy - config.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.orgkeystone_host (用于身份验证)是 cloud.lab.fiware.org,所以我认为您是对的。

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

    我对此并没有深入研究,但回想一下,是的,你是对的,角色和权限应该由 Keystone 全局实例处理,但我不知道自从我使用它后情况是否发生了变化。

    抱歉,如果我不能提供更多帮助,请尝试看看您是否可以使用我的一些配置,或者至少它是否可以帮助您。您也可以尝试与Daniel Morán Jiménez 交谈,我相信他会比我更能帮助您。

    【讨论】:

    • 非常感谢您的见解和建议@af-silva。我终于让 PEP 按我的预期工作了,谢谢,非常感谢您的友好反馈 :)
    【解决方案2】:

    你的提议成功了吗?

    我认为如果你想使用IdM的全局实例,作为身份验证的身份提供者,你必须填充config.js的值,如下面的sn -p但我不确定是否它会起作用的。

    // 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'
        }
    };
    

    当然,将字段 userpassword 替换为值 由您的 IDM 全局实例自动创建。

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

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

    一种完全不同的方法,它可能是使用您自己的 IdM、PDP 授权和 PEP 代理通用启动器 (GE) 实例。在这种情况下,您仍然可以使用这三个组件的引用实现,或者您可以使用 Steelskin PEP 代理。如果您遵循 Steelskin 路径,我鼓励您使用 Keystone-spasswordKeypass,它们分别是 Telefonica 的 IdM 和授权 PDP 实现。 Here你可以找到关于安装和配置这个GEs的一个很好的一步一步。

    最后,如果您想遵循“参考”GE 路径,您可以在 slides 中找到一些亮点。

    问候,

    埃米利亚诺

    【讨论】:

    • 您好 Emiliano,抱歉回复晚了。我确实设法让它运行。非常感谢您的写作和建议。
    猜你喜欢
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2019-04-18
    相关资源
    最近更新 更多