я ходить кругами, пытаясь получить эту работу ...Как настроить аутентификацию WAMP от клиента Thruway на кросс-бар?
Вот ситуация:
У меня есть веб-приложение PHP, который делает удаленные вызовы процедур (RPC) к нескольким microservices через Crossbar.io маршрутизатор с использованием Thruway. Анонимные звонки работают отлично, но теперь я хочу добавить аутентификацию.
Вот конфигурация Перекладина:
{
"controller": {
},
"workers": [
{
"type": "router",
"realms": [
{
"name": "dashboard",
"roles": [
{
"name": "microservice",
"permissions": [
{
"uri": "*",
"publish": true,
"subscribe": true,
"call": true,
"register": true
}
]
}
]
}
],
"transports": [
{
"type": "websocket",
"endpoint": {
"type": "tcp",
"port": 80
},
"auth": {
"wampcra": {
"type": "static",
"users": {
"client1": {
"secret": "secret1",
"role": "microservice"
}
}
}
}
}
]
}
]
}
Сервер Перекладина (я надеюсь) установить, как только маршрутизатор. Все клиенты/рабочие находятся на других серверах. Я придерживался this example для конфигурации перекладины - в частности, this configuration file. Существует несколько важных различий между примером и моей конфигурацией: пример сервера настроен как как маршрутизатор, так и обслуживает статические веб-страницы (которых нет у меня), а примерный сервер включает компонент Python, который (если я читаю он правильно) не является существенным для процесса аутентификации.
В моей среде разработки я пытаюсь получить аутентификацию для работы для одного клиента. Вот код клиента:
<?php
// include the autoloader
//
require __DIR__ . '/vendor/autoload.php';
use Thruway\ClientSession;
use Thruway\Peer\Client;
use Thruway\Transport\PawlTransportProvider;
use Thruway\Authentication\ClientWampCraAuthenticator;
// create the WAMP client
//
$client = new Client('dashboard');
$auth = new ClientWampCraAuthenticator("client1", "secret1");
$client->addClientAuthenticator($auth);
// add the WAMP transport provider
//
$client->addTransportProvider(
new PawlTransportProvider('ws://192.168.1.10/')
);
// handle the "open" (connect) event
//
$client->on('open', function (ClientSession $session) {
// register the getImageData procedure
//
$session->register('service.client1.get', function ($data) {
return (new Client)->get();
});
});
// start the client
//
$client->start();
Проблема в том, что сообщение «challenge» никогда не отправляется сервером. Когда клиент пытается соединиться, я получаю следующее сообщение отладки:
2015-07-07T13:58:17.7451860 debug [Thruway\Transport\PawlTransportProvider 204] Received: [3,{"message":"no user with authid 'anonymous' in user database"},"wamp.error.not_authorized"]
Может кто-нибудь объяснить, какие дополнительные настройки мне нужно сделать, чтобы получить сервер, чтобы бросить вызов клиента?
Вы можете увидеть полный рабочий пример этого здесь: https://github.com/crossbario/crossbarexamples/tree/master/authenticate/wampcradynamic/php – daviddan
Вы должны принять ваш собственный ответ, чтобы отметить этот вопрос. – gzost