如何在Autobahn中设置组件角色

How to set component role in Autobahn

我使用的是 crossbar 0.11.1,我想让高速公路组件使用特定的角色。当我向组件添加 "role" 属性时,如下所示:

"components": [
        {
           "type": "class",
           "classname": "hello.hello.AppSession",
           "realm": "realm1",
           "role": "anonymous",
           "transport": {
              "type": "websocket",
              "endpoint": {
                 "type": "tcp",
                 "host": "127.0.0.1",
                 "port": 8080
              },
              "url": "ws://127.0.0.1:8080/ws"
           }
        }
     ]

我在 运行 crossbar start

时收到此错误
2015-11-03T10:51:02-0600 [Controller  20933] Automatically choosing optimal Twisted reactor
2015-11-03T10:51:02-0600 [Controller  20933] Running on Linux and optimal reactor (epoll) was installed.
2015-11-03T10:51:02-0600 [Controller  20933]      __  __  __  __  __  __      __     __
2015-11-03T10:51:02-0600 [Controller  20933]     /  `|__)/  \/__`/__`|__) /\ |__)  |/  \
2015-11-03T10:51:02-0600 [Controller  20933]     \__,|  \__/.__/.__/|__)/~~\|  \. |\__/
2015-11-03T10:51:02-0600 [Controller  20933]                                         
2015-11-03T10:51:02-0600 [Controller  20933]     Version: 0.11.1     
2015-11-03T10:51:02-0600 [Controller  20933] 
2015-11-03T10:51:02-0600 [Controller  20933] Starting from node directory /home/jaime/code/pubsub/tmp/.crossbar
2015-11-03T10:51:02-0600 [Controller  20933] Loading node configuration file '/home/jaime/code/pubsub/tmp/.crossbar/config.json'
2015-11-03T10:51:02-0600 [Controller  20933] *** Configuration validation failed ***
2015-11-03T10:51:02-0600 [Controller  20933] invalid component configuration - encountered unknown attribute 'role'

刚刚试了一下,可以重现错误。我已经为此提交了一个错误 - https://github.com/crossbario/crossbar/issues/507。抱歉给您带来不便!

您只能以这种方式为 "in-router" 组件分配角色(即 "router" 类型的工作人员中的 "components" 列表)——它们实际上并不有一个传输,因为它们 运行 在与路由器工作人员相同的 Python 进程中。

对于所有其他组件,它们的角色是通过它们连接到的传输的身份验证分配的。因此,在您的上述情况下,您将添加一个 "anonymous" 用户,该用户在您在 ws://127.0.0.1:8080/ws.

定义的 websocket 传输上具有 "anonymous" 角色

对于非匿名事物,您设置其中一种身份验证机制(例如 WAMP-CRA),然后您的组件将执行以下操作:self.join(u'admin_realm', [u'wampcra'], u'admin') in onConnect 并计算挑战onChallenge 根据文档使用他们的秘密:http://crossbar.io/docs/WAMP-CRA-Authentication/#python-frontend

在路由器端,最简单的 WAMP-CRA 是使用静态凭据,您只需在 config.json 文件中使用用户 + 机密。您可以定义动态 WAMP-CRA auth