This repository contains the core Mozilla Persona services. Persona is a login system based on the BrowserID protocol.
To learn about using Persona on your site, check out our documentation on MDN.
This repository contains several projects related to Persona:
The Persona Fallback IdP: A fallback Identity Provider (IdP) for users without native support for Persona via their email provider. Written in node.js, hosted at https://login.persona.org.
The Persona Remote Verification Service: A stateless node.js server which handles cryptographic verification of identity assertions. Hosted at verifier.login.persona.org, but easy to run locally.
The Cross-Browser Persona Support Library:
The include.js
file that provides the navigator.id
API for browsers without native support for Persona. This also includes the code for the dialog shown to users of those browsers.
Sample and Test Code: For all of the above.
The Persona team uses Git and GitHub for all of our development and issue tracking. If you'd like to contribute code back to us, please do so using a Pull Request. If you get stuck and need help, you can find the core team on our public mailing list or in #identity on irc.mozilla.org.
BrowserID needs the following dependencies before it can run:
For detailed instructions for your specific operating system, check out the SETUP
docs in the docs/
folder.
To run the BrowserID service locally:
npm install
from the root of your clone.npm start
from the root of your clone.When you run npm start
, it will print several URLs to your terminal.
You can test that everything is working by visiting the URL for the example
(RP) site.
Look for a line like this in the terminal:
example (10361): running on http://127.0.0.1:10001
You can stop the services by typing Control-C in the terminal.
To stay up to date with BrowserID:
git pull
to retrieve new changes.var
and node_modules
folders in the root of your local clone.npm install
from the root of your local clone.Unit tests can be run by invoking npm test
at the top level.
At present, there are three classes of unit tests to be run:
You can control which tests are run using the WHAT_TESTS
env var, see scripts/test
for details.
Integration tests are done with Travis-CI. It is recommended that you setup Travis-CI for your BrowserID fork so that tests are automatically run when you push changes. This will give the BrowserID team confidence that your changes both function correctly and do not cause regressions in other parts of the code. Configuration files are already included in the repo but some setup is necessary.
All source code here is available under the MPL 2.0 license, unless otherwise indicated.