Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Detta är en guide för hur man sätter upp sk pseudonya identifierare för Shibboleth IdP:n. Instruktionerna är baserade på en Ubuntu eller debian-baserad Linux men motsvarande bör funka även på andra unix-varianter och Windows. Instruktionerna är baserade på https://www.switch.ch/aai/docs/shibboleth/SWITCH/2.1/idp/install-idp-2.1-debian.html#shibboleth-idpImage Removed och https://spaces.internet2.edu/display/SHIB2/IdPPersistentNameIdentifierImage Removed.

En pseudonym identifierare är en permanent, anonym identifierare som är unik för en kombination av IdP, SP och användare. En sådan identfierare kan inte användas för att korrelera information mellan SPer och innehåller heller inte någon persondata. En pseudonym identifierare är oftast lämplig att lämna ut till alla SPer.

Info

SWAMID rekommenderar att alla IdPer lämnar ut pseudonymer som SAML 2.0 NameID samt som attribut av typen eduPersonTargetedID till alla SPer.

Table of Contents

...

Instruktionerna nedan åstadkommer precis detta.

Det finns två sätt att skapa pseudonyma identiferare: antingen genom att beräkna en hash-funktion över ett antal ingångsvärden (bla användarens lokala användarnamn, SPns entityID och en unik nyckel) eller genom att lagra en sk UUID i en databas. Båda alternativen har för och nackdelar:

  • Beräknade identifierare
    • är mycket enkla enkelt att komma igång med.
    • kan inte hantera att en SP eller IdP byter entityID eller
    • kan inte hantera att en användare byter uid (sAMAccountName)
    • är deprekerade i shibboleth och kan vara svårt att få att fungera i en modern version
  • Lagrade identifiera
    • kräver en databas på IdPn
    • stödjer revokering av identifierare
    • kan hantera att en SP eller IdP byter entityID eller
    • kan hantera att en användare byter uid (sAMAccountName)

Det finns vissa möjligheter att börja med en beräknad identifierare och sedan migrera till en lagrad men det mest framtids-säkra är att börja med en lagrad identifierare direkt.

Alternativ 2: Lagrad identifierare

Installera mysql:

Code Block

# apt-get install mysql-server

.. under installationen sätts ett root-lösenord ..

Databas

Skapa en databas...

Code Block

# mysql -p
... använd lösenordet från installationen
mysql> SET NAMES 'utf8';
SET CHARACTER SET utf8;
CHARSET utf8;
CREATE DATABASE IF NOT EXISTS shibboleth CHARACTER SET=utf8;
USE shibboleth;
Query OK, 0 rows affected (0.00 sec)

Skapa en tabell...

Code Block

mysql> CREATE TABLE IF NOT EXISTS shibpid (
  localEntity TEXT NOT NULL,
  peerEntity TEXT NOT NULL,
  principalName VARCHAR(255) NOT NULL default '',
  localId VARCHAR(255) NOT NULL,
  persistentId VARCHAR(36) NOT NULL,
  peerProvidedId VARCHAR(255) default NULL,
  creationDate timestamp 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=MyISAM DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)

skapa slutligen en user och ge rättigheter på tabellen. Denna user bör ha ett annat lösenord än hemligt123.

Code Block

mysql> create user shibboleth identified by 'hemligt123';
Query OK, 0 rows affected (0.00 sec)
mysql> grant ALL on shibboleth.shibidp to 'shibboleth'@'localhost';
Query OK, 0 rows affected (0.00 sec)

JDBC

Hämta en JDBC-connector för mysql från http://dev.mysql.com/downloads/connector/j/Image Removed (tex mysql-connector-java-5.1.13.tar.gz). Packa upp i lämplig katalog och kopiera jar-filen (tex mysql-connector-java-5.1.13-bin.jar) till den katalog där din servlet-motor kan hitta den. För jboss är det $JBOSS_HOME/server/default/lib.

...

eftersom shibboleth numera i princip inte längre stödjer beräknade identifierare är valet ganska enkelt. Vi rekommenderar att man i det enklaste fallet med en IdP som inte ingår i ett kluster kör en mysqld på samma server som kör IdPn så att man inte introducerar ytterligare beroenden. Se dock till att denna mysqld inte är öppen för världen för att undvika evt säkerhetsproblem.

...