如何在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
我使用的是 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
.
对于非匿名事物,您设置其中一种身份验证机制(例如 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