Delegate login and access control to a standalone server
You no longer need to manage user accounts directly or implement authentication logic in code. Applications delegate authentication to the Keycloak server, allowing users to securely access multiple services with a single account. Keycloak is an open-source identity and access management solution featuring user federation, strong authentication, user management, and fine-grained authorization.
Separating authentication and authorization
Keycloak separates the user store and authentication process from the application. Developers do not need to store user data directly or write complex authentication code such as password hashing and session management. Instead, Keycloak handles user federation, strong authentication, user management, and fine-grained authorization. This allows applications to focus on business logic while security policies are applied consistently from a central point.
Execution and requirements
To run Keycloak, download and extract the distribution file, then execute the bin/kc.[sh|bat] start-dev command. Refer to the respective guidelines if you need to build from source or write tests. This project is written in Java and is distributed under the Apache License, Version 2.0.
Community and contribution
When opening an issue for a problem, provide a clear summary, description, and reproduction steps. If you discover a security vulnerability, report it according to the designated procedure. General questions are discussed in the mailing list or the #keycloak Slack channel, while design and development discussions take place in #keycloak-dev. To contribute, read the contribution guidelines and adhere to the CNCF Code of Conduct, and you can participate in community meetings to voice opinions on the project's direction.
Pre-implementation checks
Keycloak uses the Apache License, Version 2.0, so it can be freely used in commercial environments. However, this repository contains only the server and Java adapters; Node.js adapters and quick start examples are separated into distinct repositories. Therefore, if you need client libraries for specific languages or quick start templates, you must check those separate projects. Additionally, it is accurate to verify feature changes in the latest version or detailed settings directly in the official documentation.