CAS Java klient

Naposledy změněno Petr Abrahamczik 16.04.2024 10:22

V ukázkovém příkladu je popsán základní způsob konfigurace webové aplikace v Javě pomocí Java Apereo CAS Client. Aplikace je schopna získat přihlášeného uživatele pomocí CAS v3 protokolu.

  1. Do webové aplikace je potřeba přidat knihovny klienta https://mvnrepository.com/artifact/org.apereo.cas.client/cas-client-core buď přímo a nebo pomocí nějakého buildovacího nástroje např. Maven.
    <dependency>
       <groupId>org.apereo.cas.client</groupId>
       <artifactId>cas-client-core</artifactId>
       <version>4.0.4</version>
    </dependency>
  2. Nakonfigurovat web.xml. V uvedené konfiguraci je nutné nahradit adresu klienta https://klient.vsb.cz adresou našeho serveru. V mapování filtru CAS Authentication Filter je možné uvést místo /* kontext do chráněné zóny aplikace např. /private/* .
    <filter>
     <filter-name>CAS Single Sign Out Filter</filter-name>
     <filter-class>org.apereo.cas.client.session.SingleSignOutFilter</filter-class>
     <init-param>
       <param-name>casServerUrlPrefix</param-name>
       <param-value>https://www.sso.vsb.cz</param-value>
     </init-param>
    </filter>  

    <filter>
     <filter-name>CAS Authentication Filter</filter-name>
     <filter-class>org.apereo.cas.client.authentication.AuthenticationFilter</filter-class>
     <init-param>
       <param-name>casServerUrlPrefix</param-name>
       <param-value>https://www.sso.vsb.cz</param-value>
     </init-param>
     <init-param>
       <param-name>serverName</param-name>
       <param-value>https://klient.vsb.cz</param-value>
     </init-param>
    </filter>
       
    <filter>
     <filter-name>CAS Validation Filter</filter-name>
     <filter-class>org.apereo.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class>
     <init-param>
       <param-name>casServerUrlPrefix</param-name>
       <param-value>https://www.sso.vsb.cz</param-value>
     </init-param>
     <init-param>
       <param-name>serverName</param-name>
       <param-value>https://klient.vsb.cz</param-value>
     </init-param>  
    </filter>

    <filter>    
     <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
     <filter-class>org.apereo.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
    </filter>

    <filter>
     <filter-name>CAS Assertion Thread Local Filter</filter-name>
     <filter-class>org.apereo.cas.client.util.AssertionThreadLocalFilter</filter-class>
    </filter>

    <filter-mapping>
     <filter-name>CAS Single Sign Out Filter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
     <filter-name>CAS Authentication Filter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>
       
    <filter-mapping>
     <filter-name>CAS Validation Filter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>
       
    <filter-mapping>
     <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
     <filter-name>CAS Assertion Thread Local Filter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
     <listener-class>org.apereo.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    </listener>
  3. Přihlášenou osobu v aplikaci lze pak jednoduše zjistit pomoci
    request.getRemoteUser();
  4. Připadné atributy osoby
    import org.apereo.cas.client.authentication.AttributePrincipal;
     
    AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();
    Map attributes = principal.getAttributes();
  5. Pro odhlášení uživatele z CAS je potřeba přistoupit na url https://www.sso.vsb.cz/logout.

       Před odhlášením z CAS je vhodné zrušit session v aplikaci klienta (zaleží to však na konkrétním klientu).

       Pokud po odhlášení z CAS nechceme aby uživatel zůstal na odhlašovací stránce CASu, můžeme k odhlašovací url přidat parametr service, který
       obsahuje url (nejlépe zakódovanou pomocí URL kódování) na kterou se má po odhlášení přesměrovat. Url musí obsahovat adresu, která je pro službu povolena.

       např. https://www.sso.vsb.cz/logout?service=https%3A%2F%2Fklient.vsb.cz