Kanet + CAS

bonjour à tous,

je suis en train de monter un portail captif à l’aide de “kanet” et d’une authentification CAS mais voila, je rencontre un problème (je ne serais pas la sinon me direz vous)

mon problème ::

Quand mon client veut aller sur le web il doit passer par mon portail et s’authentifier auprès de mon serveur CAS, jusque ici pas de problème.
La ou le bas blesse c’est que une foi authentifier mon client devrai avoir (grâce au ticket délivré pas CAS) accéder au web mais cela ne fonctionne pas et je suis toujours redirigé sur le serveur web de kanet…

fichier /etc/apache2/sites-enable/kanet :

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/apache2/server.crt
        SSLCertificateKeyFile /etc/apache2/server.key
        SSLVerifyClient none
        SSLProxyEngine On

        Alias /www /usr/share/kanet/

        ProxyPreserveHost On
        ProxyRequests On
        ProxyPass / http://127.0.0.1:8181/ disablereuse=on retry=0 flushpackets=on
        ProxyPassReverse / http://127.0.0.1/
        ProxyTimeout 3

        <location />
                Allow From All
        </location>

        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
</VirtualHost>

<VirtualHost *:8080>
        RewriteEngine ON
        RedirectMatch .* https://cas.toto.fr:8443/cas/?service=https://kanet.toto.fr/login_cas
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
</VirtualHost>

fichier /etc/kanet/kanet.conf

[code]/*
Configuration file for kanet
*/

{
/*
Server configuration
SERVER_MODE=“STANDALONE” (default) or “PROXY”
/
“SERVER_MODE” : “PROXY”,
“SERVER_URL” : “https://kanet.toto.fr”,
“SERVER_PORT” : “8181”,
“SERVER_IP” : “”,
“REDIRECT_SERVER_PORT” : “8080”,
“QUEUE_NUM” : “0”,
“SSL_CERT_FILE” : “/etc/kanet/ssl-kanet.crt”,
“SSL_KEY_FILE” : “/etc/kanet/ssl-kanet.key”,
“DEBUG” : “0”,
/

Persistent data,
only sqlite is available.
/
“database” : “sqlite”,
“sqlite_connection_string” : “/var/lib/kanet/kanet.sqlite”,
“mysql_connection_string” : “Server=xxx; Port=3306; Database=xxx; uid=xxx; pwd=xxx;”,
/

Server behavior
*/
“login_page” : “https://cas.toto.fr:8443/cas/?service=https://kanet.toto.fr/login_cas/”,
“captive_portal_page” : "https://kanet.toto.fr/www/update.html,
“cas_url” : “https://cas.toto.fr:8443/cas/”,
“www_path” : “/usr/share/kanet/”,
“module_path” : “/usr/lib”,
“auth_module_name” : “kanet-radiusclient”,

    /*
            blacklist acls
            always rejected.
    */
    "KANET_ACL_TYPE_BLACKLIST": [
            { "address" : "127.0.0.1", "port" : 9090 },
            { "port" : 8089 }
    ],
    /*
            open acls
            always open
    */
    "KANET_ACL_TYPE_OPEN": [
            { "address" : "kanet.toto.fr" },
            { "address" : "cas.toto.fr", },
            { "address" : "kanet.toto.fr" }
    ],
    /*
            default acls
            open to authenticated users.
    */
    "KANET_ACL_TYPE_DEFAULT": [
            { "port" : 8043 },
            { "port" : 443 },
            { "port" : 80 },
            { "port" : 8080 },
            { "port" : 8443 }
    ],

    /* Admins : comma separated login list */
    "admins": "colin,colin@upvm",
    /*
            blacklist_part
    */
    "blacklist_users" : [
            { "login" : "colin", "message" : "hi foo ! you're login have been locked .." },
            { "login" : "johndoe", "message" : "hi john doe ! this account is locked .." }
    ],
    "default_blacklist_message" : "Your account have been locked",

    /*
            auto_blacklist_acl
            used to inform user they are probably infected, if a user try to join
            one of this address, the user is automatically blacklisted and the message
            display on is login window
    */
    "auto_blacklist_acls": [
            { "address" : "192.168.1.45", "message" : "You're account have been temporarily locked <br/> because you're probably infected by a virus" },
            { "port" : 45678, "message" : "You're account have been temporarily locked <br/> because you're probably infected by a virus" }
    ],
    /*
            quota, in bytes or seconds. 0 is unlimited.
    */
    "bytes_quota" : "0",
    "time_quota" : "0",
    /*
            message
            variables : $upbytes $downbytes $duration
    */
    "update_msg" : "Up : $upbytes, Down: $downbytes, Time: $duration",
    "over_quota_msg" : "Sorry you exceed your quota",
    "blacklist_msg" : "Sorry, you're account have been locked",
    "update_error_msg" : "An error occured during authentication process, please restart your browser",

}
[/code]

