# kc-boot
**Repository Path**: palagend/kc-boot
## Basic Information
- **Project Name**: kc-boot
- **Description**: No description available
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2018-08-01
- **Last Updated**: 2021-06-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
app-authz-springboot: SpringBoot Web Application using Authorization Services
===================================================
Level: Beginner
Technologies: SpringBoot, Spring MVC, Spring Security
Summary: SpringBoot, Spring MVC, Spring Security
Target Product: Keycloak
Source:
What is it?
-----------
The `app-authz-springboot` quickstart demonstrates how to write a SpringBoot Web application where both authentication and
authorization aspects are managed by Keycloak.
This application tries to focus on the authorization features provided by Keycloak Authorization Services, where resources are
protected by a set of permissions and policies defined in Keycloak itself and access to these resources are enforced by a policy enforcer
that intercepts every single request to the application.
In this application, there are three paths protected by specific permissions in Keycloak:
* **/protected**, where access to this page is based on the evaluation of permissions associated with a resource **Protected Resource** in Keycloak. Basically,
any user with a role *user* is allowed to access this page.
* **/protected/premium**, where access to this page is based on the evaluation of permissions associated with a resource **Premium Resource** in Keycloak. Basically,
only users with a role *user-premium* is allowed to access this page.
* **/protected/alice**, where access to this page is based on the evaluation of permissions associated with a resource **Alice Resource** in Keycloak. Basically,
only user *alice* is allowed to access this page.
The home page (home.ftl) also demonstrates how to use a ``AuthorizationContext`` instance to check for user`s permissions and hide/show
things in a page. Where the ``AuthorizationContext`` encapsulates all permissions granted by a Keycloak server and provides methods
to check these permissions.
You can use two distinct users to access this application:
|Username|Password|Roles|
|---|---|---|
|alice|alice|user|
|jdoe|jdoe|user, user-premium|
System Requirements
-------------------
All you need to build this project is Java 8.0 (Java SDK 1.8) or later and Maven 3.1.1 or later.
Configuration in Keycloak
-----------------------
Prior to running the quickstart you need to create a `realm` in Keycloak with all the necessary configuration to deploy and run the quickstart.
The following steps show how to create the realm required for this quickstart:
* Open the Keycloak admin console
* In the top left corner dropdown menu that is titled `Master`, click `Add Realm`. If you are logged in to the master realm this dropdown menu lists all the realms created.
* For this quickstart we are not going to manually create the realm, but import all configuration from a JSON file. Click on `Select File` and import the [config/realm-import.json](config/realm-import.json).
* Click `Create`
The steps above will result on a new `spring-boot-quickstart` realm.
Build and Run the Quickstart
-------------------------------
Make sure your Keycloak server is running on . For that, you can start the server using the command below:
````
cd {KEYCLOAK_HOME}/bin
./standalone.sh -Djboss.socket.binding.port-offset=100
````
If your server is up and running, perform the following steps to start the application:
1. Open a terminal and navigate to the root directory of this quickstart.
2. The following shows the command to deploy the quickstart:
````
mvn spring-boot:run
````
Access the Quickstart
---------------------
You can access the application with the following URL: .
Integration test of the Quickstart
----------------------------------
1. Make sure you have an Keycloak server running with an admin user in the `master` realm or use the provided docker image
2. Be sure to set the `TestHelper.keycloakBaseUrl` in the `createArchive` method (default URL is localhost:8180/auth).
3. Set accordingly the correct url for the `keycloak.auth-server-url` in the test [application.properties](src/test/resources/application.properties).
4. Run `mvn test -Pspring-boot`