Rootmanual:CAS

Från Lysators datorhandbok, den ultimata referensen.
Version från den 5 juli 2014 kl. 14.21 av Busk (diskussion | bidrag) (Skapade sidan med 'CAS står för Central Authentication Service, och är ett protokoll för Single Sign On. Kort går det ut på att användaren med sin webbläsare besöker en webbtjänst, som...')
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

CAS står för Central Authentication Service, och är ett protokoll för Single Sign On. Kort går det ut på att användaren med sin webbläsare besöker en webbtjänst, som, ifall du saknar en cas-ticket, skickar vidare anv. till CAS-servern där anv. får autentisera sig. Därefter skickas anv. tillbaks till webbtjänsten denne ville logga in på. Webbtjänsten tar då den ticket som användarens webbläsare skickar med anropet och kontrollerar denna mot CAS-servern. Om CAS svarar att den är prima vara så är användaren nu autentiserad mot webbtjänsten.

Något kort om AAA

AAA står för "authentication, authorization and accounting". Vad gäller Lysators webbtjänster är kanske främst de två första A:na intressanta.

Autentisering

Autentisering är alltså processen att någon verifierar att denna någon är den den utger sig för att vara. Det vill säga, användaren foo skriver in sitt användarnamn och lösenord och systemet verifierar att dessa stämmer.

Auktorisering

Auktorisering har med vad användaren får göra i ett system beroende på vilka roller denne antagit. T.ex. Så har kanske en oautentiserad besökare inte rätt se mer än ett inloggningsformulär på en webbplats. En inloggad, autentiserad, användare utan någon roll utöver just vanlig användare kanske har rätt att se och ändra sina egna uppgifter. En användare med andra roller, t.ex. administratör, har kanske rätt att se och ändra uppgifter för andra användare också, utöver sina egna uppgifter.

CAS används enbart för autentisering.

Hur CAS är uppsatt på Lysator

Lysator kör Jasig CAS, som är referensimplementationen. CAS-servern begagnar sig i vårt fall av RADIUS för att autentisera vid inloggningar, och radius-servern ifråga går i sin tur mot Lysators kerberos.

"Varför går inte CAS direkt mot Kerberos?", undrar du då. Svaret är att det verkade något mer involverat att sätta upp, medan freeradius var ganska trivialt att sätta upp. Att ställa in CAS att fråga radius-servern var också i sin tur ganska enkelt.

Freeradius

RADIUS är ett nätverksprotokoll som klarar av alla tre delarna av ovan nämnda AAA. Då denna radius-server bara går mot vår Kerberos så handlar det främst om det första A:et i det här fallet (Kerberos är ju för övrigt också ett nätverksprotokoll för autentisering -- börjar det bli mycket protokoll nu?). Nåväl, för det här syftet är freeradius uppsatt på följande vis (hjälpsam guide även om man kör t.ex. debian):

  • Du behöver en gnu/linux-server. I den här listan heter den <server>. Du behöver en kerberos-kdc (och en sådan har lysator ju).
  • Installera freeradius, freeradius-krb5, freeradius-utils
  • skapa en keytab (du behöver vara kerberosadmin, f.ö.).
$ kadmin -p <user>/admin
kadmin: ank -randkey radius/<server>.lysator.liu.se@LYSATOR.LIU.SE
  • Förmodligen behöver du även en host-principal.
kadmin: ank -randkey host/<server>.lysator.liu.se@LYSATOR.LIU.SE
  • Skapa själva keytab:en
ktadd -k /etc/krb5.keytab radius/<server>.lysator.liu.se@LYSATOR.LIU.SE
ktadd -k /etc/krb5.keytab host/<server>.lysator.liu.se@LYSATOR.LIU.SE
  • Testa att skapa tickets
ktadd -k -t radius/<server>.lysator.liu.se@LYSATOR.LIU.SE
ktadd -k -t host/<server>.lysator.liu.se@LYSATOR.LIU.SE
  • Nu är det dags att konfigurera radius-servern. Få filen
    /etc/freeradius/modules/krb5
    att se ut typ så här (detta konfigurerar själva autentiseringen, så att radiusservern vet vilken principal den ska använda):
krb5 {
        keytab = /etc/krb5.keytab
        service_principal = radius/<server>.lysator.liu.se
}
  • Efter det så konfigurerar vi själva klienten. Det går att ställa in för remote-klienter om man vill, men man kan gott nöja sig i det här steget med att ställa in localhost.
    /etc/freeradius/clients.conf
    heter filen och "
    client localhost
    " kan se ut ungefär såhär:
client localhost {
        ipaddr = 127.0.0.1
        require_message_authenticator = no
        secret = <NÅGON JÄTTEHEMLIG SAMLING AV RANDOM TECKEN HÄR>
        nastype = other
}
  • För att ställa in att default är att autentisera mot kerberos, redigera
    /etc/freeradius/sites-available/default
    och lägg in följande i authenticate-blocket:
        Auth-Type Kerberos {
             krb5
        }
  • Starta om freeradius. Kan vara en bra idé att testa att det fungerar också (kom att inte spara bash-historiken (eller för den delen, skapa en testkerberosprincipal) för detta steg om du är rädd om ditt lösenord, vilket du ju borde vara):
$ radtest <användarnamn> <lösenord> localhost 0 <den där hemligheten från clients.conf>
    • Om användaruppgifterna var riktiga bör du få tillbaks en Access-Accept, i annat fall får du en Access-Reject. Går det helt åt skogen så får du nog laga det själv ;)