Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9fc03b6985 | ||
|
|
8c5ac62f72 | ||
|
|
ec441c8e89 | ||
|
|
e0bd4cc329 | ||
|
|
50b981f278 | ||
|
|
e781ce6fc3 | ||
|
|
b9dc633ea4 | ||
|
|
7252f80435 | ||
|
|
595fb9829b | ||
|
|
2dc0295f14 |
12
README.md
12
README.md
@@ -27,6 +27,7 @@ abel_keycloak_bearer_only_adapter:
|
|||||||
realm: '%env(OAUTH_KEYCLOAK_REALM)%' # your keycloak realm name
|
realm: '%env(OAUTH_KEYCLOAK_REALM)%' # your keycloak realm name
|
||||||
client_id: '%env(OAUTH_KEYCLOAK_CLIENT_ID)%' # your keycloak client id
|
client_id: '%env(OAUTH_KEYCLOAK_CLIENT_ID)%' # your keycloak client id
|
||||||
client_secret: '%env(OAUTH_KEYCLOAK_CLIENT_SECRET)%' # your keycloak client secret
|
client_secret: '%env(OAUTH_KEYCLOAK_CLIENT_SECRET)%' # your keycloak client secret
|
||||||
|
#ssl_verification: False # by default ssl_verification is set to False
|
||||||
```
|
```
|
||||||
The best practice is to load your configuration from **.env** file.
|
The best practice is to load your configuration from **.env** file.
|
||||||
|
|
||||||
@@ -34,10 +35,10 @@ The best practice is to load your configuration from **.env** file.
|
|||||||
# .env
|
# .env
|
||||||
...
|
...
|
||||||
###> Keycloak ###
|
###> Keycloak ###
|
||||||
KEYCLOAK_ISSUER=http://keycloak.local:8080
|
OAUTH_KEYCLOAK_ISSUER=http://keycloak.local:8080
|
||||||
KEYCLOAK_REALM=my_realm
|
OAUTH_KEYCLOAK_REALM=my_realm
|
||||||
KEYCLOAK_CLIENT_ID=my_bearer_client
|
OAUTH_KEYCLOAK_CLIENT_ID=my_bearer_client
|
||||||
KEYCLOAK_CLIENT_SECRET=my_bearer_client_secret
|
OAUTH_KEYCLOAK_CLIENT_SECRET=my_bearer_client_secret
|
||||||
###< Keycloak ###
|
###< Keycloak ###
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
@@ -77,3 +78,6 @@ security:
|
|||||||
access_control:
|
access_control:
|
||||||
- { path: ^/api/, roles: ROLE_API }
|
- { 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 documentation for a basic configuration of keycloak.
|
||||||
|
|||||||
42
Resources/docs/keycloak-config-guide.md
Normal file
42
Resources/docs/keycloak-config-guide.md
Normal file
@@ -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```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
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```.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Once created, you can configure it by going in ``` Configure > Clients > [Your client]```
|
||||||
|
Here is a sample configuration that work with our bundle :
|
||||||
|
|
||||||
|

|
||||||
|
> 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```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 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 role(s).
|
||||||
|
* Select Roles in **Available Roles** list, then click **Add selected** to assign role to the user.
|
||||||
|
|
||||||
|
And your all done, now you can use your client to secure your API.
|
||||||
BIN
Resources/docs/screenshots/config-client.png
Normal file
BIN
Resources/docs/screenshots/config-client.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
Resources/docs/screenshots/create-a-client.png
Normal file
BIN
Resources/docs/screenshots/create-a-client.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
Resources/docs/screenshots/create-a-realm.png
Normal file
BIN
Resources/docs/screenshots/create-a-realm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
Resources/docs/screenshots/create-a-role.png
Normal file
BIN
Resources/docs/screenshots/create-a-role.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.3 KiB |
@@ -212,4 +212,4 @@ class KeycloakBearerAuthenticator extends AbstractGuardAuthenticator
|
|||||||
{
|
{
|
||||||
return trim(preg_replace('/^(?:\s+)?[B-b]earer\s/', '', $token));
|
return trim(preg_replace('/^(?:\s+)?[B-b]earer\s/', '', $token));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,11 +11,11 @@
|
|||||||
],
|
],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1",
|
"php": "^7.2.5|^8.0",
|
||||||
"symfony/config": "^4.0",
|
"symfony/config": "^5.0",
|
||||||
"symfony/dependency-injection": "^4.0",
|
"symfony/dependency-injection": "^5.0",
|
||||||
"symfony/http-kernel": "^4.0",
|
"symfony/http-kernel": "^5.0",
|
||||||
"symfony/security-bundle": "^4.0",
|
"symfony/security-bundle": "^5.0",
|
||||||
"guzzlehttp/guzzle": "^6.3",
|
"guzzlehttp/guzzle": "^6.3",
|
||||||
"ext-json": "*"
|
"ext-json": "*"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user