Authentication and User Management microservice
1.3K
A simple Authentication and User Management microservice, designed to help build secure user-accessible services, and to avoid having to write another authentication and user management service (ever again).
This is heavily inspired by the way Github manage user accounts, two factor authentication, authorized devices etc., and is intended to provide common user management features required for a web application (or web application suite) to handle authentication of web, native and mobile applications, as well end devices, with the minimum possible complexity for developers.
Systems using this service will use OAuth grants with token introspection to validate user credentials so that users can create third party applications that utilise the same APIs.
This provides an alternative to hosted solutions such as StormPath and AuthRocket for companies that prefer (or require) self hosted identity providers. For a well supported self hosted alternative for Single Sign On (SSO) you may wish to investigate gluu, as well as wikipedia's List of SSO implementations. If you already have user management infrastructure, you may be interested in coreos/dex as an OAuth extension.
If you would like to be involved with this project, please first read (and agree to abide by) the Code of Conduct, then go ahead and join the chat on Gitter or open an issue.
Early WIP. Backend components fairly functional (but by no means feature complete), frontend components in desparate need of work.
Check out design.md for more.
Frontend components and templates are now in a ryankurte/authplz-ui project (and have been grossly neglected). Paths should be set using the AUTHPLZ_STATICDIR and AUTHPLZ_TEMPLATEDIR environmental flags, or by passing --static-dir and --template-dir flags on the command line.
For development purposes, it may be convenient to add these variables to your environment (prefix with AUTHPLZ_ then export in ~/.bashrc or ~/.bash_profile).
If you have contributor access to the repository, changes should be created in branches and pull requests opened to merge (as is enforced by the repository settings and Travis-CI). If you don't have access, please follow the normal fork/pull-request flow (though be aware that forking GO projects can be a little interesting due GOPATH).
All features must be implemented with tests to demonstrate the correct and incorrect behaviours of the feature.
go get github.com/ryankurte/authplz.git to fetch the core repo into your GOPATHcd $GOPATH/src/github.com/ryankurte/authplz to switch to the repogit remote add upstream github.com/ryankurte/authplz.git to add the root as an upstreamgit remote set-url github.com/YOURNAME/authplz.git to set the master to your fork./gencert.sh to generate self signed TLS certificatesmake build-env and make start-env to build and run dependent services (eg. the database)git checkout -b "feature/my-new-feature" to create a new branchmake test to run repository testsmake run to run the application if requiredgit commit and git push your changesFor frontend development it is useful to run a local AuthPlz instance that is then proxied by the create-react-app development runner.
This is automatic when calling npm start from the authplz-ui project.
make install to install dependencies./gencert.sh to generate self signed TLS certificatesmake build-env and make start-env to build and run dependencies./authplz to launch the app./authplz --help will list available configuration options.
public.something.read)Checkout DESIGN.md for design notes and API interaction flows.
Modules are self-binding and should define interfaces required to function rather than including any (non api or appcontext) other modules.
Each module should define the interfaces required, a controller for interaction / data processing, and an API if required by the module. For an example, checkout lib/modules/2fa/u2f.
If you have any questions, comments, or suggestions, feel free to contact us (uhh, me) on gitter or to open an issue or a pull request.
Content type
Image
Digest
Size
351.1 MB
Last updated
over 9 years ago
docker pull ryankurte/authplz