Security Assertion Markup Language
Security Assertion Markup Language (SAML) je standard založený na XML poskytující mechanismus pro výměnu autentizačních a autorizačních dat mezi zúčastněnými stranami, tj. poskytovatelem služeb a poskytovatelem identity. Je vyvíjen organizací OASIS. Funguje na principu „prosazení“ důvěry, tedy aplikace může prosadit, že jde o určitého uživatele a ten má určitá privilegia.
V praxi řeší SAML problém jednotného přihlašování na více webů – Single Sign-On (SSO). Nějaký portál autentizuje uživatele. Uživatel se připojí k jinému portálu a ten si vyžádá informace z předcházejícího portálu. Pokud dostane správné a ověřené informace, dojde k již zmíněnému prosazení důvěry i na tento portál a uživatel bude i zde automaticky autentizován.
Je tedy vhodné rozdělení na poskytovatele identity a poskytovatele služeb. Pokud chce uživatel přistupovat ke zdrojům poskytovatele služeb, pak jeho identitu zkontroluje jeho poskytovatel identity a ten posílá informace poskytovateli služeb, u kterého uživatel žádá o poskytnutí služby. Tímto se odpovědnost za ověření identity přesunuje vždy na poskytovatele identity. Tato koncepce vede k ustanovení tzv. federací, které si mohou navzájem vyměňovat informace o autentizaci subjektu. SAML poskytuje pouze distribuci samotné informace mezi zúčastněnými stranami, a proto nezáleží na jejím počtu. Standard neurčuje samotné ověřování identity u poskytovatele identit.
Nejčastější použití SAML
- Web SSO (Single Sign-On)
- Distribuovaná transakce
- Autorizační služba[1]
Web Single Sign-On (jediné přihlášení na webu)
Uživatel se přihlásí na server A a je zde autentizován. Později se chce přihlásit na server B. Bez užití SSO by musel své autentizační údaje zadávat znovu. Pokud je užit SAML, pak server B pošle požadavek na server A s dotazem, zda je již uživatel na A autentizován. Server A odpoví prohlášením, že uživatel je autentizován. Poté B zpřístupňuje své zdroje, aniž by vyžadoval opětovné zadání přihlašovacích údajů (login).
Distribuovaná transakce
Uživatel použije přihlášení k nějaké službě serveru A (kupuje dům) a poté chce jinou službu od serveru B (chce dům pojistit). Uživatel poté může předat informace o existenci svého profilu (adresa, jméno…) na A serveru B. Ten pošle dotaz podle standardu SAML serveru A, ve kterém bude chtít veškeré informace, které o uživatelovi má. A tyto informace pošle ve formě tvrzení – odpověď.
Autorizační služba
Pomocí této služby je možno zasílat potvrzení, že je někdo k něčemu autorizován, oprávněn, například k platbě, objednání zboží apod. Uživatel chce provést za organizaci nějakou akci. Poskytovatel služby požádá danou organizaci o potvrzení, zda daný uživatel smí akci za univerzitu provést. Rozdíl oproti předchozím případům je v tom, že jde nejen o potvrzení identity, ale i o svolení k dané akci či operaci.
SAML tvrzení
Základem zprávy je tedy SAML tvrzení na jehož základě je prosazena důvěra na jiném serveru. V podstatě se jedná o XML dokument, který obsahuje bezpečnostní informace, které učinila tzv. identifikační autorita. Tvrzení SAMLu neprovádějí autentizaci, ale slouží pouze k obalení, zapouzdření tohoto procesu autentizace.
Každé tvrzení obsahuje:
- ID tvrzení
- Subjekt jméno + bezpečnostní doména
- Podmínky pro ověření tvrzení
- Přídavné informace
- Vydavatel tvrzení, podpis
Autorita může o subjektu prohlásit 4 druhy výroků:
- Autentizace
- Atribut
- Autorizace
- (příp. uživatelem definované)
Autentizace
Autentizační výrok říká, že uvedený subjekt byl autentizován konkrétními prostředky M (jméno, heslo, lístek Kerberos, klíčem od XKMS aj.) v konkrétním čase T. Toto tvrzení je reprezentováno elementem <AuthenticationStatement> a typicky ho vydává tzv. identity provider (SAML autorita). Autentizace se používá z důvodů zavedení SSO.
Atribut
Tvrzení, že uvedený subjekt je svázán s atributy A, B a tedy s odpovídajícími hodnotami a, b atd. Výrok atribut je použitelný pro distribuovanou transakci a autorizační službu.
Rozhodnutí o autorizaci
Žádost o povolení přístupu typu A (číst, psát, mazat) uvedeného subjektu k uvedeným zdrojům R (webové zdroje) byla povolena nebo zamítnuta. O tomto rozhoduje vydávající autorita. Rozhoduje o tom na základě přítomnosti evidence E žádající strany. Zdroj R může být webová služba nebo webová stránka. Toto tvrzení je reprezentováno elementem <AuthorizationDecisionStatement>.
Historie a verze
Skupina OASIS se v roce 2001 rozhodla definovat XML framework pro výměnu autentizačních a autorizačních informací. Vycházela z již existujících standardů:
- Security Services Markup Language (S2ML) od Netegrity
- AuthXML od Securant
- XML Trust Assertion Service Specification (X-TASS) od VeriSign
- Information Technology Markup Language (ITML) od Jamcracker
SAML od verze 1.0 prošel jednou menší a jednou větší revizí. Nyní se používá verze 2.0, která není kompatibilní s předchozími.
- SAML 1.0 byl přijat jako OASIS standard v listopadu 2002
- SAML 1.1 byl přijat jako OASIS standard v září 2003
- SAML 2.0 se stal OASIS standardem v březnu 2005[2]
Stavební bloky komunikace v SAMLu
Standard SAML využívá řadu stávajících norem a standardů:
Tvary SAML zpráv jsou specifikovány s použitím XML schémat.
- XML Signature
Obě verze SAML 1.1 a SAML 2.0 používají digitální podpisy (založené na standardu XML Signature) pro autentizaci a integritu zaslané zprávy.
- XML Encryption
Pomocí protokolu XML Encryption (XML šifrování), SAML 2.0 poskytuje možnosti pro šifrování jmen, atributů, a celých tvrzení (SAML 1.1 nemá šifrovací schopnosti).
- SOAP a Hypertext Transfer Protocol (HTTP)
SAML využívá pro svoji komunikaci protokol HTTP a SOAP. SAML požadavky nebo odpovědi jsou nejprve zabaleny do SOAP obálky a poté ještě do HTTP obálky, aby mohly být přenášeny přes síť Internet. Tato procedura obalování se nazývá obecně SAML Binding. Konkrétní typy se dělí podle toho, které části komunikace se týkají. Např. SAML SOAP Binding, HTTP POST Binding nebo HTTP Redirect (GET) Binding.
SAML profily
SAML profily detailně popisují, jak jsou SAML tvrzení, protokoly, a vazby (Bindings) kombinovány za určitým specifickým účelem použití.[3]
Použití
V praxi se dnes nejčastěji můžeme setkat s použitím SAMLu ve standardu OpenID nebo u technologie Shibboleth, používané především na univerzitě. OpenID je používáno především pro jednotné přihlašování na webech. Shibboleth provozuje většinou domovská organizace a poskytuje jiným službám pouze bezpodmínečně nutné informace, zda je např. uživatel oprávněn k danému úkonu. Nemusí poskytovat ID uživatele ani např. jméno, stačí pouze svolení. Obě technologie jsou volně dostupné a používají open source nástroje a standardy.
Reference
- Odkaz BRECHLEROVÁ, Dagmar. XML bezpečnost a její uplatnění v univerzitním informačním prostředí. Praha, 2008. 152 s. Dizertační práce. Vysoká škola ekonomická v Praze.
- Odkaz, MISHRA, Prateek Differences between OASIS Security Assertion Markup Language (SAML) V1.1 and V1.0. In OASIS Draft [online]. 21.5.2003 [cit. 2010-11-14].
- Odkaz SATRAPA, Pavel. LUPA.cz [online]. 8. 12. 2005 [cit. 2010-11-14]. Shibboleth – identifikujte se jen jednou.