fxa-auth-server/README.md

216 строки
5.8 KiB
Markdown

Firefox Accounts Server
=======================
[![Build Status](https://travis-ci.org/mozilla/fxa-auth-server.svg?branch=master)](https://travis-ci.org/mozilla/fxa-auth-server)
[![Coverage Status](https://coveralls.io/repos/github/mozilla/fxa-auth-server/badge.svg?branch=master)](https://coveralls.io/github/mozilla/fxa-auth-server?branch=master)
[![CircleCI](https://circleci.com/gh/mozilla/fxa-auth-server.svg?style=svg)](https://circleci.com/gh/mozilla/fxa-auth-server)
This project implements the core server-side API for Firefox Accounts. It
provides account, device and encryption-key management for the Mozilla Cloud
Services ecosystem.
[Overview](/docs/overview.md)
[Detailed design document](https://github.com/mozilla/fxa-auth-server/wiki/onepw-protocol)
[Detailed API spec](/docs/api.md)
[Guidelines for Contributing](/CONTRIBUTING.md)
## Prerequisites
* node 6+
* npm 2
* Grunt
* postfix
## Install
On some systems running the server as root will cause working directory permissions issues with node. It is recommended that you create a separate, standard user to ensure a clean and more secure installation.
Clone the git repository and install dependencies:
git clone git://github.com/mozilla/fxa-auth-server.git
cd fxa-auth-server
npm install
To start the server in dev memory store mode (ie. `NODE_ENV=dev`), run:
npm start
This runs a script `scripts/start-local.sh` as defined in `package.json`. This will start up
4 services, three of which listen on the following ports (by default):
* `bin/key_server.js` on port 9000
* `test/mail_helper.js` on port 9001
* `./node_modules/fxa-customs-server/bin/customs_server.js` on port 7000
When you `Ctrl-c` your server, all 4 processes will be stopped.
To start the server in dev MySQL store mode (ie. `NODE_ENV=dev`), run:
npm run start-mysql
## Testing
Run tests with:
npm test
To select a specific glob of tests to run:
npm test -- test/local/account_routes.js test/local/password_*
* Note: stop the auth-server before running tests. Otherwise, they will fail with obscure errors.
* You can use `LOG_LEVEL`, such as `LOG_LEVEL=debug` to specify the test logging level.
## Mailer
The mailer library is located in `mailer/` directory.
The emails are written to postfix which tends sends them off to SES.
The auth-mailer also includes a restify API to send emails, but the auth server is using it as a library at the moment.
### Changing Templates
If you are changing or adding templates then you need to update `.html` and `.txt` templates.
In `mailer/`, use the `/partials` directory to make changes to the HTML templates, then run `grunt templates` to regenerate the template.
This saves the HTML template into `/templates`. Then make changes to the `.txt` template in the `/templates` directory.
### L10N
After updating a string in one of the templates in `./mailer/templates` you'll need to extract the strings.
Follow the instructions at [mozilla/fxa-content-server-l10n](https://github.com/mozilla/fxa-content-server-l10n#string-extraction).
#### Production
Use the `FXA_L10N_SHA` to pin L10N files to certain SHA. If not set then the `master` SHA will be used.
## Reference Client
https://github.com/mozilla/fxa-js-client
## Dev Deployment
Refer to https://github.com/mozilla/fxa-dev.git.
## Configuration
Configuration of this project
is managed by [convict](https://github.com/mozilla/node-convict),
using the schema in
[`config/index.js`](https://github.com/mozilla/fxa-auth-server/blob/master/config/index.js).
Default values from this schema
can be overridden in two ways:
1. By setting individual environment variables,
as indicated by the `env` property
for each item in the schema.
For example:
```sh
export CONTENT_SERVER_URL="http://your.content.server.org"
```
2. By specifying the path
to a conforming JSON file,
or a comma-separated list of paths,
using the `CONFIG_FILES` environment variable.
Files specified in this way
are loaded when the server starts.
If the server fails to start,
it usually indicates that one of these JSON files
does not conform to the schema;
check the error message
for more information.
For example:
```sh
export CONFIG_FILES="~/fxa-content-server.json,~/fxa-db.json"
```
### Email config
There is also some live config
loaded from Redis for the email service.
This config is stored as a JSON string
that looks like this
(every property is optional):
```json
{
"sendgrid": {
"percentage": 100,
"regex": "^.+@example\\.com$"
},
"socketlabs": {
"percentage": 100,
"regex": "^.+@example\\.org$"
},
"ses": {
"percentage": 10,
"regex": ".*"
}
}
```
`scripts/email-config.js`
has been written to help
manage this config.
* To print the current live config to stdout:
```
node scripts/email-config read
```
* To set the live config from a JSON file on disk:
```
cat foo.json | node scripts/email-config write
```
* To set the live config from a string:
```
echo '{"sendgrid":{"percentage":10}}' | node scripts/email-config write
```
* To undo the last change:
```
node scripts/email-config revert
```
* To check the resolved config for a specific email address:
```
node scripts/email-config check foo@example.com
```
## Troubleshooting
Firefox Accounts authorization is a complicated flow. You can get verbose logging by adjusting the log level in the `config.json` on your deployed instance. Add a stanza like:
"log": {
"level": "trace"
}
Valid `level` values (from least to most verbose logging) include: `"fatal", "error", "warn", "info", "trace", "debug"`.
## Database integration
This server depends on a database server
from the [`fxa-auth-db-mysql` repo](https://github.com/mozilla/fxa-auth-db-mysql/).
When running the tests, it uses a memory-store
that mocks behaviour of the production MySQL server.
## License
MPL 2.0