Crossbar:非WAMP客户端作为身份验证节点

时间:2015-10-20 01:36:51

标签: django websocket wamp autobahn crossbar

高级别问题:如何配置Crossbar通过可访问用户数据库的Web服务器验证WAMP客户端。

说明

使用crossbar dynamic authentication,WAMP节点(可以访问用户DB)可以注册认证功能,如下所示。

def authenticate(realm, authid, details):
   ## return credentials (secret + role) for user 'authid'
   return {'secret': 'mypassword', 'role': 'sales'}

yield self.register(authenticate, 'com.example.authenticate')

当然,crossbar也会配置动态身份验证。

"auth": {
           "wampcra": {
                         "type": "dynamic",
                         "authenticator": "com.example.authenticate"
                      }
        }

就我而言,用户DB使用的是Django HTTP REST服务器,它不是常规的WAMP客户端。

但是,我发现交叉开关HTTP Bridge服务提供了这个HTTP Callee REST API。我看到你可以配置crossbar来注册一个WAMP程序(比如com.myapp.rest),它将请求发送到HTTP服务器(比如https://httpbin.org/),如下所示。

"type": "class",
"classname": "crossbar.adapter.rest.RESTCallee",
"realm": "realm1",
"extra": {
            "procedure": "com.myapp.rest",
            "baseurl": "https://httpbin.org/"
         }

如上所述,我正在考虑按照以下方式为我的网络服务器提供身份验证功能(根据我的理解)。

  1. 当常规WAMP客户端想要连接到路由器时,crossbar将发出RPC调用进行身份验证。
  2. 然后使用HTTP Callee服务,crossbar会将WAMP过程转换为HTTP请求,这些请求将落在我的Web服务器上。
  3. 在我的网络服务器中,我将提取身份验证参数,对用户进行身份验证并返回成功/失败响应。
  4. 看起来,它可以工作。

    但是,我看到了从WAMP客户端调用该过程的特殊语法。

    @inlineCallbacks
    def onJoin(self, details):
        res = yield self.call("com.myapp.rest",
                              method="GET",
                              url="",
                              params={
                                      .....
                                  })
    

    与您调用常规RPC的方式不同

    res = yield self.call(u'com.myapp.add2', 2, 3).
    

    问题:是否可以按照我的提议(步骤1到3),使用crossbar从我的网络服务器请求身份验证信息。

0 个答案:

没有答案