2025-11-05 17:04:23 -03:00

54 lines
1.1 KiB
Markdown

# SASL
SASL Negotiation for `@xmpp/client`.
Included and enabled in `@xmpp/client`.
## Usage
### object
```js
import { xmpp } from "@xmpp/client";
const client = xmpp({
credentials: {
username: "foo",
password: "bar",
},
});
```
### function
Instead, you can provide a function that will be called every time authentication occurs (every (re)connect).
Uses cases:
- Have the user enter the password every time
- Do not ask for password before connection is made
- Debug authentication
- Using a SASL mechanism with specific requirements
- Fetch credentials from a secure database
```js
import { xmpp } from "@xmpp/client";
const client = xmpp({ credentials: onAuthenticate });
async function onAuthenticate(authenticate, mechanisms) {
console.debug("authenticate", mechanisms);
const credentials = {
username: await prompt("enter username"),
password: await prompt("enter password"),
};
console.debug("authenticating");
await authenticate(credentials, mechanisms[0]);
console.debug("authenticated");
}
```
## References
[RFC 6120 SASL Negotiation](https://xmpp.org/rfcs/rfc6120.html#sasl)