<commit_before># Anvil Connect

**Anvil Connect** aims to be a scalable, full-featured, ready-to-run
[**OpenID Connect**](http://openid.net/connect/) + [**OAuth 2.0**](http://tools.ietf.org/html/rfc6749) **Provider**.

### Why OpenID Connect?

Having a separate password for every site you visit is inconvenient at best and unmanageable at worst. And for developers, storing passwords and managing authentication is time-consuming, error prone and risky. OpenID Connect solves these problems by allowing apps to rely on one or more third parties for securely identifying users. Google, Microsoft, and many other industry leaders have been involved in creating the protocol, and currently have OIDC in production. With the specification just finalized in 2014, this is truly the state of the art.

### Why OAuth 2.0?

Enabling other developers to create value for your users by building on your API is a good thing. But sharing user passwords with third-party applications is insecure. OAuth 2.0 solves this problem with authorization flows that let users securely grant third party apps limited access to their accounts. OpenID Connect builds on OAuth 2.0.


### Why run your own OpenID Connect Povider?

* You have many apps and APIs to protect and you need a shared identity and authorization service
* Your users want...
  * a seamless authentication experience across several apps
  * to grant third party apps limited access to their account
  * to be able to sign in via other providers like Google+
* Other developers want to rely on you for establishing a user's identity


### Why use **Anvil Connect**?

* Deploy to the cloud in minutes
* Quickly connect your apps and APIs
* It's free and open source

We're building Anvil Connect for small teams like us that want to build fast, grow exponentially and need Identity and Access Management to be a solved problem. Our implementation choices are deliberately forward thinking. We won't be supporting some features that may be required in a legacy enterprise environment. On the other hand, Anvil may be a perfect fit for greenfield projects and ventures that don't need the baggage.

### Get Started

* [Documentation](https://github.com/christiansmith/anvil-connect/wiki/Documentation)
* [References](https://github.com/christiansmith/anvil-connect/wiki/References)

<commit_msg>simple setup and deployment instructions<commit_after># Anvil Connect

**Anvil Connect** aims to be a scalable, full-featured, ready-to-run
[**OpenID Connect**](http://openid.net/connect/) + [**OAuth 2.0**](http://tools.ietf.org/html/rfc6749) **Provider**.


### Why run your own OpenID Connect Povider?

* You have many apps and APIs to protect and you need a shared identity and authorization service
* Your users want...
  * a seamless authentication experience across several apps
  * to grant third party apps limited access to their account
  * to be able to sign in via other providers like Google+
* Other developers want to rely on you for establishing a user's identity


### Why use **Anvil Connect**?

We're building Anvil Connect for small teams like us that want to build fast, grow exponentially and need Identity and Access Management to be a solved problem.

* Deploy to the cloud in minutes
* Quickly connect your apps and APIs
* It's free and open source


### Lightning fast setup

```bash
# Install the CLI
$ npm install -g anvil-connect

# Make a place for your deployment repository to live
$ mkdir path/to/project
$ cd path/to/project

# Generate a deployment repository
$ nv init deployment

# Install dependencies
$ npm install

# Initialize the local database
$ nv init db

# Create the first user account
$ nv signup

# Assign a role
$ nv assign <email> authority

# Start the server in development mode
$ nv serve
```

You should now have an OpenID Connect Provider running in development mode.


### Even faster deployment

If you're using Modulus.io, deployment is a snap. Create a new project and edit the `issuer` in `config.production.json` to reflect your app's url. Be sure to configure Redis as well. Then set these environment variables in the project administration section:

* `ANVIL_CONNECT_PRIVATE_KEY`
* `ANVIL_CONNECT_PUBLIC_KEY`

You can copy these values from the `.pem` files using `$ nv copy keys/<private|public>.pem`. Be sure to use this command to copy the keys as it will encode the values as expected by Anvil Connect.

```bash
$ modulus deploy
```

Support for other deployment targets is in the works.


### Configure and customize

* [Documentation](https://github.com/christiansmith/anvil-connect/wiki/Documentation)
* [References](https://github.com/christiansmith/anvil-connect/wiki/References)


{'fraction_non_alphanumeric': 0.07094162760971454, 'fraction_numerical': 0.004686834256497656, 'mean_word_length': 4.491228070175438, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5772757', 'n_tokens_mistral': 1264, 'n_tokens_neox': 1173, 'n_words': 632}