CAS PHP klient

Version 2.1 by Petr Abrahamczik on 08.02.2019 09:24

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

  1. Do aplikace je potřeba přidat knihovny klienta. Pokud využíváme composer lze to provést pomocí příkazu composer require jasig/phpcas a nebo je možné knihovnu stáhnout a přidat ručně.
  2. Stáhnout certifikát certifikáční autority CAS serveru ze stránky https://pki.cesnet.cz/cs/ch-tcs-ev-ssl-ca-3-crt-crl.html
  3. Příklad aplikace. Adresu https://klient.vsb.cz je potřeba nahradit adresou aplikace a certifikát je potřeba mít ve stejném adresáři jako tento soubor.
    <?php

    // pri pouziti composer
    require_once './vendor/autoload.php';

    // initialize phpCAS
    phpCAS::client(CAS_VERSION_3_0,'www.sso.vsb.cz',443,'');

    // Nastavení certifikátu (nebo certifikační autority) serveru CAS
    phpCAS::setCasServerCACert('chain_TERENA_SSL_High_Assurance_CA_3.pem');

    // zapnutí podpory single sign out (omezení pouze na CAS server)
    phpCAS::handleLogoutRequests(true, array("www.sso.vsb.cz"));

    // provede autentizaci
    if (isset($_REQUEST['login'])) {
    phpCAS::forceAuthentication();
    }

    // odhlaseni
    if (isset($_REQUEST['logout'])) {
    //  odhlaseni z CAS
    phpCAS::logout();

    //  odhlaseni s presmerovanim zpatky
    // phpCAS::logoutWithRedirectService('https://klient.vsb.cz');
    }

    ?>


    <html>
      <head>
        <title>php CAS Example</title>
      </head>
      <body>

      <p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>

    <?php
    // zde je již uživatel autentizován
    if (phpCAS::isAuthenticated()) {
    ?>


        <h1>Successfull Authentication!</h1>
    <p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
        <p><a href="?logout">Log Out</a></p>

    <?php
    // uzivatel neni autentizovan
    } else {
    ?>


        <h1>Unauthenticated!</h1>

    <p><a href="?login">Log In</a></p>

    <?php
    }
    ?>


      </body>
    </html>