Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Le comportement global est un peu moins ergonomique mais ne pose plus de problème dans Rocket.Chat ainsi que dans d'autres contextes d'usage (utilisation d'extension navigateur comme Bitwarden par exemple).


Suppression des sessions CAS d'un utilisateur (en cas de phishing ou autre)

CAS 6.4 propose via un actuator endpoint (API REST poussé par spring boot) la possibilité de "détruire" une session d'un utilisateur via un appel REST.

Cet appel direct est beaucoup plus performante que ce qu'on pouvait faire avec la 6.0.

De plus, CAS déclenche également maintenant la procédure de Single LogOut (SLO) au travers de cet appel (attention toutefois à prendre une version > 6.4.5 pour que le TGT soit bien supprimé / bug introduit en cours de 6.4).

On implémente maintenant la destruction des sessions CAS d'un utilisateur ainsi depuis notre application de gestion de comptes (codée en java/spring) ainsi : 

Bloc de code
languagejava
themeRDark
public class CasService {

        protected Logger log = Logger.getLogger(CasService.class);

        @Resource
        SOGoService sogoService;

        RestTemplate restTemplate;

        String casSsoSessionsUrl;

        public void setRestTemplate(RestTemplate restTemplate) {
                this.restTemplate = restTemplate;
        }

        public void setCasUrl(String casUrl) {
                casSsoSessionsUrl = casUrl + "/actuator/ssoSessions?type={type}&username={username}";
        }

        public synchronized String destroySsoSessions(String login) {
                log.info(String.format("Call Cas Destroy tickets for user %s", login));
                Map<String, String> urlVariables = new HashMap<String, String>();
                urlVariables.put("type", "ALL");
                urlVariables.put("username", login);
                ResponseEntity resp = restTemplate.exchange(casSsoSessionsUrl, HttpMethod.DELETE, null, String.class, urlVariables);
                String msg = String.format("Cas Destroyed tickets of user %s - resp : %s", login, resp.getBody());
                log.info(msg);
                return msg;
        }
}

Note : pour que la récupération du JSON de retour puisse se faire en simple String comme proposé ici, on a un Restemplate définit avec en messageConverter org.springframework.http.converter.StringHttpMessageConverter