Так что у меня есть безопасный шлюз на Bluemix.
Безопасный шлюз подключается к службе LDAP в моем локальном помещении.
В безопасном шлюзе я настроил взаимный TLS.
Сейчас я использую React \ socket-client для подключения, и он успешно подключился. Я только сейчас потерял, как запросить данные в LDAP. Всегда будет невозможно подключиться к серверу LDAP.
$loop = React\EventLoop\Factory::create();
$tcpConnector = new React\SocketClient\TcpConnector($loop);
$dnsResolverFactory = new React\Dns\Resolver\Factory();
$dns = $dnsResolverFactory->createCached('8.8.8.8', $loop);
$dnsConnector = new React\SocketClient\DnsConnector($tcpConnector, $dns);
$secureConnector = new React\SocketClient\SecureConnector($dnsConnector, $loop, array(
'verify_peer' => true,
'verify_peer_name' => true,
'allow_self_signed' => true,
'cafile' => <CACERT>,
'local_pk' => <PK_CERT>,
'local_cert' => <LOCALCERT>
));
$secureConnector->create(<Secure Gateway Link>)->then(function(React\Stream\Stream $stream)
{
//I'M CONNECTED HERE
//Secure gateway status is establishing connection and not closing
$ldap_server = "ldap://0.0.0.0";
$basedn = "<xxx>";
$auth_user = "<xxx>";
$auth_pass = "<xxx>";
if (!($connect = @ldap_connect($ldap_server)))
{
throw new Exception("Cannot connect to LDAP");
} else
{
try
{
//In order to avoid unable bind to server
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
$bind = ldap_bind($connect, $auth_user, $auth_pass);
if (!$bind)
{
if (ldap_get_option($connect, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error))
{
throw new Exception("Error Binding to LDAP: $extended_error");;
} else
{
throw new Exception("Error Binding to LDAP: No additional information is available.");
}
} else
{
//connected to LDAP and do search
//never goes here
}
} catch (Exception $exc)
{
$exc->getMessage();
$stream->end();
}
}
}, function($err)
{
echo $err . '<br>';
die();
});
$loop->run();
Я перевожу код nodejs на https://developer.ibm.com/bluemix/2015/04/17/securing-destinations-tls-bluemix-secure-gateway/
к этому коду ….
Я могу использовать другой пакет, если мне нужно, я просто не знаю, что использовать.
Пожалуйста, помогите мне..
заранее спасибо
Задача ещё не решена.
Других решений пока нет …