Toru 2829 10 2014 Pseudoanonimowy identyfikator uytkownika Maja

  • Slides: 19
Download presentation
Toruń 28/29. 10. 2014 Pseudoanonimowy identyfikator użytkownika Maja Górecka-Wolniewicz mgw@umk. pl

Toruń 28/29. 10. 2014 Pseudoanonimowy identyfikator użytkownika Maja Górecka-Wolniewicz mgw@umk. pl

Przekazywanie przez Id. P informacji o użytkowniku • Po udanym uwierzytelnieniu Id. P może

Przekazywanie przez Id. P informacji o użytkowniku • Po udanym uwierzytelnieniu Id. P może przekazać do SP dodatkowe informacje o użytkowniku – Id. P korzysta ze wskazanego źródła danych w celu pobrania informacji o użytkowniku, konfiguracja Id. P 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 • Id. P powinien wysyłać do SP tzw. pseudoanonimowy identyfikator, który jest unikatowy dla danego użytkownika w odniesieniu do tej usługi (SP)

edu. Person. Targeted. ID / persistent Id • Schemat edu. Person definiuje atrybut edu.

edu. Person. Targeted. ID / persistent Id • Schemat edu. Person definiuje atrybut edu. Person. Targeted. ID (urn: oid: 1. 3. 6. 1. 4. 1. 5923. 1. 10) jako – A persistent, non-reassigned, opaque identifier 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

Format persistent ID • Identyfikator ma format określany w SAML 2 jako "urn: oasis:

Format persistent ID • Identyfikator ma format określany w SAML 2 jako "urn: oasis: names: tc: SAML: 2. 0: nameid-format: persistent" • Specyfikacja OASIS Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V 2, w rozdziale 8. 3. 7 definiuje Persistent Identifier następująco: – jest to stały, transparentny identyfikator, specyficzny dla danego użytkownika, Id. P oraz SP lub stowarzyszenia SP (affiliation) – identyfikator MUSI być generowany przez Id. P 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

edu. Person. Targeted. ID a persistent Id • Atrybut edu. Person. Targeted. ID został

edu. Person. Targeted. ID a persistent Id • Atrybut edu. Person. Targeted. ID został zdefiniowany na potrzeby tworzenia trwałego identyfikatora w Shibboleth, gdy korzystano jeszcze z SAML 1. 1 • Wartość edu. Person. Targeted. ID był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)

Przekazywanie persistent ID w elemencie Subject <saml 2: Subject> <saml 2: Name. ID xmlns:

Przekazywanie persistent ID w elemencie Subject <saml 2: Subject> <saml 2: Name. ID xmlns: saml 2="urn: oasis: names: tc: SAML: 2. 0: assertion" Format="urn: oasis: names: tc: SAML: 2. 0: nameidformat: persistent" Name. Qualifier="https: //idp. example. org/idp/shibboleth" SPName. Qualifier="https: //sp. example. org/shibbol eth"> 84 e 411 ea-7 daa-4 a 57 -bbf 6 -b 5 cc 52981 b 73 </saml 2: Name. ID> </saml 2: Subject>

persistent ID jako atrybut SAML 2. 0 • Alternatywne podejście to przekazanie persistent ID

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. 10 " <saml 2: Attribute xmlns: saml 2="urn: oasis: names: tc: SAML: 2. 0: assertion" Name. Format="urn: oasis: names: tc: SAML: 2. 0: attrname-format: uri" Name="urn: oid: 1. 3. 6. 1. 4. 1. 5923. 1. 10" Friendly. Name="edu. Person. Targeted. ID"> <saml 2: Attribute. Value> <saml 2: Name. ID Format="urn: oasis: names: tc: SAML: 2. 0: nameid-format: persistent" Name. Qualifier="https: //idp. example. org/idp/shibboleth" SPName. Qualifier="https: //sp. example. org/shibboleth"> 84 e 411 ea-7 daa-4 a 57 -bbf 6 -b 5 cc 52981 b 73 </saml 2: Name. ID> </saml 2: Attribute. Value> </saml 2: Attribute>

Shibboleth Id. P • Tworzenie trwałego identyfikatora przebiega następująco: – przygotowujemy konektor do bazy

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

