I am running RServe from Server machine using cmd
Rserve.exe --RS-conf Rserv.conf --RS-port 12306
Rserv.conf file has following content:
pwdfile RserveAuth.txt
auth required
remote enable
plaintext disableRserveAuth.txt has following contents:
Admin 123456
I am connecting to R Server from JAVA
import org.rosuda.REngine.REXPMismatchException; import org.rosuda.REngine.REngineException; import org.rosuda.REngine.Rserve.RConnection; import org.rosuda.REngine.Rserve.RserveException; import org.rosuda.REngine.REXP; import org.rosuda.REngine.*; public class ConnecttoR { ... ... public void connectR() { try { RConnection connection = new RConnection("172.16.33.242",12306); // Works if authentication is not required in Rserv.conf } catch (RserveException e) { e.printStackTrace(); } catch(REXPMismatchException e){ e.printStackTrace(); } catch(REngineException e){ e.printStackTrace(); } } }
Connection to Rserve is open to all without username & Password. How shall I add security and allow connection only with valid credentials to access Rserve
Connect to RServe from JAVA using authentication
As you have enabled the authentification after creating the connection as a first command you need to execute the login
command. The Java library has a special wrapper for it.
See code below for example use case.
RConnection connection = new RConnection("127.0.0.1",12306);
connection.login("Admin", "123456");
REXP x = connection.eval("R.version.string");
System.out.println(x.asString());
Also, I would recommend using full path as the pwdfile
value.
Does it use ssh internally to connect? Is it a solution that would work for both Windows and linux box? –
Kepler
Yes it will work for any system (I have tested it with MacOS X), and no it uses native socket connections. –
Objectify
bcz i followed your solution and got a org.rosuda.REngine.Rserve.RserveException: login failed, request status: authorization failed at org.rosuda.REngine.Rserve.RConnection.login(RConnection.java:399) error –
Kepler
Are you sure that the credentials are correct? as You can see the systems are connected, only the username and password did not match. –
Objectify
the credentials are correct and also the same as present in the pwdfile in the rserv.conf file. Thanks for verifying though :) –
Kepler
© 2022 - 2024 — McMap. All rights reserved.
Rserve.exe
, what is the client user running [Windows, MacOSX, Linux]? Is your production RServer on Windows? Just checking requirements. – Blowfly