Information om Shibboleth

Download Report

Transcript Information om Shibboleth

Federation
Jboss
Java-system
Shibboleth SPprogramvara
SAML
Namn:
Uid:
Organisation:
inetOrgPerson
Unikt namn: ...
Roll: SP
Funktioner som kan anropas: ...
Så här når du funktionerna: ...
Du kan lita på mig! Certikfikat: ...
Shibboleth IDPprogramvara
Unikt namn: ...
Roll: IDP
Funktioner som kan anropas: ...
Så här når du funktionerna: ...
Du kan lita på mig! Certikfikat: ...
Browser
SAM
L
L
SAM
Shibboleth SPprogramvara
SAML
Shibboleth IDPprogramvara
Unikt namn: ...
Roll: IDP
Funktioner som kan anropas: ...
Så här når du funktionerna: ...
Du kan lita på mig! Certikfikat: ...
Unikt namn: ...
Roll: SP
Funktioner som kan anropas: ...
Så här når du funktionerna: ...
Du kan lita på mig! Certikfikat: ...
SAM
L
SimpleSAML
SP-programvara
Unikt namn: ...
Roll: SP
Funktioner som kan anropas: ...
Så här når du funktionerna: ...
Du kan lita på mig! Certikfikat: ...
Viktigaste uppgift: Web Browser SSO
PHP-program
Apache
backend
---------------------------------------------------------
---------------------------------------------------------
Shibboleth IDPprogramvara
?
Unikt namn:
https://idp.lu.se/idp/shibboleth
Roll:
IDP
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
Hur får de reda på varandra?
Hur skapa säker överföring av data?
Shibboleth SPprogramvara
inetOrgPerson
Browser
Unikt namn:
https://mittsystem.lu.se/shibboleth
Roll:
SP
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 går kommunikationen mellan dem till?
Attribut-förmedling
Web-browser
IDP
IDP
SP
SP
Redirect för
inloggning
Inloggning med
uid/pwd
IDP
(Tomcat 6)
Attribut-källor
AccessControl
via
attributregler
Attributlista
Attribut-lista
VIA
ENVIRONMENT
SAMLmeddelande
AJP-request
SP
(Apache 2.4)
AccessControl
via
attributregler
Jboss
backend
LDAP
SQL
attribute-resolver.xml
attribute-map.xml
<AttributeDefinition/>
<DataConnector/>
<Attribute/>
Statiska attribut
Java-applikation
attribute-filter.xml
attribute-policy.xml
JSF-dokument
<AttributeFilterPolicy/>
<AttributeRule/>
<AttributeFilterPolicy/>
<AttributeRule/>
#{request.getAttribute('testattr')
Attributlista
Attributlista
Attribut-förmedling i PHP a
Web-browser
IDP
IDP
SP
SP
Redirect för
inloggning
Inloggning med
uid/pwd
Attribut-lista
VIA HTTP-headers
Attributlista
SAMLmeddelande
IDP
(Tomcat 6)
Attribut-källor
AccessControl
via
attributregler
HTTP-request
SP
(Apache 2.4)
Apache 2.2
backend
AccessControl
via
attributregler
LDAP
SQL
attribute-resolver.xml
attribute-map.xml
<AttributeDefinition/>
<DataConnector/>
<Attribute/>
Statiska attribut
PHP-applikation
attribute-filter.xml
attribute-policy.xml
PHP-fil
<AttributeFilterPolicy/>
<AttributeRule/>
<AttributeFilterPolicy/>
<AttributeRule/>
$_SERVER["HTTP_TESTATTR"];
Attributlista
Attributlista
Attribut-förmedling i PHP b
Web-browser
IDP
IDP
SP
SP
Redirect för
inloggning
Inloggning med
uid/pwd
Attributlista
SAMLmeddelande
IDP
(Tomcat 6)
Attribut-källor
AccessControl
via
attributregler
Applikationsserver
Apache 2.4
Attributlista
SimpleSamlPHP
LDAP
attribute-resolver.xml
SQL
<AttributeDefinition/>
<DataConnector/>
Statiska attribut
PHP-applikation
Simplesamlphp-config filer
$as = new SimpleSAML_Auth_Simple('default-sp');
$as->requireAuth();
$attributes = $as->getAttributes();
echo $attributes[’testattr’];
attribute-filter.xml
<AttributeFilterPolicy/>
<AttributeRule/>
Attributlista
Saml2int Web Browser SSO Deployment profile
XML-encryption används
inetOrgPerson
TERENA CA Cert
HT
Browser
-----------------------------------------------------------------------------------------------------------------
qu
Re
hn
t
u
<A
T
HT
PS
H
ell
er
H
TT
PS
Re
qu
HT
e
TP <A
om st ti
- R ut
en ll ap
ED h n
IR Re
we plik
HT
EC q
bb ati
TP
ue
T
sid on
ell
bin st
>
a en
er
din vi
HT
a
g
T
t
PS
ill
Su <R
ID
bj esp
ec o
P:
t, ns
n
A e
t>
es
n
P:
via ill S
:n
P
>
a
t
e
vi ID
ns ing
t> till
po ind
es ing
s
u
e b
q d
< R ST
Re in
PO
h n CT b
t
u E
TP
T
<A DIR
H
RE
PT
>
t
T
se u
SingleSignOnService Endpoint
TP
ttr >
ib
ut
we Resp
bb on
HT
sid s f
TP <R
a o rån
-P esp
ch ap
OS o
SS pl
T b ns
O- ika
ind e> v
se tio
ing ia
ss n
ion en
til
lS
sd :
P:
at
n
a
n ib
po ttr
es , A
<R j e c t
b
Su
<A
ut
hn
Re
qu
es
t>
AssertionConsumerService Endpoint
HTTPS-förbindelse
Request till SP om metadata
---------------------------------------------------------
System entity
Roll: IDP
XML-dokument med Metadata i klartext
System Entity
Roll: SP
HTTPS-förbindelse
Request till IDP om metadata
XML-dokument med Metadata i klartext
TERENA CA Cert
---------------------------------------------------------
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
TERENA CA Cert
Skapa en jks-keystore med lösenord (self-signed)
SWAMID-federationen
Kryptera
d
förbind
else
SAMLmeddela
nde /
metada
ta
TERENA CA Cert
Subject: cn=www.minsajt.lu
Issuer: samma som ovan
inetOrgPerson
TERENA CA Cert
Key: RSA 2048 bits
Signature: SHA-256 with RSA
??
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...
Browser
d
ra
te
yp
Kr
---------------------------------------------------------
fö
d
in
rb
SA
M
Lkr me
yp dd
te el
ra an
d de
da m
ta e
d
--- ----- ---- ------ ----- ----- ------- --- ----- --- --- ----
Kr
yp
te
ra
d
fö
rb
in
d
el
se
se
el
ed
m
e
nd
la ta
de - da
ed xt
m e
L- art
M kl
SA
----- ---- --- --- --- ----- ----- ----- ------ ---- ----- -----
IDP
(Tomcat 6)
Generera ett CSR
Importera erhållen signering
Exportera privat nyckel med lösenord (.key) och publik nyckel/certifikat (.crt)
Krypterad förbindelse
SP
(Apache 2.4)
SAML-meddelande eller metadata
i klartext
---------------------------------------------------------
TERENA CA Cert
TERENA CA Cert
80
SP
443
11443
IDP
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
8009
Jboss 7
attribute-map.xml
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 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
shibboleth2.xml
<afp:AttributeRule attributeID="testattr">
<afp:PermitValueRule xsi:type="basic:ANY"/>
</afp:AttributeRule>
<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-map.xml
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 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
shibboleth2.xml
<afp:AttributeRule attributeID="testattr">
<afp:PermitValueRule xsi:type="basic:ANY"/>
</afp:AttributeRule>
<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-map.xml
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 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
shibboleth2.xml
<afp:AttributeRule attributeID="testattr">
<afp:PermitValueRule xsi:type="basic:ANY"/>
</afp:AttributeRule>
<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” (SP eller IDP: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.