Security Assertion Markup Language

Z Wikipedie, otevřené encyklopedie

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[editovat | editovat zdroj]

Web Single Sign-On (jediné přihlášení na webu)[editovat | editovat zdroj]

Na tuto kapitolu je přesměrováno heslo single sign-on.

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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 organizaci 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í[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

Žá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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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.

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.

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[editovat | editovat zdroj]

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í[editovat | editovat zdroj]

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.

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. 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.
  2. 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].
  3. Odkaz SATRAPA, Pavel. LUPA.cz [online]. 8. 12. 2005 [cit. 2010-11-14]. Shibboleth – identifikujte se jen jednou.