Post on 05-Apr-2015
transcript
/ xSicherheit in verteilten Systemen mit Java und SAML
Public
Sicherheit in verteilten Systemen mit Java und SAMLKarlsruher Entwicklertag 2012
Jürgen Groothues
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 2
Vorstellung
Jürgen Groothues (juergen@groothues.icw.de)
Fa. InterComponentWare AG (Walldorf/Baden)
Senior Software Developer
Technical Lead Application Security
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 3
AgendaSicherheit in verteilten Systemen mit Java und SAML
Was ist das Problem?
Wie hilft SAML bei der Lösung?
Exkursion: Digitale Signatur
Wie hilft Java bei der Lösung?
Lösungs-Beispiele (Code und Demos)
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 4
ANWENDUNGSFÄLLEWas ist das Problem?
09.05.2012 / x
/ xSicherheit in verteilten Systemen mit Java und SAML 5
Anwendungsfälle
09.05.2012
Authentifizierung von Web Services
Web Service Aufruf
Krankenhaus B
Identitäts-Information
Internet
Krankenhaus A
Arzt
/ x
Anwendungsfälle
09.05.2012 Sicherheit in verteilten Systemen mit Java und SAML 6
Attribut-basierte Autorisierung
Autorisierungs-Information
6
Web Service Aufruf
Krankenhaus B
Internet
Krankenhaus A
Arzt
/ xSicherheit in verteilten Systemen mit Java und SAML 7
Anwendungsfälle
09.05.2012
Web Single Sign-On
Airline.com
CarRental.com
Authentifizierung
Zugriff aufgeschützte Resource
1
2
Benutzer
Browser
Identitäts-Inform
ation
/ xSicherheit in verteilten Systemen mit Java und SAML 8
SAML ARCHITEKTURWie hilft SAML bei der Lösung?
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 9
SAML Architektur
• Entwickelt vom Security Services Technical Committee der „Organisation for the Advancement of Structured Information Standards“(Sponsoren z.Bsp.: IBM, Microsoft, Oracle, SAP, HP, US DoD, viele andere... )
• Ein offener, XML-basierter Standard zur Beschreibung und zum Austausch von Identitäts- und Autorisierungs-Daten
Was ist SAML?
09.05.2012
SAML
Autorisierungs-Daten
SAML
Identitäts-Daten
Identity Provider
Service Provider
/ xSicherheit in verteilten Systemen mit Java und SAML 10
SAML Architektur
09.05.2012
Assertion
Assertion
Issuer
Subject
Conditions
AuthnStatement
Signature
„ Der Aussteller (Issuer) versichert, daß der Eigentümer (Subject) dieser Assertion sich mit einem Password erfolgreich authentifiziert hat (AuthnStatement). Diese Assertion ist gültig unter diesen Bedingungen (Conditions): ...“
Signature des Issuer
/ xSicherheit in verteilten Systemen mit Java und SAML 11
SAML Architecture
09.05.2012
Assertion
/ x12
SAML Architektur
09.05.2012 Sicherheit in verteilten Systemen mit Java und SAML
Assertion mit Attributen
Assertion
Issuer
Subject
Conditions
AuthnStatement
Signature
„...Der Eigentümer(Subject) hat die folgenden Rollen:... und arbeitet in der folgenden Abteilung:... (Attributes).“
Signature des Issuer AttributeStatement
/ xSicherheit in verteilten Systemen mit Java und SAML 13
SAML Architecture
09.05.2012
Assertion with Attributes
/ xSicherheit in verteilten Systemen mit Java und SAML 14
SAML Architektur
09.05.2012
Konzepte
AssertionsAuthentifizierung,
autorisierungsrelevante Attribute
benutzt
ProtocolsKommunikation von Assertions
BindingsMapping von SAML Protocols auf
Standardprotokolle
ProfilesKombiniert Bindings, Protocols und Assertions
um einen konkreten Anwendungsfall abzubilden
Web Browser SSO Profile
HTTP Post Binding
Authentication Request Protocol
Authentication Statement
Beispiele:
/ xSicherheit in verteilten Systemen mit Java und SAML 15
SAML ArchitekturSicherheit von Assertions
09.05.2012
• Wie wird eine Assertion gegen Fälschung geschützt? Digitale Signatur des Assertion-Ausstellers (Signature)
• Wie wird eine Assertion gegen Mißbrauch geschützt? Verwendung eines Gültigkeits-Zeitraums (NotBefore/NotOnOrAfter) Einschränkung des Empfänger-Kreises (Audience) Verhinderung der Wiederverwendung (durch Service-Provider) Bindung der Assertion an die Nachricht (HolderOfKey)
• Wie wird die Vertraulichkeit der Assertion geschützt? Verwendung von verschlüsselter Assertion (EncryptedAssertion) Verwendung von SSL (TLS) als Transport-Level Sicherheit (durch Infrastruktur)
• Warum kann man einer Assertion überhaupt trauen? Weil man dem Aussteller der Assertion vertraut (PKI/Trust-Relationship, Signature)
/ xSicherheit in verteilten Systemen mit Java und SAML 16
DIGITALE SIGNATURExkursion
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 17
Exkursion: Digitale SignaturGrundlage: Asymmetrische Verschlüsselung
09.05.2012
Encrypter
Bob‘s Public Key
Original
Decrypter
Bob‘s Private Key
Original
• Das Original wird mit dem Public Key des Empfängers verschlüsselt und kann nur mit dem Private Key des Empfängers entschlüsselt werden
Encrypted
Alice Bob
/ xSicherheit in verteilten Systemen mit Java und SAML 18
Exkursion: Digitale SignaturSignatur Erstellung
09.05.2012
Encrypter
Alices‘s Private Key
Message
• Der Sender hängt einen mit seinem Private Key verschlüsselten Digest an die Nachricht an.
Signed Message
Alice
Signature
Digester
Digest
Bob
/ xSicherheit in verteilten Systemen mit Java und SAML 19
Exkursion: Digitale SignaturSignatur Verifikation
09.05.2012
Alices‘s Public Key
• Der Empfänger verwendet den Public Key des Senders um den Digest zu entschlüsseln und vergleicht diesen Wert mit dem selbst berechneten Digest.
Message
Bob
Signature
Digester
ComputedDigest
Decrypter
DecryptedDigest
Equal?
yes no
Message Integrity and Authenticity Verification
successful failed
/ xSicherheit in verteilten Systemen mit Java und SAML 20
Exkursion: Digitale SignaturAnforderungen an XML Signatur
09.05.2012
• Gesamtes XML Dokument oder einzelne XML Elemente sollen signiert werden können Aufgrund von Geschäftsregeln Aus Performance Gründen
• Signatur-Metadaten müssen kommuniziert werden Welche Schlüssel wurden für die Signatur verwendet Welche XML Elemente wurden signiert
• Signatur muß selbst als XML Element dargestellt werden können(http://www.w3.org/TR/xmldsig-core/)
• Problem: Syntaktisch äquivalente XML Dokumente können unterschiedliche Signaturen produzieren...
/ xSicherheit in verteilten Systemen mit Java und SAML 21
Exkursion: Digitale SignaturProblem XML Signatur
09.05.2012
• Herausfoderung XML Signatur: Syntaktisch äquivalente XML Dokumente können unterschiedliche Signaturen produzieren:
Signature Signature
/ xSicherheit in verteilten Systemen mit Java und SAML 22
Exkursion: Digitale SignaturXML Canonicalization
09.05.2012
• XML Canonicalization (c14n): Wohlgeformte XML Dokumente werden in ein „Standard-Format“ transformiert (
http://www.w3.org/TR/xml-c14n)
CanonicalForm
c14n
c14n
c14n
c14n
Universum aller XML Dokumente
Syntaktisch äquivalente XML Dokumente
/ xSicherheit in verteilten Systemen mit Java und SAML
Exkursion: Digitale Signatur
23
XML Signatur und SAML Assertion
09.05.2012
Assertion
Signature
KeyInfo
SignedInfo
SignatureMethod
CanonicalizationMethod
Reference Assertion
Transforms
DigestMethod
DigestValue
SignatureValue
SignedInfo: Was wurde wie signiert
Reference: Welches Element bzw. Dokument wurde signiert
DigestValue: Digest des referenzierten Elements (base64)
SignatureValue: Verschlüsselter Digest des SignedInfo Elements (base64)
KeyInfo: Informationen über den verwendeten Signatur-Schlüssel
/ xSicherheit in verteilten Systemen mit Java und SAML 24
Exkursion: Digitale SignaturXML Signatur - Beispiel
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 25
JAVA XML DIGITAL SIGNATURE APIWie hilft Java bei der Lösung?
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 26
Java XML Digital Signature APIÜbersicht
09.05.2012
• JSR 105 http://jcp.org/en/jsr/detail?id=105 Seit Java SE 6
• Erlaubt Erzeugung und Validierung von XML Signaturen Unterstützt die W3C XML Digital Signature Spezifikation (http://www.w3.org/TR/xmldsig-core/) Erlaubt die Signierung von XML- und Binär-Daten
• Basiert auf der Java Cryptography Service Provider Architecture (JCA)
• Relevante Java SE Packages: javax.xml.crypto javax.xml.crypto.dsig javax.xml.crypto.dsig.keyinfo javax.xml.crypto.dsig.spec javax.xml.crypto.dom javax.xml.crypto.dsig.dom
/ xSicherheit in verteilten Systemen mit Java und SAML 27
Java XML Digital Signature APIErzeugung einer XML Signatur (1/3)
09.05.2012
Signature
KeyInfo
SignedInfo
SignatureMethod
CanonicalizationMetho
Reference Assertion
Transforms
DigestMethod
DigestValue
SignatureValue
/ xSicherheit in verteilten Systemen mit Java und SAML 28
Java XML Digital Signature APIErzeugung einer XML Signatur (2/3)
09.05.2012
Signature
KeyInfo
SignedInfo
SignatureMethod
CanonicalizationMetho
Reference Assertion
Transforms
DigestMethod
DigestValue
SignatureValue
/ xSicherheit in verteilten Systemen mit Java und SAML 29
Java XML Digital Signature APIErzeugung einer XML Signatur (3/3)
09.05.2012
Signature
SignatureValue
SignedInfo
SignatureMethod
CanonicalizationMetho
Reference Assertion
Transforms
DigestMethod
DigestValue
KeyInfo
/ xSicherheit in verteilten Systemen mit Java und SAML 30
JAVA ARCHITECTURE FOR XML BINDING (JAXB 2.X)
Wie hilft Java bei der Lösung?
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 31
JAXB 2.xÜbersicht
09.05.2012
• JSR 222 http://jcp.org/en/jsr/detail?id=222 Referenzimplementierung: JAXB Project (http://jaxb.java.net) Seit Java 5 Bestandteil Java SE
• Bindet (bidirektional) XML an Java Beans (POJOs) Generiert Java Beans aus einem bestehenden XML Schema Generiert XML Schemas aus einem bestehenden Java Beans Datenmodell Verwendet Java-Annotationen als Bindungs-Informationen
• Relevante Java SE Packages: javax.xml.bind javax.xml. bind.annotation javax.xml. bind.annotation.adapters javax.xml. bind.attachment javax.xml. bind.util
/ xSicherheit in verteilten Systemen mit Java und SAML 32
JAXB 2.xArchitektur
09.05.2012
Binding-Framework(JAXB-API)
XML-Dokument
Compile-Zeit Laufzeit
XML-Schema
Bindungs-Deklarationen
JAXB-Annotationen
Schema-Compiler
Schema-Generator
Marshal Unmarshal
object Class Model
Assertion
Issuer
Signature
Java BeansInstanzen
Marshal Unmarshal
Java Beans
/ xSicherheit in verteilten Systemen mit Java und SAML 33
JAXB 2.xSchema-Compiler
09.05.2012
• Der Schema-Compiler generiert aus einem XML Schema Java Klassen mit JAXB-Annotationen:
XML-Schemakomponente Java-Komponente
Namespace Packageoasis.names.tc.saml._2_0.assertion
Datentyp Java-Klasse
Element Instanz-Variable
... ...
/ xSicherheit in verteilten Systemen mit Java und SAML 34
JAXB 2.xSchema-Compiler
09.05.2012
• Das Default-Verhalten des Schema-Compilers kann mit Bindungs-Deklarationen überschrieben werden:
Package-Name überschreiben:
Klassen-Name überschreiben:
/ xSicherheit in verteilten Systemen mit Java und SAML 35
JAXB 2.xSchema-Compiler mit Maven
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 36
MYSAMLLösungs-Beispiel
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 37
MySamlArchitektur
09.05.2012
class MySAML
SamlContext
AssertionBuilder
+ build(Map) :Document
ResponseBuilder
+ build(Map) :Document
ResponseExtractor
+ extractAssertion() :Document
AssertionValidator
+ validate(Document) :void
DefaultProperties
SamlContextFactory
+ createSamlContext(Map) :SamlContext
create create
create create
use
use
create
/ xSicherheit in verteilten Systemen mit Java und SAML 38
MySamlAPI
09.05.2012
<Demo>https://github.com/groothues/mysaml
/ xSicherheit in verteilten Systemen mit Java und SAML 39
WS-SECURITY, SSOBeispiel-Anwendungen
09.05.2012
/ xSicherheit in verteilten Systemen mit Java und SAML 40
Beispiel-AnwendungWeb Service Security
09.05.2012
cmp WS-Security Sample
«ws client»soapUI
«ws server»TimeServ ice
«tokenservice»mySAML Sample
«SOAPHandler»SamlAuthenticator
«WebService»Timer
1. hole SAMLAssertion(manuell)
2. sende WSRequest mitSAMLAssertion
/ xSicherheit in verteilten Systemen mit Java und SAML
Beispiel-AnwendungWeb Service Security – SOAP Request
09.05.2012
soap:Envelope
soap:Body
soap:Header
wsse:Security WS-Security Core Specification
WS-Security SAML Token Profile
my:currentTime
saml:Assertion
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss
/ xSicherheit in verteilten Systemen mit Java und SAML 42
Beispiel-AnwendungWeb Service Security – Trust Relationship
09.05.2012
web WS Security Sample Trust Relationship
«ws server»TimeServ ice
«tokenservice»mySAML Sample
Key Store Trust Store
trust
/ xSicherheit in verteilten Systemen mit Java und SAML 43
Beispiel-AnwendungWeb Service Security
09.05.2012
<Demo>https://github.com/groothues/mysaml
/ xSicherheit in verteilten Systemen mit Java und SAML 44
Beispiel-AnwendungWeb Single Sign-On (SSO)
09.05.2012
web IdP-Initiated SSO
«Identity Provider»Web Anwendung 1
«Service Provider»Web Anwendung 2
User's Browser
SAML SSO Serv let Login FilterSAML SSO Login Filter
4.
2. Username /Passwordabfragen
5. HTML Form withSAML Assertion
1. Resourceanfragen
6. POST HTMLForm withSAML Assertion
3. User login
7. Supply resource
/ xSicherheit in verteilten Systemen mit Java und SAML 45
Beispiel-AnwendungWeb Single Sign-On – Trust Relationship
09.05.2012
web SSO Sample Trust Relationship
«Identity Provider»Web Anwendung 1
«Service Provider»Web Anwendung 2
Trust Store Key Store
trust
/ xSicherheit in verteilten Systemen mit Java und SAML 46
Beispiel-AnwendungWeb Single Sign-On (SSO)
09.05.2012
<Demo>
/ xSicherheit in verteilten Systemen mit Java und SAML 47
RESSOURCEN
09.05.2012 / x
/ xSicherheit in verteilten Systemen mit Java und SAML 48
Resourcen
09.05.2012
• JAXB 2.0, Samuel Michaelis u. Wolfgang Schmiesing, Hanser Verlag• SOA Security, Ramarao Kanneganti u. Prasad Chodavarapu, Manning Verlag• SAML (Knowledgebase für SAML Specs, Profile, Tutorials und Implementierungen:
http://saml.xml.org/wiki/saml-wiki-knowledgebase• OASIS SAML Übersichtsseite:
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security• IHE XUA (Cross Enterprise User Assertion, ab Seite 88):
http://www.ihe.net/Technical_Framework/upload/IHE_ITI_TF_Rev7-0_Vol2b_FT_2010-08-10.pdf
• JAXBhttp://jaxb.java.net/
• Java XML Digital Signatureshttp://java.sun.com/developer/technicalArticles/xml/dig_signatures/
• Programming with the Java XML Digital Signature APIhttp://java.sun.com/developer/technicalArticles/xml/dig_signature_api/
/ x
Vielen Dank für Ihre Aufmerksamkeit
Sicherheit in verteilten Systemen mit Java und SAML 4949
InterComponentWare Inc.650 East Swedesford Road - Suite 180
Wayne, PA 19087, USATel.: +1 610 947 6500Fax: +1 610 947 6519
E-mail: usinfo@icw-global.com
www.icw-global.com
InterComponentWare AGAltrottstraße 31 / Partner-Port
69190 Walldorf, GermanyTel.: +49 (0) 6227 385 100Fax: +49 (0) 6227 385 199
E-mail: info@icw-global.com
www.icw-global.com
/ x09.05.2012