amps-kerberos-authenticator
Version:
AMPS Kerberos Authenticator
71 lines (45 loc) • 2 kB
Markdown
# AMPS JavaScript Client Kerberos Authentication for Node.js
## Installation
```bash
npm install --save amps-kerberos-authenticator
```
## Dependencies
`amps-kerberos-authenticator` depends on the `amps` and `kerberos` packages. In case of the installation from NPM,
all the dependencies are installed automatically.
## Kerberos Prerequisites
- AMPS SPN (for example, `AMPS/host.domain.com`)
- Optionally set Kerberos environment variables
- `KRB5_CONFIG` set to a **krb5.conf** file that will override the default (the default is `/etc/krb5.conf` on linux)
- `KRB5_CLIENT_KTNAME` set to a KeyTab for the user you want to authentication as
In Node.js, environment variables can be set in the source code:
```javascript
process.env['KRB5_CONFIG'] = '/path/to/krb5.conf';
process.env['KRB5_CLIENT_KTNAME'] = '/path/to/client_name.keytab';
```
## Example
For Kerberos authentication using JavaScript there is a single class, `AMPSKerberosAuthenticator`,
for authentication in Node.js environment.
```javascript
const Client = require('amps').Client;
const AMPSKerberosAuthenticator = require('amps-kerberos-authenticator').AMPSKerberosAuthenticator;
async function main() {
const client = new Client('demo');
// connection credentials
const login = 'username';
const port = 10304;
const hostName = 'hostname';
const uri = `ws://${login}@${hostName}:${port}/amps/json`;
const spn = `AMPS/${hostName}`;
try {
// connect
await client.connect(uri, new AMPSKerberosAuthenticator(spn));
}
catch (err) {
console.error('err: ', err);
}
}
main();
```
## See Also
[Kerberos Authentication Blog Article](http://www.crankuptheamps.com//blog/posts/2019/06/04/kerberos-authentication/)
[libamps_multi_authentication](http://devnull.crankuptheamps.com/documentation/html/5.3.0.0/user-guide/html/chapters/auxiliary_modules.html#authentication-with-the-amps-multimechanism-authentication-module) AMPS Server Module