You can encrypt passwords to pass to nats-server using the simple NATS CLI tool:
natsserverpasswd
? 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.
Connecting with a User/Password
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 password.build();Connection nc =Nats.connect(options);// Do something with the connectionnc.close();
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);
Connecting with a User/Password in the URL
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:password@127.0.0.1")if err !=nil { log.Fatal(err)}defer nc.Close()// Do something with the connection
Connection nc =Nats.connect("nats://myname:password@localhost:4222");// Do something with the connectionnc.close();
// JavaScript clients don't support username/password in urls use `user` and `pass` options.
nc =NATS()await nc.connect(servers=["nats://myname:password@demo.nats.io:4222"])# Do something with the connection.
// dotnet add package NATS.NetusingNATS.Net;usingNATS.Client.Core;awaitusingvar nc =newNatsClient(newNatsOpts{ // .NET client doesn't support username/password in URLs // use `Username` and `Password` options. Url ="nats://demo.nats.io:4222", AuthOpts =newNatsAuthOpts { Username ="myname", Password ="password", }});
natsConnection *conn =NULL;natsOptions *opts =NULL;natsStatus s = NATS_OK;s =natsOptions_Create(&opts);if (s == NATS_OK) s =natsOptions_SetURL(opts,"nats://myname:password@127.0.0.1:4222");if (s == NATS_OK) s =natsConnection_Connect(&conn, opts);(...)// Destroy objects that were creatednatsConnection_Destroy(conn);natsOptions_Destroy(opts);