SlideShare a Scribd company logo
Installation to SSO Chad La Joie [email_address]
Tour of What We Learned SWITCH AAI Demo Page:  http://aai-demo.switch.ch
Terms:  Entity ID A unique identifier for a identity provider ( IdP ) or service provider ( SP )‏ In shibboleth 2 the recommended format is a URL idp: https://HOSTNAME/idp/shibboleth sp: http://HOSTNAME/shibboleth
Terms:  Relying Party The SAML peer to which the IdP is communicating. In all existing cases, the relying party of the IdP is always an SP.  Some very advanced cases allow one IdP to be a relying party to another IdP.
Terms:  Binding A description of how a SAML message is attached to an underlying transport protocol, such as http or smtp. For example: If the message is sent over HTTP what HTTP headers need to be set, what are the URL or form parameter names, etc.
Terms:  Profile A description of how to use SAML, over a specific binding, to accomplish a specific task (e.g. Single Signon) in an interoperable manner. Profiles are the finest grained unit of interoperability within SAML.
Terms:  Metadata A description of the SAML features supported by a SAML entity.  Most importantly this includes the URLs for communicating with an entity. Shibboleth also uses this information to build technical trust between entities.
Lets take a Closer Look http://www.switch.ch/aai/demo/2/medium.html
Installation Unpack the Shibboleth distribution unzip -d /usr/local/src /opt/installfest/shibboleth-idp-2.0.0-bin.zip Change to  /usr/local/src/identityprovider chmod +x ant.sh Run the installation script; ./ant.sh answer  yes , this is a new install use  /opt/shibboleth-idp  as your shib home directory enter your hostname:  idp # .example.com enter  password  for your password
SHIB_HOME /opt/shibboleth-idp  should now contain: bin conf credentials lib logs metadata war The Shibboleth documentation refers to this directory as SHIB_HOME
SHIB_HOME/bin Contains command line tools aacli : Attribute authority command line interface allows you to simulate an attribute query/release version : Provides the version of the IdP
SHIB_HOME/conf The IdP’s configuration files. We’ll cover most as we go through the course.  We will not cover  service.xml  or  internal.xml  as these control advanced features.
SHIB_HOME/credentials Credentials used by the IdP. By default the IdP’s generated key (idp.key), cert (idp.crt) and a keystore (idp.jks) containing both are put here. Good location to place things like trust anchor X.509 certs, cached CRLs, etc.
SHIB_HOME/lib The libraries (jars) that make up the IdP. These are copies of those that occur in the IdP WAR file and are only used by the command line tools.
SHIB_HOME/logs Location of the Shibboleth log files. process log : detailed description the IdP processing requests access log : record of all the clients that connect to the idP audit log : record of all information sent out from the IdP
SHIB_HOME/metadata Default location where various metadata files are stored. The IdP does not automatically load any metadata.  Metadata read from a file, or stored backup copies of remote metadata are usually put in this directory.
SHIB_HOME/war The location of the IdP WAR file created by the installer. We point Tomcat to this file, instead of copying it to Tomcat, so that we don’t forget to copy new WARs if we rebuild the IdP (to add an extension, for example) or run into problems with Tomcat’s file caching mechanisms.
Metadata: Configuration Metadata is loaded in to the IdP by  metadata providers . Metadata providers are configured in the  relying-party.xml  file This file may only contain one top-level provider. By default the top level provider is a chaining provider that contains other metadata providers and uses them in the order defined.
Metadata: Provider Config Metadata providers are configured using  <MetadataProvider>  element Every metadata provider has a: unique ID given by the  id  attribute type given by the  xsi:type  attribute Each type of metadata provider has its own set of configuration options Metadata provider may have a single filter defined by  <MetadataFilter>
Metadata: Filesystem Provider The filesystem metadata provider reads a metadata file from the local filesystem. Type attribute value: FilesystemMetadataProvider Configuration attribute: metadataFile   gives the path to the metadata file
Metadata: File-backed HTTP Provider Loads metadata via HTTP and backs it up to a local file Type attribute value: FileBackedHTTPMetadataProvider Configuration Attributes: metadataURL : HTTP URL of metadata file backingFile : location of the backup file cacheDuration : max time between refreshes Refreshes metadata automatically, no more cron jobs!
Metadata: Watchout The chaining metadata provider looks up relying party information in its children in the order they are defined.  If two child providers load different metadata for the same entity only the first description will ever be used by the IdP. No attempt to merge the data is made.
Metadata: UK Configuration Define the provider <MetadataProvider id=“ ukfederation ” xsi:type=&quot;FileBackedHTTPMetadataProvider” xmlns=&quot;urn:mace:shibboleth:2.0:metadata” metadataURL=“ http://metadata.ukfederation.org.uk/ukfederation-metadata.xml ” backingFile=” /opt/shibboleth-idp/metadata/ukfed.xml ”> <!-- Filter for requiring and validating digital signature --> <MetadataFilter xsi:type=&quot;SignatureValidation” xmlns=&quot;urn:mace:shibboleth:2.0:metadata&quot; trustEngineRef=&quot;shibboleth.SignatureTrustEngine&quot; requireSignedMetadata=&quot;true&quot; /> </MetadataProvider>
Metadata: UK Configuration Download UK Federation Certificate curl http://metadata.ukfederation.org.uk/ukfederation.pem >    /opt/shibboleth-idp/credentials/ukfederation.pem Add Certificate to  shibboleth.SignatureTrustEngine  trust engine <security:TrustEngine  xsi:type=&quot;security:StaticExplicitKeySignature&quot; id=&quot;shibboleth.SignatureTrustEngine&quot;> <Credential xsi:type=&quot;X509Filesystem” xmlns=&quot;urn:mace:shibboleth:2.0:security&quot; id=” UKFederationTrustAnchor&quot; > <Certificate> /opt/shibboleth-idp/credentials/ukfederation.pem </Certificate> </Credential> </security:TrustEngine>
Terms:  Authentication Method An identifier that a relying party may use to stipulate how authentication should be performed. Authentication method identifiers correspond to a prescription of how authentication is done (even if the details are only in someone’s head).
Terms:  Login Handler An IdP component that correlates all supported authentication methods with currently configured authentication mechanisms. A login handler may map more than one authentication method to the same authentication mechanism.
Terms:  Session State information about the user, currently active authentication methods, and services to which they are signed into. A user’s IdP session is created the first time they authenticate but may outlive the lifetime of all authentication methods.
Login Handler: Configuration Login handlers are configured in  handler.xml <LoginHandler>  defines a login handler Every login handler definition has a  xsi:type  attribute that defines the type of the handler.  Each type has its own set of configuration options. Each  <LoginHandler>  must contain at least one  <AuthenticationMethod>  indicating what authentication method it provides
Login Handler: UsernamePassword Login handler that prompts for a username/password and validates against a JAAS module (LDAP & Kerberos 5 currently supported)‏ Type attribute value: UsernamePassword Configuration attributes: jaasConfigurationLocation  path to the JAAS configuration file
Login Handler: UsernamePassword Edit the  login.config Uncomment the LDAP login modules Configure it like this: edu.vt.middleware.ldap.jaas.LdapLoginModule   required host=” ldap.example.org ” base=&quot; ou=people,dc=example,dc=org &quot; userField=&quot; uid &quot;;
Login Handler: UsernamePassword Edit  handler.xml Comment out RemoteUser handler Uncomment UsernamePassword handler Add unspecified authentication method <AuthenticationMethod>   urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified </AuthenticationMethod>
Login Handler: Authentication Duration Each authentication mechanism supports an activity timeout After this timeout expires the mechanism is considered inactive for that user. If the user attempts to access a new service provider that requires that authentication mechanism they must re-authenticate. It is configured by the  authenticationDuration  attribute on the  <LoginHandler> Its value is the number of minutes of inactivity and its default value is 30.
Forced Authentication Only works with mechanisms that can re-authenticate a user. RemoteUser does not support forced authentication. The service provider will receive an error if the IdP can not support forced authentication
Terms:  Authentication Mechanism A concrete mechanism used to authenticate a user. Shibboleth 2 currently supports REMOTE_USER, user/pass against LDAP & Kerberos, and IP address based mechanisms.
Attribute Resolution
Terms:  Attribute A piece of information about a user.  Each attribute has a unique ID and has zero of more values. Shibboleth attributes are protocol-agnostic data structures.
Terms:  SAML Attribute An attribute that is represented in SAML notation. Shibboleth transforms attributes into SAML attributes by a process known as encoding.
Terms:  Data Connector A plugin that creates  multiple  attributes from information in data sources like LDAP and databases. Shibboleth currently supports static, LDAP, relational database, computed, and stored ID data connectors.
Data Connection Configuration Data connectors are configured in  attribute-resolver.xml <DataConnector>  defines a data connector Every data connector has a  id  attribute that uniquely identifies it. Every data connector has a  xsi:type  attribute that defines the type of the handler.  Each type has its own set of configuration options.
Data Connector Configuration Some connectors will need information collected by another plugin in order to work.  This is represented by a  <resolver:Dependency ref=“NAME” /> The dependency is declared before any other configuration elements. The value of the  ref  attribute is the ID of the plugin upon which the connector depends.
Data Connector Failover Data connectors may define failover connectors such that if the data connector fails the failover connector is invoked. If more than one failover connector is defined they are tried in order until one succeeds. They are defined using: <resolver:FailoverDataConnector ref=&quot; CONNECTOR_ID_1 &quot; />
Terms:  Attribute  Definition A plugin that creates a  single  attribute by transforming other attributes and state information. Shibboleth currently supports simple, scoping, regex, mapping, template, scripting, principal name, and principal authentication method attribute definitions.
Attribute Definition Configuration Attribute definitions are configured in  attribute-resolver.xml <AttributeDefinition>  defines a definition Every definition has a  id  attribute that uniquely identifies it. Every definition has a  xsi:type  attribute that defines the type of the handler.  Each type has its own set of configuration options.
Attribute Definition Configuration Most definitions will need information collected by another plugin in order to work.  This is represented by a  <resolver:Dependency ref=“NAME” /> The dependency is declared before any other configuration elements. The value of the  ref  attribute is the ID of the plugin upon which the definition depends.
Terms:  Attribute Encoder A plugin that converts an attribute into a protocol specific form, like a SAML attribute. Attribute encoders are associated with an attribute through the attribute’s attribute definition.
Attribute Encoder Configuration Attribute encoders are configured as children of an attribute definition. <AttributteEncoder>  defines an encoder Every definition has a  xsi:type  attribute that defines the type of the handler.  Each type has its own set of configuration options.
Terms:  Principal Connector A plugin that converts a name identifier, provided by a relying party, into the internally used userid.
Terms:  Attribute Resolver A subsystem in Shibboleth responsible for fetching, transforming, and associating encoders with attributes. Only attributes produced by attribute definitions leave the resolver and are available to other parts of the system.
More About Attribute Dependencies Any resolver plugin may have any number of dependencies. If more than one dependency provides the same attribute the dependant plugin operates on the effective union of values Attribute definitions may be marked with a  dependencyOnly=“true”  attribute.  This ensures the value is never released outside the resolver (and speeds up filtering a bit).
Some Examples – LDAP Connector <resolver:DataConnector xsi:type=&quot;LDAPDirectory&quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:dc&quot;   id=&quot; MyLDAP &quot;   ldapURL=&quot; LDAP_URL &quot;   baseDN=&quot; BASE_DN &quot;   principal=&quot; PRINCIPAL_NAME &quot;  principalCredential=&quot; PRINCIPAL_CREDENTIAL &quot;> <FilterTemplate> <![CDATA[ ( uid =${requestContext.principalName})‏ ]]> </FilterTemplate> <ReturnAttributes> x y z </ReturnAttributes>
Some examples – Static Connector <resolver:DataConnector id=&quot; staticEntitlements &quot; xsi:type=&quot;dc:Static&quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:dc&quot;> <Attribute id=&quot; eduPersonEntitlement &quot;> <Value> urn:mace:dir:entitlement:common-lib-terms </Value> </Attribute> </resolver:DataConnector>
Example – Simple Directory Lookup of epe <resolver:AttributeDefinition id=&quot; eduPersonEntitlement &quot; xsi:type=&quot; Simple &quot;  xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; sourceAttributeID=&quot; shibentitlement &quot;> <resolver:Dependency ref=&quot; myLDAP &quot; /> <!-- Attribute encoders --> </resolver:AttributeDefinition>
Example – Attribute Encoders <resolver:AttributeEncoder xsi:type=&quot; SAML1String&quot; xmlns=&quot;urn:mace:shibboleth:2.0:attribute:encoder&quot; name=&quot; urn:mace:dir:attribute   -def:eduPersonEntitlement &quot; /> <resolver:AttributeEncoder xsi:type=&quot; SAML2String&quot; xmlns=&quot;urn:mace:shibboleth:2.0:attribute:encoder&quot; name=&quot; urn:oid:1.3.6.1.4.1.5923.1.1.1.7 &quot; friendlyName=&quot; eduPersonEntitlement &quot; />
Some examples – Static entitlements <resolver:AttributeDefinition id=&quot; eduPersonEntitlement &quot; xsi:type=&quot; Simple &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; sourceAttributeID=&quot; shibentitlement &quot;> <resolver:Dependency   ref=&quot; staticEntitlements &quot; /> <!-- Attribute Encoders --> </resolver:AttributeDefinition>
Example – Computing epe from group membership <resolver:AttributeDefinition xsi:type=&quot;Script&quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; id=&quot; eduPersonEntitlement &quot;> <Dependency ref=&quot;MyLDAP&quot; /> <Script> <![CDATA[   // Script here ]]> </Script> </resolver:AttributeDefinition>
Example – Continued <![CDATA[ importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider); epe = new BasicAttribute(&quot;eduPersonEntitlement&quot;); for (i = 0; i<isMemberOf.getValues().size(); i++ {   if (isMemberOf.getValues().get(i)).equals(&quot;STF&quot;){   epe.getValues().add(&quot;member&quot;);   epe.getValues().add(&quot;staff&quot;); } } ]]>
Example – eptid computed <resolver:AttributeDefinition xsi:type=&quot; Scoped &quot;   id=&quot; eduPersonTargetedID &quot;   xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot;   scope=&quot; example.org &quot;   sourceAttributeID=&quot; computedID &quot;> <resolver:Dependency ref=&quot; computedIDConnector &quot; /> </resolver:AttributeDefinition> <resolver:DataConnector xsi:type=&quot; ComputedId &quot;  xmlns=&quot;urn:mace:shibboleth:2.0:resolver:dc&quot;  id=&quot; computedIDConnector &quot;  generatedAttributeID=&quot; computedID &quot;  sourceAttributeID=&quot; uid &quot;  salt=&quot; your random string here &quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> </resolver:DataConnector>
Example – eptid stored <resolver:AttributeDefinition xsi:type=&quot; Scoped &quot;   id=&quot; eduPersonTargetedID &quot;   xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot;   scope=&quot; example.org &quot;   sourceAttributeID=&quot; storedID &quot;> <resolver:Dependency ref=&quot; storedIDConnector &quot; /> </resolver:AttributeDefinition>
Example - Continued <resolver:DataConnector xsi:type=&quot; StoredId &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:dc&quot; id=&quot; storedIDConnector &quot; generatedAttributeID=&quot; storedID &quot; sourceAttributeID=&quot; uid &quot; salt=&quot; ThisIsRandomText &quot;> <resolver:Dependency ref=&quot;MyLDAP&quot; /> <ApplicationManagedConnection   jdbcDriver=&quot;DRIVER_CLASS&quot; jdbcURL=&quot;DATABASE_URL&quot;   jdbcUserName=&quot;DATABASE_USER&quot;   jdbcPassword=&quot;DATABASE_USER_PASSWORD&quot; /> <!-- Remember to JDBC driver in correct place --> </resolver:DataConnector>
Example – Continued Database created with: CREATE TABLE shibpid ( localEntity VARCHAR NOT NULL, peerEntity VARCHAR NOT NULL, principalName VARCHAR NOT NULL, localId VARCHAR NOT NULL, persistentId VARCHAR NOT NULL, peerProvidedId VARCHAR NULL, creationDate TIMESTAMP NOT NULL, deactivationDate TIMESTAMP NULL )‏
Example – adding scope <resolver:AttributeDefinition   id=&quot; eduPersonPrincipalName &quot;   xsi:type=&quot; Scoped &quot;   xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot;   scope=&quot; example.org &quot;   sourceAttributeID=&quot; uid &quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> </resolver:AttributeDefinition>
Example - prescoped <resolver:AttributeDefinition   id=&quot; eduPersonPrincipalName &quot;   xsi:type=&quot; Precoped &quot;   xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot;   scope=&quot; example.org &quot;   sourceAttributeID=&quot; shibeppn &quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> </resolver:AttributeDefinition>
Attribute Filtering
Terms:  Attribute Filter Policy A policy containing a trigger, that indicates if the policy is active, and a set of attribute value filters.
Attribute Filter Policy Configuration Attribute filters are defined in  attribute-filter.xml Attribute filter policies are declared with  <AttributeFilterPolicy> Every filter policy has a single  id  attribute that provides a unique name for the policy.
Terms:  Policy Requirement Rule A specific requirement that must be met in order for an attribute filter policy to in effect. An attribute filter policy may only have one requirement rule but some rules allow child rules to be declared and combined.
Policy Requirement Rule Configuration <PolicyRequirementRule>  defines a requirement rule. Every rule has a  xsi:type  attribute that defines its type.  Each type has its own set of configuration options. Every attribute filter policy must have one, and only one, policy requirement rule
Terms:  Attribute Rule A rule, specific to an attribute, that determines which values are released to a relying party. An attribute filter policy may have any number of attribute rules.
Attribute Rule Configuration A rule representing the set of values released to a relying party. <AttributeRule>  defines a rule. Every rule has an  attributeID  attribute that identifies the attribute, by ID, to which the rule applies
Terms:  Permit Value Rule A rule that determines if an attribute value is permitted to be released to a relying party.
Permit Value Rule Configuration A rule that signifies a value should be released to the requester. <PermitValueRule>  defines a rule. Every rule has a  xsi:type  attribute that defines its type.  Each type has its own set of configuration options.
Attribute Filtering Gotchyas Only those values explicitly permitted are ever released There is no way to expressly deny the release of an attributes so be careful how your attribute filter policies overlap (deny value rules will be in 2.1)‏ Rules that operate on an attributes’ values will not take into consideration value scopes.
Example – Release eptid & eppn to anyone <AttributeFilterPolicy id=&quot; releaseToAnyone &quot;> <PolicyRequirementRule xsi:type=&quot;basic:ANY&quot; /> <AttributeRule attributeID=&quot; eduPersonTargetedID &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> <AttributeRule attributeID=&quot; eduPe...cipalName &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> </AttributeFilterPolicy>
Example – Release eppn to specific SPs <AttributeFilterPolicy  id=&quot; releaseEPPN &quot;>   <PolicyRequirementRule xsi:type=&quot;basic:OR&quot;>   <basic:Rule   xsi:type=&quot; saml:AttributeRequesterString &quot;   value=&quot; https://sdauth.sciencedirect.com/sp &quot; /> <basic:Rule   xsi:type=&quot; saml:AttributeRequesterString &quot;   value=&quot; urn:mace:athens:somesp &quot; /> </PolicyRequirementRule>   <AttributeRule attributeID=&quot; eduPer...cipalName &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> </AttributeFilterPolicy>
Example – Release only allowed epa values <AttributeFilterPolicy> <PolicyRequirementRule xsi:type=&quot; basic:ANY &quot; />   <AttributeRule attributeID=&quot; eduPersonAffiliation &quot;> <PermitValueRule xsi:type=&quot; basic:OR &quot;> <basic:Rule   xsi:type=&quot; basic:AttributeValueString &quot; value=&quot; member &quot; ignoreCase=&quot; true &quot; /> <basic:Rule   xsi:type=&quot; basic:AttributeValueString &quot; value=&quot; staff &quot; ignoreCase=&quot; true &quot; /> <!-- etc. --> </PermitValueRule> </AttributeRule> </AttributeFilterPolicy>
Example – Release eppn to specific entitygroups <AttributeFilterPolicy  id=&quot; releaseEPPN &quot;>   <PolicyRequirementRule xsi:type=&quot;basic:OR&quot;>   <basic:Rule   xsi:type=&quot; saml:AttributeRequesterInEntityGroup &quot;   value=&quot; https://ukfederation.org.uk &quot; /> <basic:Rule   xsi:type=&quot; saml:AttributeRequesterInEntityGroup &quot;   value=&quot; urn:mace:athens &quot; /> </PolicyRequirementRule>   <AttributeRule attributeID=&quot; eduPer...cipalName &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> </AttributeFilterPolicy>
Example – Release eppn to all Sps except... <AttributeFilterPolicy id=&quot; releaseEPPN &quot;> <PolicyRequirementRule xsi:type=&quot; basic:NOT &quot;> <basic:Rule xsi:type=&quot; basic:OR &quot;> <basic:Rule   xsi:type=&quot; saml:AttributeRequesterString &quot;   value=&quot; http://sdauth.sciencedirect.com/sp &quot; /> <basic:Rule   xsi:type=&quot; saml:AttributeRequesterString &quot;   value=&quot; urn:mace:athens:somesp &quot; /> </basic:Rule> </PolicyRequirementRule> <AttributeRule attributeID=&quot; eduPersonPrincipalName &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> </AttributeFilterPolicy>
Example – Release epe if AuthN method is x or y & SP is z... <PolicyRequirementRule xsi:type=&quot; basic:AND &quot;> <basic:Rule xsi:type=&quot; basic:OR &quot;> <basic:Rule   xsi:type=&quot; ...AuthenticationMethodString &quot;   value=&quot; some-string-for-iris-scan &quot; /> <basic:Rule   xsi:type=&quot; ...AuthenticationMethodString &quot;   value=&quot; some-string-for-fingerprint-reader &quot; /> </basic:Rule> <basic:Rule xsi:type=&quot; ..AttributeRequesterStrin g&quot;  value=&quot; https://myfinanceapp.example.org/sp &quot; /> </basic:Rule> </PolicyRequirementRule>

More Related Content

PPT
Shibboleth 2.0 SP slides - Installfest
JISC.AM
 
PDF
How to design a good REST API: Tools, techniques and best practices
WSO2
 
ODP
Attacking REST API
Siddharth Bezalwar
 
PPTX
Introduction to SharePoint 2013 REST API
QUONTRASOLUTIONS
 
PDF
Parse: A Mobile Backend as a Service (MBaaS)
Ville Seppänen
 
PPTX
Making Sense of API Access Control
CA API Management
 
PPTX
Rest API
Rohana K Amarakoon
 
PDF
.NET Core, ASP.NET Core Course, Session 8
Amin Mesbahi
 
Shibboleth 2.0 SP slides - Installfest
JISC.AM
 
How to design a good REST API: Tools, techniques and best practices
WSO2
 
Attacking REST API
Siddharth Bezalwar
 
Introduction to SharePoint 2013 REST API
QUONTRASOLUTIONS
 
Parse: A Mobile Backend as a Service (MBaaS)
Ville Seppänen
 
Making Sense of API Access Control
CA API Management
 
.NET Core, ASP.NET Core Course, Session 8
Amin Mesbahi
 

What's hot (17)

PDF
When RSS Fails: Web Scraping with HTTP
Matthew Turland
 
PDF
ACL in CodeIgniter
mirahman
 
KEY
Java web programming
Ching Yi Chan
 
PDF
Web Scraping with PHP
Matthew Turland
 
PPT
RESTful SOA - 中科院暑期讲座
Li Yi
 
PDF
Create Home Directories on Storage Using WFA and ServiceNow integration
Rutul Shah
 
PDF
.NET Core, ASP.NET Core Course, Session 19
Amin Mesbahi
 
ODP
Web Scraping with PHP
Matthew Turland
 
PDF
Xml api-5.0-rev b
David Derrej
 
PDF
.NET Core, ASP.NET Core Course, Session 18
Amin Mesbahi
 
PPTX
Slim Framework
Pramod Raghav
 
PDF
Learning To Run - XPages for Lotus Notes Client Developers
Kathy Brown
 
PDF
RESTful Web Services
Christopher Bartling
 
ODP
RESTful Web Services with JAX-RS
Carol McDonald
 
PDF
The never-ending REST API design debate
Restlet
 
PDF
Introduction to OAuth2.0
Oracle Corporation
 
PDF
Share point review qustions
than sare
 
When RSS Fails: Web Scraping with HTTP
Matthew Turland
 
ACL in CodeIgniter
mirahman
 
Java web programming
Ching Yi Chan
 
Web Scraping with PHP
Matthew Turland
 
RESTful SOA - 中科院暑期讲座
Li Yi
 
Create Home Directories on Storage Using WFA and ServiceNow integration
Rutul Shah
 
.NET Core, ASP.NET Core Course, Session 19
Amin Mesbahi
 
Web Scraping with PHP
Matthew Turland
 
Xml api-5.0-rev b
David Derrej
 
.NET Core, ASP.NET Core Course, Session 18
Amin Mesbahi
 
Slim Framework
Pramod Raghav
 
Learning To Run - XPages for Lotus Notes Client Developers
Kathy Brown
 
RESTful Web Services
Christopher Bartling
 
RESTful Web Services with JAX-RS
Carol McDonald
 
The never-ending REST API design debate
Restlet
 
Introduction to OAuth2.0
Oracle Corporation
 
Share point review qustions
than sare
 
Ad

Viewers also liked (20)

PPTX
EASA Eerste Uitbreiding 2012
carelwassink
 
PPT
APM Benefits Summit 2016 - Hugo MInney SROI
Minney org Ltd
 
PDF
Untitled
Mustafa Albayati
 
PPTX
135. verdadera oración
fomtv
 
PPT
ALPHABET BOOK BY PSTTI STUDENT
PSTTI
 
DOCX
Sean's Resume 2015 (Linkedin update )
Sean Fitzgerald
 
PDF
Automating things using selenium
Vengat Vasanth
 
PDF
Regulamento Bom pra tudo
diario_catarinense
 
PPT
Savi chapter2
Mohamed Abada
 
DOCX
CLETUS J Spaeder 2016 (1)
Chuck Spaeder
 
PDF
Trabalho Multidisciplinar com Africanidade e Cultura Indígena
Eduardo Mariño Rial
 
PPTX
Power
Soledad Duarte
 
PDF
BASICfinal
Melinda Angeles, GISP
 
PDF
Programa de rastreo espia para celular
espiarmoviles
 
PDF
ford company
andimawada
 
PPTX
gv001ver01
Glenn Chae
 
PDF
DaniellaRenee-15
Daniella Renee
 
PPT
Google Apps for Education by Global Talent Track
Viraj Damani
 
PPTX
Chip Project Proposal By Heba
hsayeda
 
PDF
Александр Гладыш — Lua
Yury Yurevich
 
EASA Eerste Uitbreiding 2012
carelwassink
 
APM Benefits Summit 2016 - Hugo MInney SROI
Minney org Ltd
 
135. verdadera oración
fomtv
 
ALPHABET BOOK BY PSTTI STUDENT
PSTTI
 
Sean's Resume 2015 (Linkedin update )
Sean Fitzgerald
 
Automating things using selenium
Vengat Vasanth
 
Regulamento Bom pra tudo
diario_catarinense
 
Savi chapter2
Mohamed Abada
 
CLETUS J Spaeder 2016 (1)
Chuck Spaeder
 
Trabalho Multidisciplinar com Africanidade e Cultura Indígena
Eduardo Mariño Rial
 
Programa de rastreo espia para celular
espiarmoviles
 
ford company
andimawada
 
gv001ver01
Glenn Chae
 
DaniellaRenee-15
Daniella Renee
 
Google Apps for Education by Global Talent Track
Viraj Damani
 
Chip Project Proposal By Heba
hsayeda
 
Александр Гладыш — Lua
Yury Yurevich
 
Ad

Similar to Shibboleth 2.0 IdP slides - Installfest (Edited) (20)

PPT
Introduction to Shib 2.0 (Chad La Joie)
JISC.AM
 
PDF
Authentication and authorization in res tful infrastructures
Corley S.r.l.
 
PDF
Pinterest like site using REST and Bottle
Gaurav Bhardwaj
 
DOCX
Adobe Campaign Classic Shortening Links with Bitly API
David Garcia
 
ODP
SCWCD 1. get post - url (cap1 - cap2 )
Francesco Ierna
 
PDF
API Basics
Ritul Chaudhary
 
PPTX
Restful api
Anurag Srivastava
 
PPTX
PRShare: a framework for privacy-preserving, interorganizational data sharing.
Lihi Idan
 
PDF
re:dash is awesome
Hiroshi Toyama
 
PPTX
Approaches to machine actionable links
Stephen Richard
 
PPTX
Chapter 1.Web Techniques_Notes.pptx
ShitalGhotekar
 
PPTX
SCWCD : Session management : CHAP : 6
Ben Abdallah Helmi
 
PDF
Cucumber - use it to describe user stories and acceptance criterias
Geison Goes
 
PDF
Code igniter - A brief introduction
Commit University
 
PDF
MongoDB World 2019: Securing Application Data from Day One
MongoDB
 
PDF
User and group security migration
Amit Sharma
 
DOCX
Copy of cgi
Abhishek Kesharwani
 
PPTX
Rest and Sling Resolution
DEEPAK KHETAWAT
 
Introduction to Shib 2.0 (Chad La Joie)
JISC.AM
 
Authentication and authorization in res tful infrastructures
Corley S.r.l.
 
Pinterest like site using REST and Bottle
Gaurav Bhardwaj
 
Adobe Campaign Classic Shortening Links with Bitly API
David Garcia
 
SCWCD 1. get post - url (cap1 - cap2 )
Francesco Ierna
 
API Basics
Ritul Chaudhary
 
Restful api
Anurag Srivastava
 
PRShare: a framework for privacy-preserving, interorganizational data sharing.
Lihi Idan
 
re:dash is awesome
Hiroshi Toyama
 
Approaches to machine actionable links
Stephen Richard
 
Chapter 1.Web Techniques_Notes.pptx
ShitalGhotekar
 
SCWCD : Session management : CHAP : 6
Ben Abdallah Helmi
 
Cucumber - use it to describe user stories and acceptance criterias
Geison Goes
 
Code igniter - A brief introduction
Commit University
 
MongoDB World 2019: Securing Application Data from Day One
MongoDB
 
User and group security migration
Amit Sharma
 
Copy of cgi
Abhishek Kesharwani
 
Rest and Sling Resolution
DEEPAK KHETAWAT
 

More from JISC.AM (20)

PPT
Identity Assurance Profiles
JISC.AM
 
PPT
Assurance
JISC.AM
 
PPT
I2 Fedsoup
JISC.AM
 
PPT
Cuckoo (Graham Mason, Ed Beddows)
JISC.AM
 
PPT
Federated Futures (Nicole Harris)
JISC.AM
 
PPT
The Identity Project (Rhys Smith)
JISC.AM
 
PPT
SARoNGS project (Jens Jensen)
JISC.AM
 
PPT
Names project (Amanda Hill)
JISC.AM
 
PPT
Studies in advanced access mgmt: GFIVO project (Cal Racey)
JISC.AM
 
PDF
Identity: Future directions (David Orrell, Eduserv Foundation)
JISC.AM
 
PDF
Shintau And VPMan proejcts (David Chadwick)
JISC.AM
 
PPT
Identity: Future directions (David Orrell, Eduserv Foundation)
JISC.AM
 
PPT
Internet2 Fall MM 2007 - Jane Charlton
JISC.AM
 
PPT
'Connecting poeple to resources' by Nicole Harris at UKSG 2007
JISC.AM
 
PPT
Openid
JISC.AM
 
PPT
Federated Access Management 102
JISC.AM
 
PPT
Federated Access Management (Sconul Access Conference)
JISC.AM
 
PPT
Federated Access Management (SFEU)
JISC.AM
 
PDF
OpenID and Usercentric Identity: It's All About Me
JISC.AM
 
PPT
McShib2: UK federation update
JISC.AM
 
Identity Assurance Profiles
JISC.AM
 
Assurance
JISC.AM
 
I2 Fedsoup
JISC.AM
 
Cuckoo (Graham Mason, Ed Beddows)
JISC.AM
 
Federated Futures (Nicole Harris)
JISC.AM
 
The Identity Project (Rhys Smith)
JISC.AM
 
SARoNGS project (Jens Jensen)
JISC.AM
 
Names project (Amanda Hill)
JISC.AM
 
Studies in advanced access mgmt: GFIVO project (Cal Racey)
JISC.AM
 
Identity: Future directions (David Orrell, Eduserv Foundation)
JISC.AM
 
Shintau And VPMan proejcts (David Chadwick)
JISC.AM
 
Identity: Future directions (David Orrell, Eduserv Foundation)
JISC.AM
 
Internet2 Fall MM 2007 - Jane Charlton
JISC.AM
 
'Connecting poeple to resources' by Nicole Harris at UKSG 2007
JISC.AM
 
Openid
JISC.AM
 
Federated Access Management 102
JISC.AM
 
Federated Access Management (Sconul Access Conference)
JISC.AM
 
Federated Access Management (SFEU)
JISC.AM
 
OpenID and Usercentric Identity: It's All About Me
JISC.AM
 
McShib2: UK federation update
JISC.AM
 

Recently uploaded (20)

PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Software Development Methodologies in 2025
KodekX
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
The Future of Artificial Intelligence (AI)
Mukul
 
Software Development Methodologies in 2025
KodekX
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 

Shibboleth 2.0 IdP slides - Installfest (Edited)

  • 1. Installation to SSO Chad La Joie [email_address]
  • 2. Tour of What We Learned SWITCH AAI Demo Page: http://aai-demo.switch.ch
  • 3. Terms: Entity ID A unique identifier for a identity provider ( IdP ) or service provider ( SP )‏ In shibboleth 2 the recommended format is a URL idp: https://HOSTNAME/idp/shibboleth sp: http://HOSTNAME/shibboleth
  • 4. Terms: Relying Party The SAML peer to which the IdP is communicating. In all existing cases, the relying party of the IdP is always an SP. Some very advanced cases allow one IdP to be a relying party to another IdP.
  • 5. Terms: Binding A description of how a SAML message is attached to an underlying transport protocol, such as http or smtp. For example: If the message is sent over HTTP what HTTP headers need to be set, what are the URL or form parameter names, etc.
  • 6. Terms: Profile A description of how to use SAML, over a specific binding, to accomplish a specific task (e.g. Single Signon) in an interoperable manner. Profiles are the finest grained unit of interoperability within SAML.
  • 7. Terms: Metadata A description of the SAML features supported by a SAML entity. Most importantly this includes the URLs for communicating with an entity. Shibboleth also uses this information to build technical trust between entities.
  • 8. Lets take a Closer Look http://www.switch.ch/aai/demo/2/medium.html
  • 9. Installation Unpack the Shibboleth distribution unzip -d /usr/local/src /opt/installfest/shibboleth-idp-2.0.0-bin.zip Change to /usr/local/src/identityprovider chmod +x ant.sh Run the installation script; ./ant.sh answer yes , this is a new install use /opt/shibboleth-idp as your shib home directory enter your hostname: idp # .example.com enter password for your password
  • 10. SHIB_HOME /opt/shibboleth-idp should now contain: bin conf credentials lib logs metadata war The Shibboleth documentation refers to this directory as SHIB_HOME
  • 11. SHIB_HOME/bin Contains command line tools aacli : Attribute authority command line interface allows you to simulate an attribute query/release version : Provides the version of the IdP
  • 12. SHIB_HOME/conf The IdP’s configuration files. We’ll cover most as we go through the course. We will not cover service.xml or internal.xml as these control advanced features.
  • 13. SHIB_HOME/credentials Credentials used by the IdP. By default the IdP’s generated key (idp.key), cert (idp.crt) and a keystore (idp.jks) containing both are put here. Good location to place things like trust anchor X.509 certs, cached CRLs, etc.
  • 14. SHIB_HOME/lib The libraries (jars) that make up the IdP. These are copies of those that occur in the IdP WAR file and are only used by the command line tools.
  • 15. SHIB_HOME/logs Location of the Shibboleth log files. process log : detailed description the IdP processing requests access log : record of all the clients that connect to the idP audit log : record of all information sent out from the IdP
  • 16. SHIB_HOME/metadata Default location where various metadata files are stored. The IdP does not automatically load any metadata. Metadata read from a file, or stored backup copies of remote metadata are usually put in this directory.
  • 17. SHIB_HOME/war The location of the IdP WAR file created by the installer. We point Tomcat to this file, instead of copying it to Tomcat, so that we don’t forget to copy new WARs if we rebuild the IdP (to add an extension, for example) or run into problems with Tomcat’s file caching mechanisms.
  • 18. Metadata: Configuration Metadata is loaded in to the IdP by metadata providers . Metadata providers are configured in the relying-party.xml file This file may only contain one top-level provider. By default the top level provider is a chaining provider that contains other metadata providers and uses them in the order defined.
  • 19. Metadata: Provider Config Metadata providers are configured using <MetadataProvider> element Every metadata provider has a: unique ID given by the id attribute type given by the xsi:type attribute Each type of metadata provider has its own set of configuration options Metadata provider may have a single filter defined by <MetadataFilter>
  • 20. Metadata: Filesystem Provider The filesystem metadata provider reads a metadata file from the local filesystem. Type attribute value: FilesystemMetadataProvider Configuration attribute: metadataFile gives the path to the metadata file
  • 21. Metadata: File-backed HTTP Provider Loads metadata via HTTP and backs it up to a local file Type attribute value: FileBackedHTTPMetadataProvider Configuration Attributes: metadataURL : HTTP URL of metadata file backingFile : location of the backup file cacheDuration : max time between refreshes Refreshes metadata automatically, no more cron jobs!
  • 22. Metadata: Watchout The chaining metadata provider looks up relying party information in its children in the order they are defined. If two child providers load different metadata for the same entity only the first description will ever be used by the IdP. No attempt to merge the data is made.
  • 23. Metadata: UK Configuration Define the provider <MetadataProvider id=“ ukfederation ” xsi:type=&quot;FileBackedHTTPMetadataProvider” xmlns=&quot;urn:mace:shibboleth:2.0:metadata” metadataURL=“ http://metadata.ukfederation.org.uk/ukfederation-metadata.xml ” backingFile=” /opt/shibboleth-idp/metadata/ukfed.xml ”> <!-- Filter for requiring and validating digital signature --> <MetadataFilter xsi:type=&quot;SignatureValidation” xmlns=&quot;urn:mace:shibboleth:2.0:metadata&quot; trustEngineRef=&quot;shibboleth.SignatureTrustEngine&quot; requireSignedMetadata=&quot;true&quot; /> </MetadataProvider>
  • 24. Metadata: UK Configuration Download UK Federation Certificate curl http://metadata.ukfederation.org.uk/ukfederation.pem > /opt/shibboleth-idp/credentials/ukfederation.pem Add Certificate to shibboleth.SignatureTrustEngine trust engine <security:TrustEngine xsi:type=&quot;security:StaticExplicitKeySignature&quot; id=&quot;shibboleth.SignatureTrustEngine&quot;> <Credential xsi:type=&quot;X509Filesystem” xmlns=&quot;urn:mace:shibboleth:2.0:security&quot; id=” UKFederationTrustAnchor&quot; > <Certificate> /opt/shibboleth-idp/credentials/ukfederation.pem </Certificate> </Credential> </security:TrustEngine>
  • 25. Terms: Authentication Method An identifier that a relying party may use to stipulate how authentication should be performed. Authentication method identifiers correspond to a prescription of how authentication is done (even if the details are only in someone’s head).
  • 26. Terms: Login Handler An IdP component that correlates all supported authentication methods with currently configured authentication mechanisms. A login handler may map more than one authentication method to the same authentication mechanism.
  • 27. Terms: Session State information about the user, currently active authentication methods, and services to which they are signed into. A user’s IdP session is created the first time they authenticate but may outlive the lifetime of all authentication methods.
  • 28. Login Handler: Configuration Login handlers are configured in handler.xml <LoginHandler> defines a login handler Every login handler definition has a xsi:type attribute that defines the type of the handler. Each type has its own set of configuration options. Each <LoginHandler> must contain at least one <AuthenticationMethod> indicating what authentication method it provides
  • 29. Login Handler: UsernamePassword Login handler that prompts for a username/password and validates against a JAAS module (LDAP & Kerberos 5 currently supported)‏ Type attribute value: UsernamePassword Configuration attributes: jaasConfigurationLocation path to the JAAS configuration file
  • 30. Login Handler: UsernamePassword Edit the login.config Uncomment the LDAP login modules Configure it like this: edu.vt.middleware.ldap.jaas.LdapLoginModule required host=” ldap.example.org ” base=&quot; ou=people,dc=example,dc=org &quot; userField=&quot; uid &quot;;
  • 31. Login Handler: UsernamePassword Edit handler.xml Comment out RemoteUser handler Uncomment UsernamePassword handler Add unspecified authentication method <AuthenticationMethod> urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified </AuthenticationMethod>
  • 32. Login Handler: Authentication Duration Each authentication mechanism supports an activity timeout After this timeout expires the mechanism is considered inactive for that user. If the user attempts to access a new service provider that requires that authentication mechanism they must re-authenticate. It is configured by the authenticationDuration attribute on the <LoginHandler> Its value is the number of minutes of inactivity and its default value is 30.
  • 33. Forced Authentication Only works with mechanisms that can re-authenticate a user. RemoteUser does not support forced authentication. The service provider will receive an error if the IdP can not support forced authentication
  • 34. Terms: Authentication Mechanism A concrete mechanism used to authenticate a user. Shibboleth 2 currently supports REMOTE_USER, user/pass against LDAP & Kerberos, and IP address based mechanisms.
  • 36. Terms: Attribute A piece of information about a user. Each attribute has a unique ID and has zero of more values. Shibboleth attributes are protocol-agnostic data structures.
  • 37. Terms: SAML Attribute An attribute that is represented in SAML notation. Shibboleth transforms attributes into SAML attributes by a process known as encoding.
  • 38. Terms: Data Connector A plugin that creates multiple attributes from information in data sources like LDAP and databases. Shibboleth currently supports static, LDAP, relational database, computed, and stored ID data connectors.
  • 39. Data Connection Configuration Data connectors are configured in attribute-resolver.xml <DataConnector> defines a data connector Every data connector has a id attribute that uniquely identifies it. Every data connector has a xsi:type attribute that defines the type of the handler. Each type has its own set of configuration options.
  • 40. Data Connector Configuration Some connectors will need information collected by another plugin in order to work. This is represented by a <resolver:Dependency ref=“NAME” /> The dependency is declared before any other configuration elements. The value of the ref attribute is the ID of the plugin upon which the connector depends.
  • 41. Data Connector Failover Data connectors may define failover connectors such that if the data connector fails the failover connector is invoked. If more than one failover connector is defined they are tried in order until one succeeds. They are defined using: <resolver:FailoverDataConnector ref=&quot; CONNECTOR_ID_1 &quot; />
  • 42. Terms: Attribute Definition A plugin that creates a single attribute by transforming other attributes and state information. Shibboleth currently supports simple, scoping, regex, mapping, template, scripting, principal name, and principal authentication method attribute definitions.
  • 43. Attribute Definition Configuration Attribute definitions are configured in attribute-resolver.xml <AttributeDefinition> defines a definition Every definition has a id attribute that uniquely identifies it. Every definition has a xsi:type attribute that defines the type of the handler. Each type has its own set of configuration options.
  • 44. Attribute Definition Configuration Most definitions will need information collected by another plugin in order to work. This is represented by a <resolver:Dependency ref=“NAME” /> The dependency is declared before any other configuration elements. The value of the ref attribute is the ID of the plugin upon which the definition depends.
  • 45. Terms: Attribute Encoder A plugin that converts an attribute into a protocol specific form, like a SAML attribute. Attribute encoders are associated with an attribute through the attribute’s attribute definition.
  • 46. Attribute Encoder Configuration Attribute encoders are configured as children of an attribute definition. <AttributteEncoder> defines an encoder Every definition has a xsi:type attribute that defines the type of the handler. Each type has its own set of configuration options.
  • 47. Terms: Principal Connector A plugin that converts a name identifier, provided by a relying party, into the internally used userid.
  • 48. Terms: Attribute Resolver A subsystem in Shibboleth responsible for fetching, transforming, and associating encoders with attributes. Only attributes produced by attribute definitions leave the resolver and are available to other parts of the system.
  • 49. More About Attribute Dependencies Any resolver plugin may have any number of dependencies. If more than one dependency provides the same attribute the dependant plugin operates on the effective union of values Attribute definitions may be marked with a dependencyOnly=“true” attribute. This ensures the value is never released outside the resolver (and speeds up filtering a bit).
  • 50. Some Examples – LDAP Connector <resolver:DataConnector xsi:type=&quot;LDAPDirectory&quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:dc&quot; id=&quot; MyLDAP &quot; ldapURL=&quot; LDAP_URL &quot; baseDN=&quot; BASE_DN &quot; principal=&quot; PRINCIPAL_NAME &quot; principalCredential=&quot; PRINCIPAL_CREDENTIAL &quot;> <FilterTemplate> <![CDATA[ ( uid =${requestContext.principalName})‏ ]]> </FilterTemplate> <ReturnAttributes> x y z </ReturnAttributes>
  • 51. Some examples – Static Connector <resolver:DataConnector id=&quot; staticEntitlements &quot; xsi:type=&quot;dc:Static&quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:dc&quot;> <Attribute id=&quot; eduPersonEntitlement &quot;> <Value> urn:mace:dir:entitlement:common-lib-terms </Value> </Attribute> </resolver:DataConnector>
  • 52. Example – Simple Directory Lookup of epe <resolver:AttributeDefinition id=&quot; eduPersonEntitlement &quot; xsi:type=&quot; Simple &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; sourceAttributeID=&quot; shibentitlement &quot;> <resolver:Dependency ref=&quot; myLDAP &quot; /> <!-- Attribute encoders --> </resolver:AttributeDefinition>
  • 53. Example – Attribute Encoders <resolver:AttributeEncoder xsi:type=&quot; SAML1String&quot; xmlns=&quot;urn:mace:shibboleth:2.0:attribute:encoder&quot; name=&quot; urn:mace:dir:attribute -def:eduPersonEntitlement &quot; /> <resolver:AttributeEncoder xsi:type=&quot; SAML2String&quot; xmlns=&quot;urn:mace:shibboleth:2.0:attribute:encoder&quot; name=&quot; urn:oid:1.3.6.1.4.1.5923.1.1.1.7 &quot; friendlyName=&quot; eduPersonEntitlement &quot; />
  • 54. Some examples – Static entitlements <resolver:AttributeDefinition id=&quot; eduPersonEntitlement &quot; xsi:type=&quot; Simple &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; sourceAttributeID=&quot; shibentitlement &quot;> <resolver:Dependency ref=&quot; staticEntitlements &quot; /> <!-- Attribute Encoders --> </resolver:AttributeDefinition>
  • 55. Example – Computing epe from group membership <resolver:AttributeDefinition xsi:type=&quot;Script&quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; id=&quot; eduPersonEntitlement &quot;> <Dependency ref=&quot;MyLDAP&quot; /> <Script> <![CDATA[ // Script here ]]> </Script> </resolver:AttributeDefinition>
  • 56. Example – Continued <![CDATA[ importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider); epe = new BasicAttribute(&quot;eduPersonEntitlement&quot;); for (i = 0; i<isMemberOf.getValues().size(); i++ { if (isMemberOf.getValues().get(i)).equals(&quot;STF&quot;){ epe.getValues().add(&quot;member&quot;); epe.getValues().add(&quot;staff&quot;); } } ]]>
  • 57. Example – eptid computed <resolver:AttributeDefinition xsi:type=&quot; Scoped &quot; id=&quot; eduPersonTargetedID &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; scope=&quot; example.org &quot; sourceAttributeID=&quot; computedID &quot;> <resolver:Dependency ref=&quot; computedIDConnector &quot; /> </resolver:AttributeDefinition> <resolver:DataConnector xsi:type=&quot; ComputedId &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:dc&quot; id=&quot; computedIDConnector &quot; generatedAttributeID=&quot; computedID &quot; sourceAttributeID=&quot; uid &quot; salt=&quot; your random string here &quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> </resolver:DataConnector>
  • 58. Example – eptid stored <resolver:AttributeDefinition xsi:type=&quot; Scoped &quot; id=&quot; eduPersonTargetedID &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; scope=&quot; example.org &quot; sourceAttributeID=&quot; storedID &quot;> <resolver:Dependency ref=&quot; storedIDConnector &quot; /> </resolver:AttributeDefinition>
  • 59. Example - Continued <resolver:DataConnector xsi:type=&quot; StoredId &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:dc&quot; id=&quot; storedIDConnector &quot; generatedAttributeID=&quot; storedID &quot; sourceAttributeID=&quot; uid &quot; salt=&quot; ThisIsRandomText &quot;> <resolver:Dependency ref=&quot;MyLDAP&quot; /> <ApplicationManagedConnection jdbcDriver=&quot;DRIVER_CLASS&quot; jdbcURL=&quot;DATABASE_URL&quot; jdbcUserName=&quot;DATABASE_USER&quot; jdbcPassword=&quot;DATABASE_USER_PASSWORD&quot; /> <!-- Remember to JDBC driver in correct place --> </resolver:DataConnector>
  • 60. Example – Continued Database created with: CREATE TABLE shibpid ( localEntity VARCHAR NOT NULL, peerEntity VARCHAR NOT NULL, principalName VARCHAR NOT NULL, localId VARCHAR NOT NULL, persistentId VARCHAR NOT NULL, peerProvidedId VARCHAR NULL, creationDate TIMESTAMP NOT NULL, deactivationDate TIMESTAMP NULL )‏
  • 61. Example – adding scope <resolver:AttributeDefinition id=&quot; eduPersonPrincipalName &quot; xsi:type=&quot; Scoped &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; scope=&quot; example.org &quot; sourceAttributeID=&quot; uid &quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> </resolver:AttributeDefinition>
  • 62. Example - prescoped <resolver:AttributeDefinition id=&quot; eduPersonPrincipalName &quot; xsi:type=&quot; Precoped &quot; xmlns=&quot;urn:mace:shibboleth:2.0:resolver:ad&quot; scope=&quot; example.org &quot; sourceAttributeID=&quot; shibeppn &quot;> <resolver:Dependency ref=&quot;myLDAP&quot; /> </resolver:AttributeDefinition>
  • 64. Terms: Attribute Filter Policy A policy containing a trigger, that indicates if the policy is active, and a set of attribute value filters.
  • 65. Attribute Filter Policy Configuration Attribute filters are defined in attribute-filter.xml Attribute filter policies are declared with <AttributeFilterPolicy> Every filter policy has a single id attribute that provides a unique name for the policy.
  • 66. Terms: Policy Requirement Rule A specific requirement that must be met in order for an attribute filter policy to in effect. An attribute filter policy may only have one requirement rule but some rules allow child rules to be declared and combined.
  • 67. Policy Requirement Rule Configuration <PolicyRequirementRule> defines a requirement rule. Every rule has a xsi:type attribute that defines its type. Each type has its own set of configuration options. Every attribute filter policy must have one, and only one, policy requirement rule
  • 68. Terms: Attribute Rule A rule, specific to an attribute, that determines which values are released to a relying party. An attribute filter policy may have any number of attribute rules.
  • 69. Attribute Rule Configuration A rule representing the set of values released to a relying party. <AttributeRule> defines a rule. Every rule has an attributeID attribute that identifies the attribute, by ID, to which the rule applies
  • 70. Terms: Permit Value Rule A rule that determines if an attribute value is permitted to be released to a relying party.
  • 71. Permit Value Rule Configuration A rule that signifies a value should be released to the requester. <PermitValueRule> defines a rule. Every rule has a xsi:type attribute that defines its type. Each type has its own set of configuration options.
  • 72. Attribute Filtering Gotchyas Only those values explicitly permitted are ever released There is no way to expressly deny the release of an attributes so be careful how your attribute filter policies overlap (deny value rules will be in 2.1)‏ Rules that operate on an attributes’ values will not take into consideration value scopes.
  • 73. Example – Release eptid & eppn to anyone <AttributeFilterPolicy id=&quot; releaseToAnyone &quot;> <PolicyRequirementRule xsi:type=&quot;basic:ANY&quot; /> <AttributeRule attributeID=&quot; eduPersonTargetedID &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> <AttributeRule attributeID=&quot; eduPe...cipalName &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> </AttributeFilterPolicy>
  • 74. Example – Release eppn to specific SPs <AttributeFilterPolicy id=&quot; releaseEPPN &quot;> <PolicyRequirementRule xsi:type=&quot;basic:OR&quot;> <basic:Rule xsi:type=&quot; saml:AttributeRequesterString &quot; value=&quot; https://sdauth.sciencedirect.com/sp &quot; /> <basic:Rule xsi:type=&quot; saml:AttributeRequesterString &quot; value=&quot; urn:mace:athens:somesp &quot; /> </PolicyRequirementRule> <AttributeRule attributeID=&quot; eduPer...cipalName &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> </AttributeFilterPolicy>
  • 75. Example – Release only allowed epa values <AttributeFilterPolicy> <PolicyRequirementRule xsi:type=&quot; basic:ANY &quot; /> <AttributeRule attributeID=&quot; eduPersonAffiliation &quot;> <PermitValueRule xsi:type=&quot; basic:OR &quot;> <basic:Rule xsi:type=&quot; basic:AttributeValueString &quot; value=&quot; member &quot; ignoreCase=&quot; true &quot; /> <basic:Rule xsi:type=&quot; basic:AttributeValueString &quot; value=&quot; staff &quot; ignoreCase=&quot; true &quot; /> <!-- etc. --> </PermitValueRule> </AttributeRule> </AttributeFilterPolicy>
  • 76. Example – Release eppn to specific entitygroups <AttributeFilterPolicy id=&quot; releaseEPPN &quot;> <PolicyRequirementRule xsi:type=&quot;basic:OR&quot;> <basic:Rule xsi:type=&quot; saml:AttributeRequesterInEntityGroup &quot; value=&quot; https://ukfederation.org.uk &quot; /> <basic:Rule xsi:type=&quot; saml:AttributeRequesterInEntityGroup &quot; value=&quot; urn:mace:athens &quot; /> </PolicyRequirementRule> <AttributeRule attributeID=&quot; eduPer...cipalName &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> </AttributeFilterPolicy>
  • 77. Example – Release eppn to all Sps except... <AttributeFilterPolicy id=&quot; releaseEPPN &quot;> <PolicyRequirementRule xsi:type=&quot; basic:NOT &quot;> <basic:Rule xsi:type=&quot; basic:OR &quot;> <basic:Rule xsi:type=&quot; saml:AttributeRequesterString &quot; value=&quot; http://sdauth.sciencedirect.com/sp &quot; /> <basic:Rule xsi:type=&quot; saml:AttributeRequesterString &quot; value=&quot; urn:mace:athens:somesp &quot; /> </basic:Rule> </PolicyRequirementRule> <AttributeRule attributeID=&quot; eduPersonPrincipalName &quot;> <PermitValueRule xsi:type=&quot; basic:ANY &quot; /> </AttributeRule> </AttributeFilterPolicy>
  • 78. Example – Release epe if AuthN method is x or y & SP is z... <PolicyRequirementRule xsi:type=&quot; basic:AND &quot;> <basic:Rule xsi:type=&quot; basic:OR &quot;> <basic:Rule xsi:type=&quot; ...AuthenticationMethodString &quot; value=&quot; some-string-for-iris-scan &quot; /> <basic:Rule xsi:type=&quot; ...AuthenticationMethodString &quot; value=&quot; some-string-for-fingerprint-reader &quot; /> </basic:Rule> <basic:Rule xsi:type=&quot; ..AttributeRequesterStrin g&quot; value=&quot; https://myfinanceapp.example.org/sp &quot; /> </basic:Rule> </PolicyRequirementRule>