CAS PHP klient

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

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 apereo/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-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,'','https://klient.vsb.cz');

    // Nastaveni certifikatu (nebo certifikacni autority) serveru CAS
    phpCAS::setCasServerCACert('chain_geant_ov_rsa_ca_4_full.pem');

    // zapnuti podpory single sign out (omezeni 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'])) {
    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 jiz uzivatel autentizovan
    if (phpCAS::isAuthenticated()) {
    ?>

        <h1>Successfull Authentication!</h1>
    <p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
     
        <h2>User Attributes</h2>
        <ul>
     
    <?php
    foreach (phpCAS::getAttributes() as $key => $value) {
       if (is_array($value)) {
           echo '<li>', $key, ':<ol>';
           foreach ($value as $item) {
               echo '<li><strong>', $item, '</strong></li>';
            }
           echo '</ol></li>';
        } else {
           echo '<li>', $key, ': <strong>', $value, '</strong></li>' . PHP_EOL;
        }
    }
    ?>
     
        <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>