1 / 19

Pseudoanonimowy identyfikator użytkownika

Pseudoanonimowy identyfikator użytkownika. Maja Górecka-Wolniewicz mgw@umk.pl. Przekazywanie przez IdP informacji o użytkowniku. Po udanym uwierzytelnieniu IdP może przekazać do SP dodatkowe informacje o użytkowniku

Download Presentation

Pseudoanonimowy identyfikator użytkownika

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pseudoanonimowy identyfikator użytkownika Maja Górecka-Wolniewiczmgw@umk.pl

  2. Przekazywanie przez IdP informacji o użytkowniku • Po udanym uwierzytelnieniu IdP może przekazać do SP dodatkowe informacje o użytkowniku • IdP korzysta ze wskazanego źródła danych w celu pobrania informacji o użytkowniku, konfiguracja IdP ustala, jakie atrybuty mogą być udostępniane (zbiór A) • podczas rejestracji SP w federacji wskazywane są wymagania SP odnośnie atrybutów, w metadanych SP powinny być wymienione atrybuty, z których SP korzysta (zbiór B) • SP otrzymuje przekrój zbiorów A i B • IdP powinien wysyłać do SP tzw. pseudoanonimowy identyfikator, który jest unikatowy dla danego użytkownika w odniesieniu do tej usługi (SP)

  3. eduPersonTargetedID / persistentId • Schemat eduPerson definiuje atrybut eduPersonTargetedID(urn:oid:1.3.6.1.4.1.5923.1.1.1.10) jako • A persistent, non-reassigned, opaqueidentifier for a principal czyli • identyfikator stały (nie zmieniający się przy kolejnych logowaniach), niepowtarzalny, przezroczysty, czyli nie ujawniający tożsamości użytkownika

  4. Format persistent ID • Identyfikator ma format określany w SAML2 jako "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" • Specyfikacja OASIS Assertions and Protocols for the OASISSecurity Assertion Markup Language(SAML) V2, w rozdziale 8.3.7 definiuje PersistentIdentifiernastępująco: • jest to stały, transparentny identyfikator, specyficzny dla danego użytkownika, IdP oraz SP lub stowarzyszenia SP (affiliation) • identyfikator MUSI być generowany przez IdP przy użyciu liczby losowej nie mającej żadnego powiązania z identyfikatorem użytkownika • długość identyfikatora nie może przekroczyć 256 znaków

  5. eduPersonTargetedIDapersistentId • Atrybut eduPersonTargetedIDzostał zdefiniowany na potrzeby tworzenia trwałego identyfikatora w Shibboleth, gdy korzystano jeszcze z SAML 1.1 • Wartość eduPersonTargetedIDbyła przekazywana jako wartość atrybutu SAML • Obecnie rekomendowanym sposobem przekazywania trwałego identyfikatora do SAML 2.0 SP jest umieszczanie go w elemencie Subject przekazywanego poświadczenia (assertion)

  6. Przekazywanie persistent ID w elemencie Subject <saml2:Subject>   <saml2:NameID xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:2.0:nameid- format:persistent" NameQualifier="https://idp.example.org/idp/shibboleth" SPNameQualifier="https://sp.example.org/shibboleth">   84e411ea-7daa-4a57-bbf6-b5cc52981b73   </saml2:NameID> </saml2:Subject>

  7. persistent ID jako atrybut SAML 2.0 • Alternatywne podejście to przekazanie persistent ID jako atrybutu o nazwie formalnej "urn:oid:1.3.6.1.4.1.5923.1.1.1.10 " <saml2:Attribute xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" FriendlyName="eduPersonTargetedID">   <saml2:AttributeValue>     <saml2:NameID         Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" NameQualifier="https://idp.example.org/idp/shibboleth" SPNameQualifier="https://sp.example.org/shibboleth">       84e411ea-7daa-4a57-bbf6-b5cc52981b73     </saml2:NameID>   </saml2:AttributeValue> </saml2:Attribute>

  8. ShibbolethIdP • Tworzenie trwałego identyfikatora przebiega następująco: • przygotowujemy konektor do bazy danych (data connector) o nazwie StoredID – służy on do tworzenia / pobierania wartości • utworzenie definicji atrybutu operującego na StoredID • Tworzymy bazę danych o nazwie shibboleth bazie danych i tablicę shibpid i dostosowujemy plik konfiguracji ShibbolethIdP – conf/attribute-resolver.xml

  9. Tablica do przechowywania identyfikatorów CREATE TABLE IF NOT EXISTS shibpid ( localEntityTEXT NOT NULL, peerEntityTEXT NOT NULL, principalNameVARCHAR(255) NOT NULL DEFAULT '', localId VARCHAR(255) NOT NULL, persistentIdVARCHAR(36) NOT NULL, peerProvidedIdVARCHAR(255) DEFAULT NULL, creationDatetimestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deactivationDate TIMESTAMP NULL DEFAULT NULL, KEY persistentId (persistentId), KEY persistentId_2 (persistentId, deactivationDate), KEY localEntity (localEntity(16), peerEntity(16), localId), KEY localEntity_2 (localEntity(16), peerEntity(16), localId, deactivationDate) ) ENGINE=MyISAMDEFAULT CHARSET=utf8;

  10. DataConnector <resolver:DataConnectorxsi:type="dc:StoredId" xmlns="urn:mace:shibboleth:2.0:resolver:dc" id="storedID" sourceAttributeID="eduPersonPrincipalName" generatedAttributeID="persistentId" salt="1qaasfkdakdakakakagkalkg"> <resolver:Dependency ref="myLDAP" /> <dc:ApplicationManagedConnection jdbcDriver="com.mysql.jdbc.Driver" jdbcURL="jdbc:mysql://localhost:3306/shibboleth?autoReconnect=true" jdbcUserName="shibboleth" jdbcPassword="zaqWSX12" /> </resolver:DataConnector>

  11. Definicja atrybutu <resolver:AttributeDefinitionxsi:type="ad:SAML2NameID" id="eduPersonTargetedID" sourceAttributeID="persistentId" nameIdFormat= "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> <resolver:Dependency ref="storedID" /> <resolver:DisplayNamexml:lang="en"> Targeted ID </resolver:DisplayName> <resolver:DisplayNamexml:lang="pl"> Targeted ID </resolver:DisplayName>

  12. Definicja atrybutu <resolver:DisplayDescriptionxml:lang="en"> Targeted ID: A uniqueidentifier for a person, different for each service provider. </resolver:DisplayDescription> <resolver:DisplayDescriptionxml:lang="pl"> Targeted ID: identyfikator specyficzny dla danego SP </resolver:DisplayDescription> <resolver:AttributeEncoder xsi:type="enc:SAML2XMLObject" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="eduPersonTargetedID" /> </resolver:AttributeDefinition>

  13. Definicja atrybutu <resolver:AttributeDefinition id="persistentId" xsi:type="ad:Simple" sourceAttributeID="persistentId"> <resolver:Dependency ref="storedID"/> <resolver:AttributeEncoder xsi:type="enc:SAML2StringNameID" nameFormat= "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" /> </resolver:AttributeDefinition>

  14. <resolver:AttributeDefinitionxsi:type="ad:SAML2NameID" id="eduPersonTargetedID" sourceAttributeID="persistentId" nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> <resolver:Dependency ref="storedID" /> <resolver:DisplayNamexml:lang="en">Targeted ID</resolver:DisplayName> <resolver:DisplayNamexml:lang="pl">Targeted ID</resolver:DisplayName> <resolver:DisplayDescriptionxml:lang="en"> Targeted ID: A uniqueidentifierdifferentfor eachSP </resolver:DisplayDescription> <resolver:DisplayDescriptionxml:lang="pl"> Targeted ID: unikatowy identyfikator specyficzny dla SP </resolver:DisplayDescription> <resolver:AttributeEncoderxsi:type="enc:SAML2XMLObject" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="eduPersonTargetedID" /> </resolver:AttributeDefinition>

  15. SimpleSAMLphpIdP • Atrybuty eduPersonTargetedID/persistentID są generowane przez dodawany przez dedykowane filtry: • saml:PersistentNameID – generuje identyfikator persistent Id o formacie urn:oasis:names:tc:SAML:2.0:nameid-format:persistent na podstawie wskazanego atrybutu oraz wartości secretsalt ustalonej w pliku config/config.php • saml:SQLPersistentNameID – generuje identyfikator persistent Id i umieszcza go w bazie danych SQL • SSP musi mieć skonfigurowany dostęp do zasobów SQL, w tym celu należy ustawić w pliku config/config.phpopcję store.type 'store.type' => 'sql',

  16. SSP – generowanie persistentId / eduPersonTargetedID 'authproc.idp' => array( 1 => array( 'class' => 'saml:SQLPersistentNameID', 'attribute' =>'eduPersonPrincipalName', 'AllowCreate' => "true" ),

  17. 90 => array( 'class' => 'consent:Consent', 'store' => 'consent:Cookie', 'focus' => 'yes', 'checked' => TRUE ), 95 => array( 'class' => 'saml:PersistentNameID2TargetedID' , 'attributename' => 'eduPersonTargetedID', 'nameId' => TRUE ), 100 => array( 'class' => 'core:AttributeMap', 'name2oid'), ),

  18. eduPersonTargetedIdparametr attributeencodings • eduPersonTargetedID powinien być wysyłany w postaci NameID, w tej sytauacji trzeba zadeklarować w metadata/saml20-idp-hosted.php: 'attributeencodings' => array( 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' => 'raw', ), • raw oznacza, że atrybuty mają być przekazywane bez żadnej modyfikacji, dzięki temu jest możliwe przekazywanie odpowiedzi w postaci XML

More Related