Federation SAML Shibboleth programvara Jboss Java-system Namn: Uid: Organisation: inetorgperson Shibboleth programvara Unikt namn:... Roll: Funktioner som kan anropas:... Så här når du funktionerna:... Du kan lita på mig! Certikfikat:... Unikt namn:... Roll: Funktioner som kan anropas:... Så här når du funktionerna:... Du kan lita på mig! Certikfikat:... Browser SAML SAML Shibboleth programvara Unikt namn:... Roll: Funktioner som kan anropas:... Så här når du funktionerna:... Du kan lita på mig! Certikfikat:... SAML SAML Unikt namn:... Roll: Funktioner som kan anropas:... Så här når du funktionerna:... Du kan lita på mig! Certikfikat:... Shibboleth programvara Apache backend SimpleSAML -programvara PHP-program Unikt namn:... Roll: Funktioner som kan anropas:... Så här når du funktionerna:... Du kan lita på mig! Certikfikat:... Viktigaste uppgift: Web Browser SSO
Shibboleth programvara Unikt namn: https://idp.lu.se/idp/shibboleth Roll: Funktioner som kan anropas/så här når du dem: SingleSignOnService Binding: HTTP-Redirect Endpoint: https://idp.lu.se/idp/profile/saml2/redirect/sso AttributeService Binding: SOAP Endpoint: https://idp.lu.se/idp/profile/saml2/soap/attributequery ArtifactResolutionService Binding: SOAP Endpoint: https://idp.lu.se/idp/profile/saml2/soap/artifactresolution Du kan lita på mig: X509Certificate AwIBAgIEU2tfcTANBgkqhkiG9w0BAQsFADAdMRswGQYDVQQDDBJl? Shibboleth programvara inetorgperson Browser Unikt namn: https://mittsystem.lu.se/shibboleth Roll: Funktioner som kan anropas/så här når du dem: SingleLogoutService Binding: SOAP Endpoint: https://mittsystem.lu.se/shibboleth.sso/slo/soap AssertionConsumerService Binding: HTTP-POST Endpoint: https://mittsystem.lu.se/shibboleth.sso/saml2/post ArtifactResolutionService Binding: SOAP Endpoint: https://mittsystem.lu.se/shibboleth.sso/artifact/soap Du kan lita på mig: X509Certificate kxmjm0wjbumqswcqydvqqgewjtrteambgga1uecgwrthvu Hur får de reda på varandra? Hur går kommunikationen mellan dem till? Hur skapa säker överföring av data?
Attribut-förmedling (Tomcat 6) attribute-resolver.xml <AttributeDefinition/> <DataConnector/> attribute-filter.xml <AttributeFilterPolicy/> <AttributeRule/> SQL LDAP SAMLmeddelande (Apache 2.4) attribute-map.xml <Attribute/> attribute-policy.xml <AttributeFilterPolicy/> <AttributeRule/> Jboss backend AJP-request Attribut-lista VIA ENVIRONMENT Java-applikation JSF-dokument #{request.getattribute('testattr') Attribut-källor Statiska attribut Web-browser Redirect för inloggning Inloggning med uid/pwd AccessControl via attributregler AccessControl via attributregler
Attribut-förmedling i PHP a Web-browser Inloggning med uid/pwd Redirect för inloggning SAMLmeddelande Attribut-lista VIA HTTP-headers HTTP-request Attribut-källor (Tomcat 6) AccessControl via attributregler (Apache 2.4) AccessControl via attributregler Apache 2.2 backend LDAP attribute-resolver.xml attribute-map.xml SQL <AttributeDefinition/> <DataConnector/> <Attribute/> Statiska attribut PHP-applikation attribute-filter.xml <AttributeFilterPolicy/> <AttributeRule/> attribute-policy.xml <AttributeFilterPolicy/> <AttributeRule/> PHP-fil $_SERVER["HTTP_TESTATTR"];
Attribut-förmedling i PHP b Web-browser Inloggning med uid/pwd Redirect för inloggning Attribut-källor (Tomcat 6) AccessControl via attributregler SAMLmeddelande Applikationsserver Apache 2.4 SimpleSamlPHP LDAP attribute-resolver.xml PHP-applikation SQL Statiska attribut <AttributeDefinition/> <DataConnector/> Simplesamlphp-config filer $as = new SimpleSAML_Auth_Simple('default-sp'); $as->requireauth(); $attributes = $as->getattributes(); echo $attributes[ testattr ]; attribute-filter.xml <AttributeFilterPolicy/> <AttributeRule/>
Saml2int Web Browser SSO Deployment profile XML-encryption används inetorgperson Browser HTTP eller HTTPS SingleSignOnService Endpoint HTTPS <AuthnRequest> via HTTP-REDIRECT binding till :n <Response> Subject, Attribut <AuthnRequest> <Response> via HTTP-POST binding till :n HTTP eller HTTPS <Response> Subject, Attribut Respons från applikationen: webbsida och SSO-sessionsdata Request till applikationen om en webbsida <AuthnRequest> via HTTP-REDIRECT binding till :n <Response> via HTTP-POST binding till :n <AuthnRequest> AssertionConsumerService Endpoint HTTPS-förbindelse Request till om metadata XML-dokument med Metadata i klartext System entity Roll: HTTPS-förbindelse Request till om metadata System Entity Roll: XML-dokument med Metadata i klartext Det här är jag, det här är min roll, det här är mina funktioner, så här når du dem, du kan lita på mig Publicerad via Well Known location -metoden
SWAMID-federationen Krypterad förbindelse SAMLmeddelande / metadata? inetorgperson Skapa en jks-keystore med lösenord (self-signed) Subject: cn=www.minsajt.lu Issuer: samma som ovan Key: RSA 2048 bits Signature: SHA-256 with RSA Browser Krypterad förbindelse Extensions Subject Alternative Name: DNS Name: www.minsajt.lu URI: http://www.minsajt.lu/url/till/systemet URI: https://www.minsajt.lu/url/till/systemet Subject Key Identifier: Key Identifier: 0x... Krypterad förbindelse SAML-meddelande med krypterad data SAML-meddelande med klartext-data Generera ett CSR Importera erhållen signering Exportera privat nyckel med lösenord (.key) och publik nyckel/certifikat (.crt) (Tomcat 6) Krypterad förbindelse (Apache 2.4) SAML-meddelande eller metadata i klartext
80 8009 443 Jboss 7 11443 22443 EntityID: https://egaws4757.uw.lu.se/shibboleth C:\opt\shibboleth-sp C:/Program Files (x86)/internet2/shib2idp/credentials/idp.jks Metadata: https://egaws4757.uw.lu.se/shibboleth.sso/ Metadata C:\Apache24 EntityID: https://egaws4757.uw.lu.se:22443/idp/shibboleth C:/Program Files (x86)/internet2/shib2idp/credentials/idp.jks C:/Program Files (x86)/internet2/shib2idp/credentials/idp.key C:/Program Files (x86)/internet2/shib2idp/credentials/idp.crt Skapas med: install.bat renew-cert Metadata: https://egaws4757.uw.lu.se:22443/idp/shibboleth Tomcat cacerts: C:\Program Files\Java\jre7\lib\security\cacerts SAML - principal (användare) - Identity Provider - Service Provider
attribute-resolver.xml <resolver:attributedefinition xsi:type="ad:simple" id="testattr" sourceattributeid="testattr"> <resolver:dependency ref="testconnectorid"/> <resolver:attributeencoder xsi:type="enc:saml2string" name="test:testattr" friendlyname="testattr"/> </resolver:attributedefinition> <resolver:dataconnector id="testconnectorid" xsi:type="static" xmlns="urn:mace:shibboleth:2.0:resolver:dc"> <Attribute id="testattr"> <Value>hej</Value> </Attribute> </resolver:dataconnector> attribute-map.xml <Attribute name="test:testattr" id="testattr"> <AttributeDecoder xsi:type="stringattributedecoder" casesensitive="false"/> </Attribute> attribute-policy.xml <afp:attributerule attributeid="testattr"> <afp:permitvaluerule xsi:type="any"/> </afp:attributerule> attribute-filter.xml <afp:attributerule attributeid="testattr"> <afp:permitvaluerule xsi:type="basic:any"/> </afp:attributerule> shibboleth2.xml <ApplicationDefaults id="default" policyid="default" entityid="https://egaws4757.uw.lu.se/shibboleth" REMOTE_USER="eppn persistent-id targeted-id" attributeprefix="ajp_"> httpd.conf ProxyIOBufferSize 65536 <VirtualHost *:443>... ProxyPass /stip ajp://localhost:8009/stip </VirtualHost> standalone.xml <connector name="ajp" protocol="ajp/1.3" scheme="http" socket-binding="ajp" secure="true"/> <socket-binding name="ajp" port="8009"/>
attribute-resolver.xml <resolver:attributedefinition xsi:type="ad:simple" id="testattr" sourceattributeid="testattr"> <resolver:dependency ref="testconnectorid"/> <resolver:attributeencoder xsi:type="enc:saml2string" name="test:testattr" friendlyname="testattr"/> </resolver:attributedefinition> <resolver:dataconnector id="testconnectorid" xsi:type="static" xmlns="urn:mace:shibboleth:2.0:resolver:dc"> <Attribute id="testattr"> <Value>hej</Value> </Attribute> </resolver:dataconnector> attribute-map.xml <Attribute name="test:testattr" id="testattr"> <AttributeDecoder xsi:type="stringattributedecoder" casesensitive="false"/> </Attribute> attribute-policy.xml <afp:attributerule attributeid="testattr"> <afp:permitvaluerule xsi:type="any"/> </afp:attributerule> attribute-filter.xml <afp:attributerule attributeid="testattr"> <afp:permitvaluerule xsi:type="basic:any"/> </afp:attributerule> shibboleth2.xml <ApplicationDefaults id="default" policyid="default" entityid="https://egaws4757.uw.lu.se/shibboleth" REMOTE_USER="eppn persistent-id targeted-id" attributeprefix="ajp_"> httpd.conf (frontend) ProxyIOBufferSize 65536 <VirtualHost *:443>... ProxyPass /php http://egaws4757.uw.lu.se:8099 ProxyPassReverse /php http://egaws4757.uw.lu.se:8099 <Location /php> AuthType shibboleth ShibRequestSetting requiresession 1 require shib-session Require valid-user ShibUseHeaders On </Location> </VirtualHost>
attribute-resolver.xml <resolver:attributedefinition xsi:type="ad:simple" id="testattr" sourceattributeid="testattr"> <resolver:dependency ref="testconnectorid"/> <resolver:attributeencoder xsi:type="enc:saml2string" name="test:testattr" friendlyname="testattr"/> </resolver:attributedefinition> <resolver:dataconnector id="testconnectorid" xsi:type="static" xmlns="urn:mace:shibboleth:2.0:resolver:dc"> <Attribute id="testattr"> <Value>hej</Value> </Attribute> </resolver:dataconnector> attribute-map.xml <Attribute name="test:testattr" id="testattr"> <AttributeDecoder xsi:type="stringattributedecoder" casesensitive="false"/> </Attribute> attribute-policy.xml <afp:attributerule attributeid="testattr"> <afp:permitvaluerule xsi:type="any"/> </afp:attributerule> attribute-filter.xml <afp:attributerule attributeid="testattr"> <afp:permitvaluerule xsi:type="basic:any"/> </afp:attributerule> shibboleth2.xml <ApplicationDefaults id="default" policyid="default" entityid="https://egaws4757.uw.lu.se/shibboleth" REMOTE_USER="eppn persistent-id targeted-id" attributeprefix="ajp_"> httpd.conf (frontend) ProxyIOBufferSize 65536 <VirtualHost *:443>... ProxyPass /php http://egaws4757.uw.lu.se:8099 ProxyPassReverse /php http://egaws4757.uw.lu.se:8099 <Location /php> AuthType shibboleth ShibRequestSetting requiresession 1 require shib-session Require valid-user ShibUseHeaders On </Location> </VirtualHost>
Utbyte av metadata: 1. SOAP över HTTPS 2. Trust ska kunna etableras mellan relying parties enbart baserat på metadata Vad berättar metadata: Metadata identifierar och beskriver en eller flera system entities ( eller :er i vårt fall) och vad de har för roller, för faciliteter/funktioner och hur man når dem, samt etablerar trust mellan avsändaren och mottagaren av metadata. Innehåller 1. Unika identifierare/namn (entityid) för dessa system entities 2. Binding support och endpoints (URL:ar) för dessa bindings (dvs funktioner och hur man når dem) 3. Certifikat och nycklar (trust) Roller SSO Identity Provider SSO Service Provider Authentication Authority Attribute Authority Policy Decision Point Affiliation Hur hittar man metadata om en system entity? Well known location -metoden: En system entity har en unik identifierare (dvs ett valfritt unikt namn). Denna unika identifierare kan vara en url, och via denna url hittas metadata.