Pages enfant
  • CAS en mode servlet

LOG

Voici les log d'accès typiques de l'accès à un tomcat hébergeant esup-lecture (dans un context "/esup-lecture") où l'on fait appel à une ressource protégée par CAS. Cette ressource se trouvant dans le context "/sources" (sur le même tomcat ici).

129.20.129.80 - - [02/Jul/2008:09:43:23 +0200] "GET /esup-lecture/ HTTP/1.1" 302 -
129.20.131.194 - - [02/Jul/2008:09:43:25 +0200] "GET /esup-lecture/CasProxyServlet HTTP/1.1" 302 -
129.20.131.194 - - [02/Jul/2008:09:43:25 +0200] "GET /esup-lecture/CasProxyServlet?pgtIou=PGTIOU-194845-75VoDBzcJYeeJfdkFMfZdjXX0xmSlaIiAf0&pgtId=TGT-354931-X90mVk0zaDH2gkgXMrAsSKnKFUfYPUJaMatO4x4txzmJKIYplY HTTP/1.1" 200 78
129.20.129.80 - - [02/Jul/2008:09:43:25 +0200] "GET /esup-lecture/?ticket=ST-753416-sFbr0UFS5WjWW5ykcUkw HTTP/1.1" 302 -
127.0.0.1 - - [02/Jul/2008:09:43:29 +0200] "POST /devray/services/UportalService HTTP/1.0" 500 574
127.0.0.1 - - [02/Jul/2008:09:43:29 +0200] "POST /devray/services/UportalService HTTP/1.0" 200 3227
129.20.129.80 - - [02/Jul/2008:09:43:31 +0200] "GET /esup-lecture/stylesheets/home.faces HTTP/1.1" 200 8401
129.20.129.80 - - [02/Jul/2008:09:43:31 +0200] "GET /esup-lecture/media/lecture.css HTTP/1.1" 304 -
129.20.129.80 - - [02/Jul/2008:09:43:31 +0200] "GET /esup-lecture/media/XMLWithoutMenu.gif HTTP/1.1" 304 -
129.20.129.80 - - [02/Jul/2008:09:43:31 +0200] "GET /esup-lecture/media/moins.gif HTTP/1.1" 304 -
129.20.129.80 - - [02/Jul/2008:09:43:31 +0200] "GET /esup-lecture/media/edit.png HTTP/1.1" 304 -
129.20.129.80 - - [02/Jul/2008:09:43:31 +0200] "GET /esup-lecture/media/extand.gif HTTP/1.1" 304 -
129.20.129.80 - - [02/Jul/2008:09:43:31 +0200] "GET /esup-lecture/media/puce.gif HTTP/1.1" 304 -
129.20.129.80 - - [02/Jul/2008:09:43:31 +0200] "GET /esup-lecture/media/retract.gif HTTP/1.1" 304 -
127.0.0.1 - - [02/Jul/2008:09:43:36 +0200] "GET /sources/rss.xml?ticket=ST-753431-buXvhZ3xqNaC2wuWsvdu HTTP/1.1" 200 1116
129.20.129.80 - - [02/Jul/2008:09:43:36 +0200] "POST /esup-lecture/stylesheets/home.faces HTTP/1.1" 200 10335
129.20.129.80 - - [02/Jul/2008:09:43:36 +0200] "GET /esup-lecture/media/unread.png HTTP/1.1" 200 946

