Skip to main content

User File

The API on how you can configure and use file-based authentication. The file is structured as a map of usernames and their associated passwords and optional auth data.

The userfile can be written in YAML or JSON.

# Username as key
johndoe:
# Password as hash if auth.options.has is configured or in cleartext
password: uY2zMQZXcFuWKeX/6eY43w==9wSp046KHAQfbvKcKgvwNA==
# Optional auth data that will be passed to permissioning as user.data
clientData:
favoriteDessert: brownies
serverData:
role: admin

samjones:
password: 7KZrUQcnFUDNOQtqtKqhCA==ElDieSHdI2vtiws41JF/HQ==
clientData:
favoriteDessert: shortbread
serverData:
role: user

or in JSON

{
"johndoe": {
"password": "uY2zMQZXcFuWKeX/6eY43w==9wSp046KHAQfbvKcKgvwNA==",
"clientData": { "favoriteColor": "yellow" },
"serverData": { "role": "admin" }
},
"samjones": {
"password": "7KZrUQcnFUDNOQtqtKqhCA==ElDieSHdI2vtiws41JF/HQ==",
"clientData": { "favoriteColor": "violet" },
"serverData": { "role": "user" }
}
}

password

Can either be the user's plaintext password or a hash of the password

If you've configured file-based authentication as follows, use plaintext passwords:

   type: file
options:
users: fileLoad(users.yml)
hash: false

If you've configured a hashing algorithm, use hashes as password:

   type: file
options:
users: fileLoad(users.yml)
hash: 'md5'
iterations: 50
keyLength: 16

info

You can create hashes from passwords with the currently specified settings using deepstream's command line interface

deepstream hash <password>

data

Optional authentication data, e.g. role: admin or canCreatePosts: true. This data will be available in your permission rules as user.data. Data stored within clientData will also be forwarded to the client as part of the login process.

{
"samjones": {
"password": "7KZrUQcnFUDNOQtqtKqhCA==ElDieSHdI2vtiws41JF/HQ==",
"clientData": { "user-alias": "sammy" },
"serverData": { "role": "user" }
}
}
}