Tablica do przechowywania identyfikatorów CREATE TABLE IF NOT EXISTS shibpid ( local. Entity TEXT

Tablica do przechowywania identyfikatorów CREATE TABLE IF NOT EXISTS shibpid ( local. Entity TEXT NOT NULL, peer. Entity TEXT NOT NULL, principal. Name VARCHAR(255) NOT NULL DEFAULT '', local. Id VARCHAR(255) NOT NULL, persistent. Id VARCHAR(36) NOT NULL, peer. Provided. Id VARCHAR(255) DEFAULT NULL, creation. Date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, deactivation. Date TIMESTAMP NULL DEFAULT NULL, KEY persistent. Id (persistent. Id), KEY persistent. Id_2 (persistent. Id, deactivation. Date), KEY local. Entity (local. Entity(16), peer. Entity(16), local. Id), KEY local. Entity_2 (local. Entity(16), peer. Entity(16), local. Id, deactivation. Date) ) ENGINE=My. ISAM DEFAULT CHARSET=utf 8;

Data. Connector <resolver: Data. Connector xsi: type="dc: Stored. Id" xmlns="urn: mace: shibboleth: 2. 0:

Data. Connector <resolver: Data. Connector xsi: type="dc: Stored. Id" xmlns="urn: mace: shibboleth: 2. 0: resolver: dc" id="stored. ID" source. Attribute. ID="edu. Person. Principal. Name" generated. Attribute. ID="persistent. Id" salt="1 qaasfkdakdakakakagkalkg"> <resolver: Dependency ref="my. LDAP" /> <dc: Application. Managed. Connection jdbc. Driver="com. mysql. jdbc. Driver" jdbc. URL="jdbc: mysql: //localhost: 3306/shibboleth? auto. Recon nect=true" jdbc. User. Name="shibboleth" jdbc. Password="zaq. WSX 12" /> </resolver: Data. Connector>

Definicja atrybutu <resolver: Attribute. Definition xsi: type="ad: SAML 2 Name. ID" id="edu. Person. Targeted.

Definicja atrybutu <resolver: Attribute. Definition xsi: type="ad: SAML 2 Name. ID" id="edu. Person. Targeted. ID" source. Attribute. ID="persistent. Id" name. Id. Format= "urn: oasis: names: tc: SAML: 2. 0: nameid-format: persistent"> <resolver: Dependency ref="stored. ID" /> <resolver: Display. Name xml: lang="en"> Targeted ID </resolver: Display. Name> <resolver: Display. Name xml: lang="pl"> Targeted ID </resolver: Display. Name>

Definicja atrybutu <resolver: Display. Description xml: lang="en"> Targeted ID: A unique identifier for a

Definicja atrybutu <resolver: Display. Description xml: lang="en"> Targeted ID: A unique identifier for a person, different for each service provider. </resolver: Display. Description> <resolver: Display. Description xml: lang="pl"> Targeted ID: identyfikator specyficzny dla danego SP </resolver: Display. Description> <resolver: Attribute. Encoder xsi: type="enc: SAML 2 XMLObject" name="urn: oid: 1. 3. 6. 1. 4. 1. 5923. 1. 10" friendly. Name="edu. Person. Targeted. ID" /> </resolver: Attribute. Definition>

Definicja atrybutu <resolver: Attribute. Definition id="persistent. Id" xsi: type="ad: Simple" source. Attribute. ID="persistent. Id">

Definicja atrybutu <resolver: Attribute. Definition id="persistent. Id" xsi: type="ad: Simple" source. Attribute. ID="persistent. Id"> <resolver: Dependency ref="stored. ID"/> <resolver: Attribute. Encoder xsi: type="enc: SAML 2 String. Name. ID" name. Format= "urn: oasis: names: tc: SAML: 2. 0: nameid-format: persistent" /> </resolver: Attribute. Definition>

<resolver: Attribute. Definition xsi: type="ad: SAML 2 Name. ID" id="edu. Person. Targeted. ID" source.

<resolver: Attribute. Definition xsi: type="ad: SAML 2 Name. ID" id="edu. Person. Targeted. ID" source. Attribute. ID="persistent. Id" name. Id. Format="urn: oasis: names: tc: SAML: 2. 0: nameidformat: persistent"> <resolver: Dependency ref="stored. ID" /> <resolver: Display. Name xml: lang="en">Targeted ID</resolver: Display. Name> <resolver: Display. Name xml: lang="pl">Targeted ID</resolver: Display. Name> <resolver: Display. Description xml: lang="en"> Targeted ID: A unique identifier different for each SP </resolver: Display. Description> <resolver: Display. Description xml: lang="pl"> Targeted ID: unikatowy identyfikator specyficzny dla SP </resolver: Display. Description> <resolver: Attribute. Encoder xsi: type="enc: SAML 2 XMLObject" name="urn: oid: 1. 3. 6. 1. 4. 1. 5923. 1. 10" friendly. Name="edu. Person. Targeted. ID" /> </resolver: Attribute. Definition>

Simple. SAMLphp Id. P • Atrybuty edu. Person. Targeted. ID/persistent. ID są generowane przez

Simple. SAMLphp Id. P • Atrybuty edu. Person. Targeted. ID/persistent. ID są generowane przez dodawany przez dedykowane filtry: – saml: Persistent. Name. ID – generuje identyfikator persistent Id o formacie urn: oasis: names: tc: SAML: 2. 0: nameidformat: persistent na podstawie wskazanego atrybutu oraz wartości secretsalt ustalonej w pliku config/config. php – saml: SQLPersistent. Name. ID – 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. php opcję store. type 'store. type' => 'sql',

SSP – generowanie persistent. Id / edu. Person. Targeted. ID 'authproc. idp' => array(

SSP – generowanie persistent. Id / edu. Person. Targeted. ID 'authproc. idp' => array( 1 => array( 'class' => 'saml: SQLPersistent. Name. ID', 'attribute' =>'edu. Person. Principal. Name', 'Allow. Create' => "true" ),

90 => array( 'class' => 'consent: Consent', 'store' => 'consent: Cookie', 'focus' => 'yes',

90 => array( 'class' => 'consent: Consent', 'store' => 'consent: Cookie', 'focus' => 'yes', 'checked' => TRUE ), 95 => array( 'class' => 'saml: Persistent. Name. ID 2 Targeted. ID' , 'attributename' => 'edu. Person. Targeted. ID', 'name. Id' => TRUE ), 100 => array( 'class' => 'core: Attribute. Map', 'name 2 oid'), ),

edu. Person. Targeted. Id parametr attributeencodings • edu. Person. Targeted. ID powinien być wysyłany

edu. Person. Targeted. Id parametr attributeencodings • edu. Person. Targeted. ID powinien być wysyłany w postaci Name. ID, w tej sytauacji trzeba zadeklarować w metadata/saml 20 -idp-hosted. php: 'attributeencodings' => array( 'urn: oid: 1. 3. 6. 1. 4. 1. 5923. 1. 10' => 'raw', ), – raw oznacza, że atrybuty mają być przekazywane bez żadnej modyfikacji, dzięki temu jest możliwe przekazywanie odpowiedzi w postaci XML