IDENTITY AND ACCESS MANAGEMENT
[an error occurred while processing this directive]

TargetedID generation for shib version 2.x

Summary: This describes the method for used by the University of Washington to generate and maintain TargetedId attributes.

Download:
  1. Postgres schema
A Shibboleth TargetedID is an opaque string, unique to each user and service provider, that can facilitate long-term user sessions, but that cannot be used to identify the user.

Shibboleth does not provide a viable way to maintain TargetedIDs in a production environment. Our method stores TargetedIDs in external, Postgres databases. generating the values only as needed. Redundant databases, with automatic replication and failover, are easily achieved.

These requirements for TargetedIDs are commonly encountered.

  • The TargetedID should remain invarient between shibboleth version upgrades, major and minor. This is most difficult to achieve with the example method distributed with shibboleth.

  • The TargetedID should remain invarient if a Service Provider (SP) changes its name.

  • An collection of service providers (e.g., a service-provider-domain (SPD?)) may want to use the same TargetedID for the entire set of SPs.

  • A service provider may want to change a TargetedID for a single individual, if it was compromised, for example.

  • The TargetedID should have the same level of availability and redundancy as other components of the idP.

To maintain these TargetedIDs (TID) we use a Postgres database on each IdP system. These database servers are configured such that:

  • Any query for a TargetedID either retrieves an existing id or creates and returns a new id.

  • By design, the generated id will be the same on all systems.

  • Each IdP uses first its own database, with automatic failover to its peers' databases.

  • An RP record must exist in the rp table before any targeted ids will be generated or issued.

  1. Database Schema:

    The Postgres database maintains two simple tables: a list of relying partes (rp; and the targeted ids of each user-rp pair (tgtid).

    Table*Contents
    tgtidone row for each user/RP combination.
    regidour invarient user identifier (uwRegID).
    rpnoa number assigned by us to each relying party. More than one RP entityId could share a number.
    tgtidthe TargetID: (MD5 hash of a secret + the user's regid + the rpno)
    rpone row per RP entityId.
    rpnothe RP's number
    rpidthe RP's entity id

    • The tables are linked by the common rpno attribute.
    • Records in tgtid will be automatically generated as necessary and do not need to be preloaded.
    • See the schema details.

  2. Query and Update Functions:

    The stored procedure on the database either

    1. returns an existing tgtid for a user-RP combination;
    2. generates, inserts into the table, and returns a new tgtid if one does not exist.

  3. Replication:

    Each IdP host maintains a tgtid database. Since they use the same secrets, their generated tgtids will be the same. Synchronization is needed only when the secret changes, when a specific entry needs to be deleted, or when an RP is added to the rp table.

The system uses a relational database connector with the SQL statement

select tid('${uwRegID.get(0)}', '${requestContext.getInboundMessageIssuer()}')

  • Where the uwRegID is a unique user attribute.


[an error occurred while processing this directive]
Jim Fox
UW Technology
Identity and Access Management
University of Washington
fox@washington.edu
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
Fox's Home

© 1983-2017, University of Washington