Commit ea3afbec authored by Thibaut Vallee's avatar Thibaut Vallee
Browse files

Release: mise à jour version API 0.0.22

parent 96da7a96
Loading
Loading
Loading
Loading
+1 −1
Changes for .version: 1 added line, 1 removed line.
Original line number Diff line number Diff line
0.0.21
0.0.22

CHANGELOG.md

deleted100644 → 0
+0 −13
Changes for CHANGELOG.md: 0 added lines, 13 removed lines.
Original line number Diff line number Diff line
CHANGELOG
============
0.0.20 (31/03/2026)
------------------
- Dépendance à Utilisateur proposant l'authentification CAS

0.0.13 (24/03/2026)
------------------
- Authentification par CAS

0.0.12 (20/03/2026)
------------------
- Authentification par LDAP ou compte locaux
 No newline at end of file
+25 −11
Changes for README.md: 25 added lines, 11 removed lines.
Original line number Diff line number Diff line
@@ -61,25 +61,39 @@ security:
        - { path: ^/auth/cas, roles: PUBLIC_ACCESS }  # (commenter si CAS non utilisé)
```

La déclaration des routes d'authentification de l'api est à définir dans votre répertoire /config/routes/
Le fichier [unicaen_authentification.yaml.dist](documentations/config/unicaen_authentification.yaml.dist) est un exemple que l'on peut copier/coller
## Routes
L'authentification requiére de définir quelques routes spécifiques.
La configuration des routes à inclure est donnée dans [unicaen_authentification_routes.yaml.dist](config/unicaen_authentification_routes.yaml.dist), a placer dans `config/routes/`

La déclaration des routes d'authentification de l'api est à définir dans votre répertoire /config/routes/
Le fichier [gesdinet_jwt_refresh_token.yaml.dist](documentations/config/gesdinet_jwt_refresh_token.yaml.dist) est un exemple que l'on peut copier/coller
## Token JWT

Le fichier [gesdinet_jwt_refresh_token.yaml.dist](documentations/config/gesdinet_jwt_refresh_token.yaml.dist) est un exemple de configuration pour la gestion des token JWT et est a placer dans `config/packages/`


### Création automatiques des utilisateurs

Les authentifieurs proposés hérite de `AbstractSelfRegistrationAuthenticator`. 
Celà permet de creer les utilisateurs dans la base de données s'ils réussissent l'authentification mais n'existe pas dans la base de données da l'application.

Dans le cas de l'authentification par CAS, les données de l'utilisteurs (mail, displayName ...) ne sont pas fournis et requiére l'utilisation de l'annuaire LDAP
Cf [LDAP.md](LDAP.md) pour cette partie de la configuration.

L'auto-creation des utilisateurs peut être désactivée dans la configuration de `/config/packages/unicaen_authentification.yaml`

```yaml
parameters:
    unicaen.authentification.enable_registration: false
```

UnicaenAuthentification ne crée pas réelement l'utilisateur mais génére un `UserCreateEvent` en fournissant les données.
Charge à UnicaenUtilisateur (ou tout autre listener) d'enregister en base de données l'utilisateur.


## Améliorations a venir

- Paramètrage pour la création de l'utilisateur
- Système d'usurpation
- Paramètrage du type d'authentification 
- Authentification via Shibb

**Configuration des routes :**

Trouver comment intégrer directement la configuration des routes dans le bundle et ne plus avoir a copier/coller [unicaen_authentification.yaml.dist](./config/routes/unicaen_authentification.yaml.dist)

- Une approche qui vient de la v2 de Symfony : https://symfony.com/doc/2.x/routing/external_resources.html est fonctionnelle mais ne seras sans doute pas maintenue
- L'approche par déclaration de routes dans [CasController.php](src/Controller/CasController.php) (ou un autre) est fonctionnelle pour les routes de CAS, mais pas pour /auth/refresh qui repose sur un controlleur de JWT

_Ceci est une note en cours de rédaction, probablement incompléte. Toute contibution est la bienvenue_
+1 −0
Changes for composer.json: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
        "api-platform/core": "^4.2",
        "unicaen-modern/utilisateur": "^0.5.3",
        "unicaen-modern/privilege": "^1.4",
        "unicaen/ldap-bundle": "*",
        "symfony/security-bundle": "^7.3"
    },
    "require-dev": {
+9 −14
Changes for config/services.yaml: 9 added lines, 14 removed lines.
Original line number Diff line number Diff line
@@ -2,12 +2,10 @@ parameters:
    env(CAS_SERVER_URL): ''
    env(CAS_SERVICE_URL): ''
    env(CAS_SSL_VERIFY): 'false'
    env(LDAP_HOST): ''
    env(LDAP_PORT): ''
    env(LDAP_BASE_DN): ''
    env(LDAP_UID_KEY): ''
    env(LDAP_USER): ''
    env(LDAP_PASSWORD): ''

    #Charge à la UnicaenLDAP de fournir cette configuration.
    #La clé ici n'est fournis que pour éviter qu'en l'abscence de cette configuration (cas ou l'on ne s'authentifie pas par LDAP/CAS) il n'y ait une erreur
    ldap_connection_auth_config : []

services:
    _defaults:
@@ -17,22 +15,18 @@ services:
    Unicaen\Authentification\:
        resource: '../src/*'

    #### Authentification par LDAP
    #### LDAP Service (requis également pour le CAS)
    Unicaen\Authentification\Service\LdapService:
        arguments:
            $host: '%env(LDAP_HOST)%'
            $port: '%env(LDAP_PORT)%'
            $searchDn: '%env(LDAP_BASE_DN)%'
            $uidKey: '%env(LDAP_UID_KEY)%'
            $bindDn: '%env(LDAP_USER)%'
            $bindPassword: '%env(LDAP_PASSWORD)%'
            $ldapPeopleService: '@Unicaen\LdapBundle\Service\PeopleService'
            $ldapConfig: '%ldap_connection_auth_config%'

    Unicaen\Authentification\Security\LdapAuthenticator:
        arguments:
            $successHandler: '@lexik_jwt_authentication.handler.authentication_success'
            $failureHandler: '@lexik_jwt_authentication.handler.authentication_failure'

    #### Authentification par LDAP
    #### Authentification par CAS
    Unicaen\Authentification\Service\CasService:
        arguments:
            $casServerUrl: '%env(CAS_SERVER_URL)%'
@@ -43,3 +37,4 @@ services:
        arguments:
            $successHandler: '@lexik_jwt_authentication.handler.authentication_success'
            $failureHandler: '@lexik_jwt_authentication.handler.authentication_failure'
Loading