Jump to content
Ultimaker Community of 3D Printing Experts
Aim23

How to auth with node-red against UM3 REST API

Recommended Posts

Hey everybody,

 

I am desperate. Here in short what I want to do:

Using node-red as platform for crosslinking different IOT devices with different services. Like a MQTT Broker, Telegram and other.

What I'm using right now is: RedBot for asking my UM3+ what is going on with the current print job, how the print looks like (grabbing an image from the integrated camera and sending it to the chat via the Telegram bot). 

What I want to do now is, if I see the printjob is failing right now after image checking, to stop the print via the bot. For this action, node-red needs to be authenticated in the REST API. I have an id and key generated which is valid and ready for use. 

So how do I do this, any ideas or suggestions? Would be very helpfull. 

 

Thanks ;)

Marcel

Curl
curl -X GET --header 'Accept: application/json' 'http://um3ip/api/v1/auth/check/fad462df155f52ceb0e6ce8ed64845ed'

Request URL
http://um3ip/api/v1/auth/check/fad462df155f52ceb0e6ce8ed64845ed

Response Body
{
  "message": "authorized"
}

 

[{"id":"1300e776.abe2f1","type":"change","z":"5674bd4d.d67064","name":"Set Headers","rules":[{"t":"set","p":"headers","pt":"msg","to":"{}","tot":"json"},{"t":"set","p":"headers.content-type","pt":"msg","to":"application/json","tot":"str"},{"t":"set","p":"headers.Authorization","pt":"msg","to":"Digest username=\"fad462df155f52ceb0e6ce8ed64845ed\", password=\"2789fb63914e0fac010b2489e4358becdd22886997151e093894e518a198a264\", uri=\"/api/v1/auth/verify\", realm=\"Jedi-API\", qop=auth","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":1297,"wires":[["d710857b.bc85f","bf1c1cce.74dc98"]]},{"id":"d710857b.bc85f","type":"http request","z":"5674bd4d.d67064","name":"","method":"GET","ret":"obj","url":"http://um3ip/api/v1/auth/verify","tls":"","x":568,"y":1296,"wires":[["caad6ed4.e755a"]]},{"id":"bf1c1cce.74dc98","type":"debug","z":"5674bd4d.d67064","name":"","active":true,"console":"false","complete":"true","x":633,"y":1397,"wires":[]},{"id":"f0c9e7a5.d0cd68","type":"inject","z":"5674bd4d.d67064","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":197,"y":1249,"wires":[["1300e776.abe2f1"]]},{"id":"caad6ed4.e755a","type":"debug","z":"5674bd4d.d67064","name":"","active":true,"console":"false","complete":"true","x":737,"y":1259,"wires":[]}]

 

Share this post


Link to post
Share on other sites

I have no experience with node-red. So I cannot help you on that part. I did post a python example in my topic about the API, that might help?

 

But the UM3 API requires HTTP Digest with "auth" quality-of-protection. (The Digest standard makes this optional, but that completely ruins the security, and thus we made it required) most libraries handle this seamlessly.

 

Part of the "auth" quiality-of-protection are one-time-use tokens, called "nonce". Which I'm not sure if node-red is handling for you or not.

Share this post


Link to post
Share on other sites

There's a little more information right here (images seem to be missing, but everything should be clear):

 

I would first try to get the /verify call working with cURL. I believe it should be as simple as adding a "--digest" parameter:

https://stackoverflow.com/questions/9435678/curl-digest-command

 

Next, you need to get it into Node-red. From what I know about this (= not much), it's based on node, so JavaScript. It looks like some of the libraries don't completely support digest authentication, so if it doesn't work, probably best to try another library. This is just the first thing that comes up:

https://stackoverflow.com/questions/17110783/how-to-do-request-http-digest-auth-with-node-js

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Our picks

    • Taking Advantage of DfAM
      This is a statement that’s often made about AM/3DP. I'll focus on the way DfAM can take advantage of some of the unique capabilities that AM and 3DP have to offer. I personally think that the use of AM/3DP for light-weighting is one of it’s most exciting possibilities and one that could play a key part in the sustainability of design and manufacturing in the future.
        • Like
      • 3 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!