LDAP, Kerberos, SAML

Přehled - proč tyhle technologie

  • LDAP - základ Windows domény - Active Directory ~ LDAP

  • Kerberos - základ Windows domény - autentizace počítačů a uživatelů

  • SAML2 - propojení intranetu s internetem

LDAP

  • Lightweight Directory Protocol - adresářová služba

  • široce podporováno v informačních systémech

  • uložení informací popisujících organizaci ve standardním datovém modelu

  • standardní protokol pro přístup k datům ve standardním datovém modelu

    • organizační struktura

    • uživatelé

    • skupiny

    • další zdroje (počítače, tiskárny, místnosti, …​)

LDAP standardy

  • LDAP: Roadmap RFC4510

  • LDAP: The Protocol RFC4511

  • LDAP: Directory Information Models RFC4512

  • LDAP: Authentication Methods and Security Mechanisms RFC4513

  • LDAP: String Representation of Distinguished Names RFC4514

  • LDAP: String Representation of Search Filters RFC4515

  • LDAP: Uniform Resource Locator RFC4516

  • LDAP: Syntaxes and Matching Rules RFC4517

  • LDAP: Internationalized String Preparation RFC4518

  • LDAP: Schema for User Applications RFC4519

LDAP - datový model

  • stromová struktura - Directory Information Tree (DIT)

  • uzel stromu - entry

  • entry - obsahuje atributy

  • atribut je dvojice

    • popis (cn, o, l, name, o, ou, givenName, firstName, member)

    • jedna nebo více hodnot

  • hodnota

    • data, jejichž význam je definován schematem a syntaxí

  • schema - využívá se OID

    • definuje typy atributů

    • porovnávací pravidla

    • syntaxe atributu

LDAP - schema

  • definuje typy atributů

  • základní schéma v RFC4519

  • hierarchické (subtype/supertype)

( 2.5.4.41 NAME 'name'
         EQUALITY caseIgnoreMatch
         SUBSTR caseIgnoreSubstringsMatch
         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
( 2.5.4.7 NAME 'l'
         SUP name )
  • objektový model typů entry s děděním

LDAP - syntaxe hodnot

  • definuje možné hodnoty atributů

  • základní syntaxe v RFC4517

  • jednoduché - DirectoryString, Numeric

  • strukturované - ASN.1 struktury pro různé účely

LDAP - jména

  • distinguished name (DN)

    • cesta ve stromové struktuře

    • analogie absolutní cesty na souborovém systému

    • uspořádaný seznam RDN

  • relative distinguished name (RDN)

    • rozlišení na jedné úrovni stromu

    • jeden nebo více atributů s hodnotou

LDAP - protokol

  • bind - přihlášení

  • search - vyhledávání

  • update - zápis

LDAP - bind

  • podporuje různé metody pomocí SASL

  • simple bind

    • využívá atributy typu password, který má speciální vlastnosti

    • ověří shodu hesla

LDAP - URL

  • umožňuje zapsat dotaz do LDAP jako URL

  • ldap://host:port/dn?attributes?scope?filter

  • ldap://ldap1.example.net:6666/o=University of Michigan, c=US?mail?sub?(cn=Somebody)

LDAP - update

  • modify

  • add

  • delete

  • modify DN

  • speciální formát LDIF - textový formát pro zápis operací

Praktické použití

  • Windows Active Directory

  • konfigurace přihlášení v Apache HTTPD

LDAP ve Windows doméně

Domain Controller - LDAP server

> nslookup
> set type=SRV
> _ldap._tcp.domena.com

na serveru nástroj ADSI Edit

my budeme k ukázkám používat Apache Directory Studio

LDAP pro přihlášení v Apache HTTPD

  • mod_authnz_ldap

    • pracuje s basic autentizací - uživatelské jméno a heslo je přenesené v hlavičce HTTP požadavku

  • fáze autentizace

    • vyhledání uživatele podle zadaného username

    • provedení simple bind pomocí vyhledaného záznamu a hesla z HTTP požadavku

  • fáze autorizace - podle konfigurace je prověřováno

    • příslušnost ke skupině

    • existence atributu s konkrétní hodnotou

    • pozitivní výsledek konkrétního filtru

Kerberos

  • protokol pro autentizaci v lokální síti

  • single sign on - SSO - jedno přihlášení se přenáší mezi službami

  • vyžaduje synchronizovaný čas na všech počítačích

  • založen na tzv.ticketech

    • základní Ticket Granting Ticket

    • reprezentuje session a zpřístupňuje další služby

  • oboustranná autentizace

  • možnost delegace oprávnění apod.

  • http://www.youtube.com/watch?v=7-LjpO2nTJo

Kerberos - termíny

  • ticket - struktura umožňující autentizovat

  • principal - entita, kterou je možné autentizovat

  • user principal name - identifikátor uživatele

  • service principal name - provázání služby na konkrétní účet

    • <service class>/<host>:<port>/<service name>

    • LDAP/SE-DCxxx.xxxxx.com/groupinfra.com

    • host/cz410000vm2.xxxxx.com

Kerberos schéma (zdroj wikipedia)

Kerberos protocol.svg

Kerberos ve WIndows

  • všudypřítomný

  • přihlášení uživatele na počítač

  • přístup ke sdíleným diskům, tiskárnám apod.

  • každá aplikace může použít Kerberos pro autentizaci

  • SPNEGO - použití ve Web aplikacích

  • příkaz

    • klist

    • klist purge

Federalizace - obecně

  • "outsourcing" autentizace

  • účastníci

    • spoléhající strana

      • relying party - RP

      • service provider - SP

    • poskytovatel identity

      • identity provider - IdP

  • protokoly

    • Kerberos (částečně pomocí trustu)

    • SAML2

    • OpenID Connect

  • za jednotným protokolem může být libovolný způsob autentizace

SAML2

  • Securit Assertion Markup Protocol v2

  • Federalizační protokol

  • založený na XML

  • IdP na žádost RP generuje tzv. assertions

    • identita

    • členství ve skupině

    • …​ cokoli …​

  • postupem času mnoho rozšíření, vlastností

  • existují různé scénáře - my se soustředíme na ten nejobvyklejší

SAML2

saml guidance saml flow

SAML2 - metadata

  • metadata SP definují

    • požadavky na odpověď

    • povolené návratové (a jiné) URL

    • certifikáty a klíče

  • metadata IdP

    • vlastnosti požadavku

    • URL pro zahájení autentizace

    • URL pro získání assertions

    • podporované scénáře

    • certifikáty a klíče