0
$\begingroup$

Rosanswers logo

I want to create a web interface for my ROS application.

rosbridge looks promising, however I need to make sure that I can control what a user can interfere with. I am not very experienced in web services.

  1. Does rosbridge come with user authentication and role-dependent access levels?
  2. Can I limit what rosbridge exposes or is every ROS topic and service available for any (malicious) user?
  3. ros_auth seems to address some of this, but will it do the job?

(ROS kinetic, Ubuntu 16.04)


Originally posted by knxa on ROS Answers with karma: 811 on 2018-01-25

Post score: 3

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

1 . Does rosbridge come with user authentication and role-dependent access levels?

No. rosbridge_suite only deals with providing the infrastructure to bridge into a ROS nodegraph, nothing more. It is not a web application itself nor is it exclusively used for that.

2 . Can I limit what rosbridge exposes or is every ROS topic and service available for any (malicious) user?

re: limit: yes, in a way: see the rosapi/readme. rosapi (the component responsible for interfacing with the ROS nodegraph) uses an 'opt-in' list of resources to expose.

This is not linked to any user auth afaik though.

3 . ros_auth seems to address some of this, but will it do the job?

I've not used this myself, but it would seem rosauth provides a way to do authentication for rosbridge_suite. I could not find any documentation on the wiki, but this comment on the issue tracker is rather descriptive:

[..] rosbridge will wait for an auth op code to come in. If this is not the first message to come in, or if an invalid token is given, the connection is dropped.

It does seem to have the concept of user levels, which does not necessarily translate to role, but is a start.

The UI side of all this is out-of-scope of rosbridge_suite though, so that will probably have to be developed. The various rosjs and related libraries can probably help there.


Originally posted by gvdhoorn with karma: 86574 on 2018-01-25

This answer was ACCEPTED on the original site

Post score: 6


Original comments

Comment by gvdhoorn on 2018-01-25:
Note that there is no security in ROS 1, it was never a design requirement. To quote Brian at the ROS-I conference in Stuttgart:

If you tell me you've found a security issue in ROS 1, you're lying: there is no security.

As rosbridge_suite is transparent, it'll have to be made secure.

Comment by gvdhoorn on 2018-01-25:
Some experimental work to remedy this situation can be found in sros.

ROS 2 takes this much further, with full support for (DDS based) security infrastructure such as roles, certificates, authentication and authorisation, access policies etc.

Comment by gvdhoorn on 2018-01-25:
You might also be interested in the ROSCon17 presentation Reactive web interfaces with Polymer and ROS (slides, video).

Comment by knxa on 2018-01-31:
Thanks for your thorough reply (as always, where would this forum be without you). I will need to dig more into this.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.