Login Login
MORE

WIDGETS

Widgets

Wanted articles
Who is online?
Article tools

Metadane SAML

Z MAN-HA wiki


Metadane SAML opisują, w jaki sposób ma być realizowana komunikacja pomiędzy IdP i SP. Metadane są typowo prezentowane w postaci XML - w takiej formie jest realizowana publikacja metadanych i ich wymiana. Wewnętrznie, np. SimpleSAMLphp przechowuje metadane w postaci tablic zawierających definicje zmiennych. Aby zrozumieć zawartość metadanych, trzeba mieć podstawową znajomość XML-a oraz przestrzeni nazw.

Specyfikacja standardu OASIS Metadata for the SAML v. 2.0 definiuje zasady prezentacji takich informacji o obiektach SAML, zwanych encjami (entities), jak: identyfikatory encji (entity ID), punkty dostępu do usługi (endpoints), certyfikaty. Najnowsza errata tej specyfikacji to dokument z 2009r.

Encja, obiekt SAML to pop prostu usługa SAML działająca na jakimś serwerze, realizująca protokół SAML i pełniąca funkcję dostawcy tożsamości (IdP) lub dostawcy usługi (SP). Encje mają unikatowe nazwy, publikowane jako entityID.

W metadanych encje są prezentowane jako elementy <EntityDescriptor>. Element <EntitiesDescriptor> służy do tworzenia sekwencji elementów <EntityDescriptor>. Element <EntityDescriptor> definiuje metadane pojedynczej encji. Ta sama encja może wystepować w różnych rolach, m.in.:

Dostawca tożsamości - Identity Provider (IdP)

  <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" 
      entityID="https://..../idp/shibboleth">
  ....
  <md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  ....
  </md:IDPSSODescriptor>
  ....
 </md:EntityDescriptor>
 

W metadanych IdP występują następujące elementy:

  1. klucz publiczny <md:KeyDescriptor>
  2. wskazanie punktów dostępowych: <md:SingleLogoutService>, <md:ArtifactResolutionService>
  3. wspierane identyfikatory <md:NameIDFormat>
  4. wspierane atrybuty <saml:Attribute> (na razie nie wykorzystywane)

Dostawca usługi - Service Provider (SP)

 <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" 
      entityID="https://..../shibboleth">
  ....
  <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
  ....
  </md:SPSSODescriptor>
  ....
 </md:EntityDescriptor>
 

W metadanych SP występują następujące elementy:

  1. klucz publiczny <md:KeyDescriptor>
  2. wskazanie punktów dostępowych: <md:SingleLogoutService>, <md:AssertionConsumerService>, <md:ManageNameIDService>
  3. wspierane identyfikatory <md:NameIDFormat>
  4. atrybuty, które są potrzebne SP <md:AttributeConsumingService>

Dane adresowe/kontaktowe

W metadanych są również umieszczane dane kontaktowe związane z usługą. Zazwyczaj są podawane przed zamykającym elementem </md:EntityDescriptor>, np.

 <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" 
	entityID="https://.../idp/shibboleth"> 
  Metadane związane z rolą (IdP/SP)
  <md:Organization>
    <md:OrganizationName xml:lang="pl">… </md:OrganizationName>
    <md:OrganizationName xml:lang="en">… </md:OrganizationName>
    <md:OrganizationDisplayName xml:lang="en">…      	
    </md:OrganizationDisplayName>
    <md:OrganizationDisplayName xml:lang="pl">…      	
    </md:OrganizationDisplayName>
    <md:OrganizationURL xml:lang="pl">http://www.example.org/
    </md:OrganizationURL>
    <md:OrganizationURL xml:lang="en">http://www.example.org/
    </md:OrganizationURL>
  </md:Organization>
  <md:ContactPerson contactType="support">
    <md:GivenName>…..</md:GivenName>
    <md:EmailAddress>mailto:….</md:EmailAddress>
  </md:ContactPerson>
 </md:EntityDescriptor>
 

Informacje dodatkowe - rozszerzenie MDUI

W metadanych IdP i SP powinny być definiowane dodatkowe informacje umożliwiające bardziej przyjazną prezentację informacji o instytucji realizującej logowanie i o udostępnianej usłudze. Specyfikacja SAML V2.0 Metadata Extensions for Login and Discovery User Interface (MDUI) dokument OASIS określa specjalne rozszerzenie umożliwiające wpisywanie wielojęzycznych opisów, nazw uslug, umieszczanie znaku logo oraz podawanie precyzyjnych danych dotyczących położenia usługodawcy. Zaleca się dodanie w metadanych następujących elementów: <mdui:DisplayName> <mdui:Description> <mdui:InformationURL> <mdui:Logo> Rozszerzenie MDUI wprowadza się w ramach bloku <md:IDPSSODescriptor> lub <md:SPSSODescriptor>, w elemencie <md:Extentions>.

Przykład:

<md:Extensions>
  <mdui:UIInfo  xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui">
    <mdui:DisplayName xml:lang="en"> 
         PIONIER Consortium</mdui:DisplayName>
    <mdui:DisplayName xml:lang="pl">
         Konsorcjum PIONIER</mdui:DisplayName>
    <mdui:Description xml:lang="en">
         PIONIER Consortium Identity Provider 
    </mdui:Description>
    <mdui:Description xml:lang="pl">
       Dostawca Tożsamości Konsorcjum PIONIER 
    </mdui:Description>
    <mdui:Logo xml:lang="en" height="44" width="111">
       https://aai.pionier.net.pl/images/logo_pionier.gif
    </mdui:Logo>
  </mdui:UIInfo>
</md:Extensions>

Dostarczanie i pobieranie metadanych

Dostawca tożsamości (IdP), aby mógł kontaktować się dostawcami usług, musi mieć w swojej konfiguracji metadane tych dostawców. Podobnie dostawca usługi (SP), aby realizować logowanie federacyjne musi dysponować metadanymi dostawców tożsamości (IdP), za pośrednictwem których logują się użytkownicy. Na potrzeby testów, czy w celu kontaktu z konkretnymi dostawcami tożsamości/usług SP/IdP może utrzymywać lokalne kopie metadanych. Kopie takie powinny być pobierane w sposób bezpieczny i SP/IdP musi dbać o ich odświeżanie. Najlepszą metodą dostarczania metadanych do usługi jest korzystanie ze ze zdalnych metadanych przygotowanych i podpisanych przez federację. PIONIER.Id przygotowuje następujące metadane, patrz http://aai.pionier.net.pl/index.php?page=techniczne: