<commit_before>dex
=====

[![Docker Repository on Quay.io](https://quay.io/repository/coreos/dex/status?token=<PASSWORD> "Docker Repository on Quay.io")](https://quay.io/repository/coreos/dex)

dex is a federated identity management service. It provides OpenID Connect (OIDC) to users, and can proxy to multiple remote identity providers (IdP) to drive actual authentication, as well as managing local username/password credentials.

We named the project 'dex' because it is a central index of users that other pieces of software can authenticate against.


## Architecture

dex consists of multiple components:

- **dex-worker** is the primary server component of dex
    - host a user-facing API that drives the OIDC protocol
	- proxy to remote identity providers via "connectors"
    - provides an API for administrators to manage users.
- **dex-overlord** is an auxiliary process responsible for various administrative tasks:
	- rotation of keys used by the workers to sign identity tokens
	- garbage collection of stale data in the database
    - provides an API for bootstrapping the system.
- **dexctl** is a CLI tool used to manage a dex deployment
	- configure identity provider connectors
	- administer OIDC client identities
- **database**; a database is used to for persistent storage for keys, users,
  OAuth sessions and other data. Currently Postgres is the only supported
  database.

A typical dex deployment consists of N dex-workers behind a load balanacer, and one dex-overlord.
The dex-workers directly handle user requests, so the loss of all workers can result in service downtime.
The single dex-overlord runs its tasks periodically, so it does not need to maintain 100% uptime.

## Who Should Use Dex?

A non-exhaustive list of those who would benfit from using dex:

- Those who want a language/framework-agnostic way to manage authentication.
- Those who want to federate authentication from mutiple providers of differing types.
- Those who want to manage user credentials (eg. username and password) and perform authentication locally<commit_msg>README: consistent tabbing<commit_after>dex
=====

[![Docker Repository on Quay.io](https://quay.io/repository/coreos/dex/status?token=<PASSWORD> "Docker Repository on Quay.io")](https://quay.io/repository/coreos/dex)

dex is a federated identity management service. It provides OpenID Connect (OIDC) to users, and can proxy to multiple remote identity providers (IdP) to drive actual authentication, as well as managing local username/password credentials.

We named the project 'dex' because it is a central index of users that other pieces of software can authenticate against.


## Architecture

dex consists of multiple components:

- **dex-worker** is the primary server component of dex
	- host a user-facing API that drives the OIDC protocol
	- proxy to remote identity providers via "connectors"
	- provides an API for administrators to manage users.
- **dex-overlord** is an auxiliary process responsible for various administrative tasks:
	- rotation of keys used by the workers to sign identity tokens
	- garbage collection of stale data in the database
	- provides an API for bootstrapping the system.
- **dexctl** is a CLI tool used to manage a dex deployment
	- configure identity provider connectors
	- administer OIDC client identities
- **database**; a database is used to for persistent storage for keys, users,
  OAuth sessions and other data. Currently Postgres is the only supported
  database.

A typical dex deployment consists of N dex-workers behind a load balanacer, and one dex-overlord.
The dex-workers directly handle user requests, so the loss of all workers can result in service downtime.
The single dex-overlord runs its tasks periodically, so it does not need to maintain 100% uptime.

## Who Should Use Dex?

A non-exhaustive list of those who would benfit from using dex:

- Those who want a language/framework-agnostic way to manage authentication.
- Those who want to federate authentication from mutiple providers of differing types.
- Those who want to manage user credentials (eg. username and password) and perform authentication locally
{'fraction_non_alphanumeric': 0.058979297063071735, 'fraction_numerical': 0.0014443909484833895, 'mean_word_length': 4.467105263157895, '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': '5636920', 'n_tokens_mistral': 1058, 'n_tokens_neox': 1005, 'n_words': 561}