For this example, start the server using:
> nats-server --user myname --pass password
You can encrypt passwords to pass to nats-server
using a simple tool:
> nats server passwd? Enter password [? for help] **********************? Reenter password [? for help] **********************​$2a$11$qbtrnb0mSG2eV55xoyPqHOZx/lLBlryHRhU3LK2oOPFRwGF/5rtGK
and use the hashed password in the server config. The client still uses the plain text version.
The code uses localhost:4222 so that you can start the server on your machine to try them out.
When logging in with a password nats-server
will take either a plain text password or an encrypted password.
// Set a user and plain text passwordnc, err := nats.Connect("127.0.0.1", nats.UserInfo("myname", "password"))if err != nil {log.Fatal(err)}defer nc.Close()​// Do something with the connection
Options options = new Options.Builder().server("nats://localhost:4222").userInfo("myname","password"). // Set a user and plain text passwordbuild();Connection nc = Nats.connect(options);​// Do something with the connection​nc.close();
let nc = NATS.connect({url: server.nats, user: "myname", pass: "password"});
nc = NATS()​await nc.connect(servers=["nats://myname:[email protected]:4222"])​# Do something with the connection.
require 'nats/client'​NATS.start(servers:["nats://myname:[email protected]:4222"], name: "my-connection") do |nc|nc.on_error do |e|puts "Error: #{e}"end​nc.on_reconnect doputs "Got reconnected to #{nc.connected_server}"end​nc.on_disconnect do |reason|puts "Got disconnected! #{reason}"end​nc.closeend
let nc = await connect({url: server.nats, user: "myname", pass: "password"});
natsConnection *conn = NULL;natsOptions *opts = NULL;natsStatus s = NATS_OK;​s = natsOptions_Create(&opts);if (s == NATS_OK)s = natsOptions_SetUserInfo(opts, "myname", "password");if (s == NATS_OK)s = natsConnection_Connect(&conn, opts);​(...)​// Destroy objects that were creatednatsConnection_Destroy(conn);natsOptions_Destroy(opts);
Most clients make it easy to pass the user name and password by accepting them in the URL for the server. This standard format is:
nats://user:password@server:port
Using this format, you can connect to a server using authentication as easily as you connected with a URL:
// Set a user and plain text passwordnc, err := nats.Connect("myname:[email protected]")if err != nil {log.Fatal(err)}defer nc.Close()​// Do something with the connection
Connection nc = Nats.connect("nats://myname:[email protected]:4222");​// Do something with the connection​nc.close();
let url = `nats://myname:[email protected]:${port}`;let nc = NATS.connect(url);
nc = NATS()​await nc.connect(servers=["nats://myname:[email protected]:4222"])​# Do something with the connection.
require 'nats/client'​NATS.start(servers:["nats://myname:[email protected]:4222"], name: "my-connection") do |nc|nc.on_error do |e|puts "Error: #{e}"end​nc.on_reconnect doputs "Got reconnected to #{nc.connected_server}"end​nc.on_disconnect do |reason|puts "Got disconnected! #{reason}"end​nc.closeend
let url = `nats://myname:[email protected]:${port}`;let nc = await connect({url: url});
natsConnection *conn = NULL;natsOptions *opts = NULL;natsStatus s = NATS_OK;​s = natsOptions_Create(&opts);if (s == NATS_OK)s = natsOptions_SetURL(opts, "nats://myname:[email protected]:4222");if (s == NATS_OK)s = natsConnection_Connect(&conn, opts);​(...)​// Destroy objects that were creatednatsConnection_Destroy(conn);natsOptions_Destroy(opts);