ComeRilasciareAttributiShibv4

Da WIKI IDEM GARR.
Jump to navigation Jump to search

La risoluzione degli attributi (Attribute Resolver) è il processo di raccolta dei dati relativi ad un determinato soggetto dopo che questo si è autenticato nell'Identity Provider.

Il servizio Resolver non contiene direttamente i dati ma le istruzioni per recuperarli dalle varie fonti dei dati (Data Connectors - https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631564/DataConnectorConfiguration) e tramite la definizione degli attributi (Attribute Definition - https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631550/AttributeDefinitionConfiguration) il modo in cui i dati vengono usati, combinati e trasformati. I dati utente recuperati da questo processo sono salvati all'interno di oggetti chiamati IdPAttribute.

Nelle versioni precedenti dell'IdP Shibboleth, il servizio resolver era anche responsabile del collegamento dei cosiddetti AttributeEncoders agli oggetti da utilizzare successivamente per produrre l'Encoding specifico del protocollo SAML.

Questo è ancora supportato, ma con alcune eccezioni, un approccio migliore in V4 consiste nell'affidarsi a un insieme comune di regole di codifica contenute nella nuova AttributeRegistryConfiguration e basate su convenzioni ragionevoli per i nomi degli oggetti IdPAttribute. Ad esempio, se si accetta semplicemente di inserire l'indirizzo e-mail del soggetto in un IdPAttribute chiamato "mail", il registro sa come codificarlo in SAML automaticamente utilizzando il nome prescritto dallo standard [https://wiki.oasis-open.org/security/SstcSaml2AttributeX500Profile]

Per impostazione predefinita il servizio di risoluzione degli attributi si trova nel file attribute-resolver.xml  In esso sono definiti gli attributi da risolvere. È possibile specificare ed utilizzare più file "resolver" modificando il bean a cui fa riferimento la proprietà idp.service.attribute.resolver.resources(valore predefinito  shibboleth.AttributeResolverResourcesnel  file services.xml  ) o modificando la proprietà con un nome di bean diverso.

Attribute Registry

Il servizio Attribute Registry è una nuova aggiunta alla V4 che fornisce un modo più avanzato per configurare la relazione tra gli oggetti interni IdPAttribute che sono (per la maggior parte) prodotti da Attribute Resolver e il modo in cui i dati sono rappresentati nei protocolli supportati da il software come SAML, CAS o in futuro OIDC.

L'Attribute Registry è stato progettato per affrontare la mappatura dei dati tra formati indipendentemente dall'Attribute Resolver, che si occupa principalmente di come ottenere i dati e non di come codificarli.

Lo scopo di questo nuovo servizio Attribute Registry è supportare casi d'uso aggiuntivi che non erano, se non del tutto, supportati dal vecchio design, come ad esempio:

  • proxy di attributi ottenuti da provider SSO esterni che non provengono da Attribute Resolver
  • mappatura di SAML (o altri protocolli) in dati interni, come nel caso di  <RequestedAttribute>elementi nei metadati SAML
  • eliminare la necessità della definizione di attributi di tipo SimpleAttributeDefinition se utilizzato esclusivamente per collegare gli Encoders.

Per approfondimenti:

https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1272054306/AttributeRegistryConfiguration

Risoluzione degli attributi in Shibboleth IdP v4 seguendo le guide di IDEM

Se avete installato un IdP v4 seguendo le guide del servizio IDEM allora state sfruttando tutte le potenzialità del servizio Attribute Registry.

Questo significa che per definire un attributo non è necessario, nella maggior parte dei casi, attaccare alcun Encoder.

Al contrario, riportare nella v4 una definizione di attributo che funzionava nella versione v3 produrrà la duplicazione del valore di un attributo.

... esempio ...Inoltre, uno dei grandi vantaggi apportati da Attribute Registry è quello di eliminare la necessità di definire un attributo se questo ha un nome standard ed è recuperato, senza necessità di ulteriori trasformazioni, da un Data Connector in cui l'attributo stesso è stato definito nell'opzione exportAttributes.

Esempio: per rilasciare