Voici ce que l'on note :

  • Récupération de PGT (qui servira pour obtenir un Proxy Ticket pour l'accès à la source protégée par CAS) :
    "GET /esup-lecture/CasProxyServlet?pgtIou=PGTIOU-194845-75VoDBzcJYeeJfdkFMfZdjXX0xmSlaIiAf0&pgtId=TGT-354931-X90mVk0zaDH2gkgXMrAsSKnKFUfYPUJaMatO4x4txzmJKIYplY HTTP/1.1"
  • Validation du Service Ticket permettant d'identifier l'utilisateur pour esup-lecture :
    "GET /esup-lecture/?ticket=ST-753416-sFbr0UFS5WjWW5ykcUkw HTTP/1.1"
  • Appel de la source, protégée par CAS, par esup-lecture avec, en paramètre le Proxy Ticket CAS obtenu par esp-lecture :
    "GET /sources/rss.xml?ticket=ST-753431-buXvhZ3xqNaC2wuWsvdu HTTP/1.1"

Configuration

build.properties esup-lecture

En terme de configuration coté esup-lecture on trouveras dans le fichier build.properties :

# NOTE : tomcat.host, tomcat.port, cas.url are used in servlet mode for CAS configuration
#
# Tomcat host, defaults to localhost.
#
tomcat.host=uportal.univ-rennes1.fr
#
# Tomcat port, defaults to 8080.
#
tomcat.port=80

Explications :

  • tomcat.host est positionné à uportal.univ-rennes1.fr qui est le nom utilisé par le virtualhost apache en frontal du tomcat. Un frontal apache est utilisé pour notamment gérer le https

properties/config.properties

La partie casService de ce fichier de configuration est utilisée en mode portlet et servlet. Elle sert aussi bien en dynamique (utilisation des properties par Spring) qu'en statique (utilisation via la tache ant deploy) pour configurer le fichier web.xml

##### casService #####
# the casServiceBean servletCasService in servlet mode OR portletCasService in portlet mode
casService.bean=portletCasService
# The service that retrieves PTs from the CAS server. This property
# must be the same as the one set in parameter casTargetService of portletCasService
# used when publishing the portlet (portlet mode)
casService.service=http://uportal.univ-rennes1.fr/esup-lecture
# The URL used on the CAS server (servlet and portlet mode)
casService.url=https://sso-cas.univ-rennes1.fr
# The callback URL used by the CAS server to pass the PGT to
# the application (servlet and portlet mode)
casService.proxyCallbackUrl=https://uportal.univ-rennes1.fr/esup-lecture/CasProxyServlet
  • casService.bean permet de spécifier le bean spring à utiliser. A savoir
    • servletCasServiceen mode servlet
    • portletCasServiceen mode pportlet
  • casService.service est positionné à http://uportal.univ-rennes1.fr/esup-lecture
    Cette propriété, utilisée uniquement en mode portlet, est le nom de service utilisé par le portail pour obtenir un PT pour esup-leture
  • casService.url est simplement l'adresse du serveur cas, éventuellement complété d'un chemin d'accès au service (ex: /cas)
  • casService.proxyCallbackUrl est positionné à https://uportal.univ-rennes1.fr/esup-lecture/CasProxyServlet
    Il est de la forme : https + <virtual_host> + <context esup-lecture> + CasProxyServlet
    Cette propriété définit l'URL qui sera utilisé par le serveur CAS pour transmettre un PGT à esup-lecture

web.xml esup-lecture

Une fois esup-lecture déployé en mode servlet le web.xml de l'application devrait ressembler à ceci (opération automatique via ant deploy) :

<?xml version="1.0"?>
.../...
    <context-param>
        <param-name>edu.yale.its.tp.cas.proxyUrl</param-name>
        <param-value>https://sso-cas.univ-rennes1.fr/proxy</param-value>
    </context-param>
.../...
    <filter>
        <display-name>CASFilter</display-name>
        <filter-name>CAS Filter</filter-name>
        <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
            <param-value>https://sso-cas.univ-rennes1.fr/login</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
            <param-value>https://sso-cas.univ-rennes1.fr/serviceValidate</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
            <param-value>uportal.univ-rennes1.fr</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.proxyCallbackUrl</param-name>
            <param-value>https://uportal.univ-rennes1.fr/esup-lecture/CasProxyServlet</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
   
    <servlet>
        <servlet-name>ProxyTicketReceptor</servlet-name>
        <servlet-class>edu.yale.its.tp.cas.proxy.ProxyTicketReceptor</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ProxyTicketReceptor</servlet-name>
        <url-pattern>/CasProxyServlet</url-pattern>
    </servlet-mapping>
     
.../...
</web-app>

edu.yale.its.tp.cas.proxyUrl est l'url du serveur CAS, utilisée par esup-lecture, pour obtenir un Proxy Ticket à partir du PGT obtenu par la servlet ProxyTicketReceptor

Web.xml du service produisant la source

A titre d'information voici le web.xml du context "/sources" contenant la source protégée par CAS (et accéder par esup-lecture grace à un Proxy Ticket CAS) :

    <filter>
        <description>The CAS filter, used to authenticate users.</description>
        <display-name>CASFilter</display-name>
        <filter-name>CAS Filter</filter-name>
        <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
            <param-value>https://sso-cas.univ-rennes1.fr/login</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
            <param-value>https://sso-cas.univ-rennes1.fr/proxyValidate</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
            <param-value>localhost:8080</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.authorizedProxy</param-name>
            <param-value>https://uportal.univ-rennes1.fr/esup-lecture/CasProxyServlet</param-value>
        </init-param>
        <init-param>
            <param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CAS Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

edu.yale.its.tp.cas.client.filter.authorizedProxy contient une liste de proxy autorisés (séparés par des espaces). On retrouve ici la même valeur que celle utilisée pour le paramètre edu.yale.its.tp.cas.client.filter.proxyCallbackUrl dans le web.xml de esup-lecture.

  • Aucune étiquette