je tourne en rond depuis un moment et commence à désespérer… le pire c’est que je suis sur que c’est un petit truc qui me bloque et je ne voit pas du tout d’où cela peut venir

merci d’avance

Salut,

je vois pas trop la solution mais voila ma config si ça peut aider.
une fois authentifier il y a redirection au contenu de la page protégé.

je ne pourrais pas t’aider d’avantage, je ne suis pas l’admin reseau qui gere le cas.
je me suis juste débrouiller pour que cela fonctionne sur une page web.

fait un test sur un simple répertoire avant de tester sur kanet, ça permettra de voir si ça fonctionne au moins.

tant que httpd.conf était pas présent ça fonctionnait pas chez moi.
/etc/apache2/httpd.conf

<IfModule mod_auth_cas.c>
     CASDebug On
     CASVersion 2
     CASLoginURL https://cas.univ.fr/cas/login
     CASValidateURL https://cas.univ.fr/cas/proxyValidate
     CASCertificatePath /etc/ssl/certs/ctchain.txt
     CASValidateServer on
</IfModule>
<VirtualHost ip:80>
	ServerAdmin webmaster@localhost
	
	DocumentRoot /var/www/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 
      <Directory /usr/lib/cgi-bin/>
      AllowOverride None
      Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all
      </Directory>
	<Directory /var/www/upload/>
                AuthName "depot de fichiers"
                AuthType CAS
                Require user user1 user2 user3
                CASAuthNHeader REMOTE_USER
        </Directory>


	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

rien à faire même en rajoutant le module libapache2-mod-auth-cas Saturne en rond…
je commence à désespéré.

j’ai fait des captures de trames au niveau du routeur et de mon client et tout va bien :

  • l’attribution du ticket par cas marche
  • quand je vais sur google après je voit bien l’échange avec mon client

Mais pas moyen que la page s’affiche.

j’ai une nouvelle erreur http 500 internal error quand je pointe sur google. Je me suis renseigner mais cette erreur apparait plus ou moins pour n’importe quoi…

je passe par un proxy (transparent) avant de sortir sur le web est il possible que au retour du proxy la trame perde le ticket se qui entrainerai un blocage par kanet.

Tu n’aurais pas une règle de Firewall foireuse, qui interdirait le retour sur le port 80? Tu n’as rien dans tes logs?

script iptables :

[code]#!/bin/sh

IPT="/sbin/iptables"

IP_PRIVATE="192.168.200.1"
NTINT=“eth1”

test -f $IPT || exit 0

case “$1” in
start)
echo -n "Loading kanet firewall’s rules: "
echo 1 > /proc/sys/net/ipv4/ip_forward

# Flush table
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t filter -F


$IPT -t mangle -A PREROUTING -i $NTINT -j CONNMARK --restore-mark
$IPT -t mangle -A PREROUTING -p TCP -i $NTINT -d $IP_PRIVATE -j ACCEPT
$IPT -t mangle -A PREROUTING -p TCP -i $NTINT -m state --state NEW -j QUEUE



$IPT -t nat -A PREROUTING -p TCP -i $NTINT -j CONNMARK --save-mark
# MARK 0xFFFFFFFF = Openacls
$IPT -t nat -A PREROUTING -p TCP -i $NTINT -m mark --mark 0xFFFFFFFF -j ACCEPT

# MARK 0xFFFFFFFE = use http-to-https redirection (Not implemented)
#$IPT -t nat -A PREROUTING -p TCP -i $NTINT -m mark --mark 0xFFFFFFFE -j DNAT --to-destination $IP_PRIVATE

# MARK 0x0 = unauthenticated - 80 is redirected to authentication page
$IPT -t nat -A PREROUTING -p TCP --dport 80 -i $NTINT -m mark --mark 0 -j DNAT --to-destination $IP_PRIVATE:8080


# MARK 0x1 blacklistacls
$IPT -t filter -A FORWARD -m mark --mark 0x1 -j REJECT

$IPT -t nat -A POSTROUTING -m mark ! --mark 0 -j MASQUERADE

echo "Done."
;;

stop)
echo -n "Flushing kanet firewall’s rules: "
echo 0 > /proc/sys/net/ipv4/ip_forward

###########################
# FLUSH TABLES
###########################
$IPT -t filter -F
$IPT -t nat -F
$IPT -t mangle -F
echo "Done."
;;

status)
# List tables
echo
echo "---------- FILTER TABLE -----------"
echo
$IPT -t filter -L -v
echo
echo "---------- NAT TABLE -----------"
echo
$IPT -t nat -L -v
echo
echo "---------- MANGLE TABLE -----------"
echo
$IPT -t mangle -L -v
echo
;;
restart|force-reload)
$0 stop
$0 start
echo “Done.”
;;

    *)
echo "Usage: /etc/init.d/kanet {start|stop|status|restart}"
exit 1
;;

esac

exit 0[/code]

dans les log rien de spécial a par cette erreur http 500.