From 2dc0295f1433c91476908e4e94716380331feca5 Mon Sep 17 00:00:00 2001 From: Abdellah ELMAKHROUBI Date: Thu, 19 Nov 2020 16:59:52 +0100 Subject: [PATCH] update readme: add Kc config help --- README.md | 3 ++ Resources/docs/keycloak-config-guide.md | 42 ++++++++++++++++++ Resources/docs/screenshots/config-client.png | Bin 0 -> 27216 bytes .../docs/screenshots/create-a-client.png | Bin 0 -> 13081 bytes Resources/docs/screenshots/create-a-realm.png | Bin 0 -> 12306 bytes Resources/docs/screenshots/create-a-role.png | Bin 0 -> 8475 bytes 6 files changed, 45 insertions(+) create mode 100644 Resources/docs/keycloak-config-guide.md create mode 100644 Resources/docs/screenshots/config-client.png create mode 100644 Resources/docs/screenshots/create-a-client.png create mode 100644 Resources/docs/screenshots/create-a-realm.png create mode 100644 Resources/docs/screenshots/create-a-role.png diff --git a/README.md b/README.md index 88c6b5c..1b62d91 100644 --- a/README.md +++ b/README.md @@ -77,3 +77,6 @@ security: access_control: - { path: ^/api/, roles: ROLE_API } ``` +### Keycloak configuration + +To configure keycloak to work with this bundle, [here](./Resources/docs/keycloak-config-guide.md) is a step by step describing for a basic configuration of keycloak. \ No newline at end of file diff --git a/Resources/docs/keycloak-config-guide.md b/Resources/docs/keycloak-config-guide.md new file mode 100644 index 0000000..654bcde --- /dev/null +++ b/Resources/docs/keycloak-config-guide.md @@ -0,0 +1,42 @@ +# Keycloak Configuration guide + +### Create a realm + +We assume that you already have a realm, if not you can create a realm from the Administration UI, go to ```Realm list > Add realm``` + +![Create a realm](screenshots/create-a-realm.png) + +it will appear in the realm list after creation. + +### Create a client + +You must define a client that will configure the scope of your application security. +Make sure you already are in your newly created realm and create a new client by going in ```Configure > Clients > Create```. + +![Create a client](screenshots/create-a-client.png) + +Once created, you can configure it by going in ``` Configure > Clients > [Your client]``` +Here is a sample configuration that work with our bundle : + +![Configure client](screenshots/config-client.png) +> Note that the client Access type is bearer-only. + +### Create roles + + In keycloak, roles are an abstraction of permissions for our application (used in security.yaml). + In our case we need to define a role named **ROLE_API** + + You can configure it in ```Configure > Clients > [Your client] > Roles``` + + ![Create a role](screenshots/create-a-role.png) + + ### Assign a role to a user + +Last but not least we need to affect our role to our users. + +To add role, go to ```Manage > Users > View all users > [Some User] > Role Mappings```. + +* In the **Client Roles** dropdown select your client that contains our roles. +* Select Roles in **Available Roles** list, then click **Add selected** to assign role to the uses. + +And your all done, now you can use your client to secure your API. \ No newline at end of file diff --git a/Resources/docs/screenshots/config-client.png b/Resources/docs/screenshots/config-client.png new file mode 100644 index 0000000000000000000000000000000000000000..c1725a502b46b7604f7940a0b3875cf37f845e7d GIT binary patch literal 27216 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 z%0D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 literal 0 HcmV?d00001 diff --git a/Resources/docs/screenshots/create-a-role.png b/Resources/docs/screenshots/create-a-role.png new file mode 100644 index 0000000000000000000000000000000000000000..15d28726d195e48ca7f96025e5c77e85965eb3a8 GIT binary patch literal 8475 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 Xe7H??&G!P(R>|pvvmN=^<)8lzu!zL} literal 0 HcmV?d00001