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.
- 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> - 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> - Přihlášenou osobu v aplikaci lze pak jednoduše zjistit pomocirequest.getRemoteUser();
- Připadné atributy osobyimport org.apereo.cas.client.authentication.AttributePrincipal;
AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();
Map attributes = principal.getAttributes(); - 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