shibboleth 2.0: 6 months later…

33
Shibboleth 2.0: 6 months later… Shibboleth 2.0 -- Again Nate Klingenstein [email protected]

Upload: zoe-singleton

Post on 30-Dec-2015

48 views

Category:

Documents


2 download

DESCRIPTION

Shibboleth 2.0: 6 months later…. Shibboleth 2.0 -- Again. Nate Klingenstein [email protected]. The New Timeline. OpenSAML 2.0 Technology Preview 2 Released Sept. 5 Shibboleth 2.0 Spring ‘07 Shibboleth 2.1 TBD Everything herein subject to heavy revision. Progress made since Athens. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Shibboleth 2.0: 6 months later…

Shibboleth 2.0: 6 months later…Shibboleth 2.0 -- Again

Nate [email protected]

Page 2: Shibboleth 2.0: 6 months later…

The New Timeline

• OpenSAML 2.0 Technology Preview 2– Released Sept. 5

• Shibboleth 2.0– Spring ‘07

• Shibboleth 2.1– TBD

• Everything herein subject to heavy revision

Page 3: Shibboleth 2.0: 6 months later…

Progress made since Athens

• Functionality added to 1.3

• Security holes fixed

• Endless ratholes explored

• Face-to-face developers’ meeting Sept. 1-2– The source of most of this information

Page 4: Shibboleth 2.0: 6 months later…

SAML 2.0 Issues

• SOAP, browser clients both supported• Noteworthy supported protocols & bindings:

– SAML 2.0 AuthnRequest– SAML 2.0 AuthnResponse– SAML 2.0 SingleLogout– SAML 2.0 AttributeQuery in the IdP– Shibboleth/SAML 1.x POST and Artifact– ADFS– WS-Fed?

• Noteworthy unsupported protocols & bindings:– SAML 2.0 Name Identifier Management– SAML 2.0 AttributeQuery in the SP?

Page 5: Shibboleth 2.0: 6 months later…

Shibboleth 2.0 Principles

• Incoming messages in SAML 2.0 and others can’t be identified until unpacking• Bindings are decoupled from protocols• Signing, multiple endpoints

• If you leave the SP without identifying the IdP, you’re forced into Shibboleth 1.x flows

• Configurations will not be compatible• High priority to keep the deployment bar

low, and interoperability high• Keep everything as stateless as possible

Page 6: Shibboleth 2.0: 6 months later…

Single Logout

• The goal is not complete single logout• Log the user out of the IdP and a small number of

highly secure applications• The IdP is the ultimate session authority

• Responsible for notifying session participants• Responsible for most of the UI; SP handles UI if

something breaks there• May still be SP-initiated

• Front-channel browser & back-channel SOAP• SOAP greatly preferred, but does it need new

endpoints?• Signing vs. TLS: Signing wins

• Requires keys in the metadata

• Prefer frames to imbedded images

Page 7: Shibboleth 2.0: 6 months later…

The WAYF

• No widely deployed client-based solution to the discovery problem(Cardspace)

• WAYF becomes a discovery service

• New flow: SP -> WAYF -> SP -> IdP

• Create a new protocol for querying the WAYF– Send user, receive providerId

• Cookie handling

• Avoiding creation of a protocol translator– But you’re welcome to build one!

Page 8: Shibboleth 2.0: 6 months later…

1.3 SP Internal Architecture

In process (native) Out of Process (shibd)

Request Map

Metadata

Trust

AAP

Applications

Handlers

Session CacheBacking

Store

Configuration

Metadata

Trust

AAP

Applications

Client

Listener

Server

Listener

Page 9: Shibboleth 2.0: 6 months later…

Shibboleth 2.0 SP -- New SP &SP Classic

• General changes

• C++ Changes– Refresh removed– ODBC caching– Attribute/assertion export

• Java SP– Implementation– Installation & Application Mapping– Attribute/assertion export– Attribute resolver?

Page 10: Shibboleth 2.0: 6 months later…

General SP

• SAML 2.0 decouples bindings from protocols• Moving from a single SAML response model to a

multiple assertion model– SAML SSO assertion will have multiple statements– Approach enables other protocols– Allows for things like “authentication upgrades”– And advanced attribute aggregation techniques

• ID-WSF Flavored SAML queries or something similar

• XML-based ShibSession• Collect additional assertions for existing sessions

at runtime

Page 11: Shibboleth 2.0: 6 months later…

C++ SP

• Attribute refresh removed– What would happen to an application if the

attributes changed midrequest?– Session lifetime is attribute lifetime

• ODBC-based session/assertion cache

• Session Initiation via providerId’s– TestShib uses this today

• Most functionality remains out-of-process

• In-process to out-of-process communication now XML-based

Page 12: Shibboleth 2.0: 6 months later…

C++ SP

• One-to-many path to handler relationship– In WS-* & SAML 2.0, until a message is

unpacked, it’s not clear which handler to use.

• Multiple endpoints still needed– Artifact vs. POST

• On Apache, attribute export performed with subprocess environment variables instead of (still optional) HTTP header variables– Unspoofable– ISAPI and NSAPI?

• Need to use the IIS Metabase eventually

Page 13: Shibboleth 2.0: 6 months later…

C++ SP

• Authentication information exported to apps:– Authentication method– NameID– Authentication context?

• Header size limit makes exporting XML hard– We could develop a REST-ish interface (preferred)– Or chunk the assertions through headers

• Historically, pass the attribute assertion– Not right to begin with, and getting more wrong– How do applications reference the assertions they

want?

Page 14: Shibboleth 2.0: 6 months later…

Java SP

• Implemented purely as filters– No need to deploy servlets with your apps– Limited work to configure new applications

• shibboleth.xml will differ by some amount– We don’t believe homogeneity is important

here -- are we right?

• Use Spring to load configuration– Distributed configuration with dependency

injection

Page 15: Shibboleth 2.0: 6 months later…

Java SP

• State mostly server-side using session object– Limited client state possible because of

SOAP/browser dual support

• Attributes & assertions exposed as session object attributes– And maybe as header variables– Sanity checks on every request

• An attribute resolver functionality embedded in the SP?– Bookmarks, preferences– Legacy names/logins

Page 16: Shibboleth 2.0: 6 months later…

Java SP

• Applications likely to be a different concept– More context in a servlet container– Bugs in Tomcat’s virtualization &

canonicalization• Add a property to each application’s web.xml

specifying hostname? Ugh.

– If we don’t use web.xml, we’d use the C++ request mapping structure

• Servlet 2.3 specification, hopefully

Page 17: Shibboleth 2.0: 6 months later…

Shibboleth 2.0 IdP

• Protocol Handlers

• NameIdentifier

• Attribute Resolution

• Authentication

• Levels of Assurance

Page 18: Shibboleth 2.0: 6 months later…

1.3 IdP Internal Architecture

Servlet

Container IdP

Responder

Config IdP Protocol SupportNameID Map.

Credential P.

Metadata P.

Trust Engine

ARP Engine

Attribute Reso.

Artifact Map.

AA Attribute

Protocol

Handler

Protocol

Handler

Protocol

Handlers

Page 19: Shibboleth 2.0: 6 months later…

IdP: Protocol Handlers

• Interface between the IdP Responder & the Protocol Handlers– Had been very SAML-based, will no longer be

• 1.3 handlers match via regex, using the first found– But with multiple message types hitting a single

endpoint…

• The difference between browser, SOAP in authentication is particularly bad

• We’ll implement a many-to-many mapping– Multiple handlers at an endpoint– Multiple endpoints per handler

Page 20: Shibboleth 2.0: 6 months later…

IdP: Protocol Handlers

<IdP>

<ProtocolHandler Location="expression">

<Binding="urn....."/>

<Binding="urn....."/>

</ProtocolHandler>

<ProtocolHandler Location="expression2">

<Binding="urn....."/>

</ProtocolHandler>

</IdP>

Page 21: Shibboleth 2.0: 6 months later…

The NameIdentifier Quandary: how things used to be

• An incoming message subject is mapped to a principal name– Performed up front so it can handle the

request– Limitations arise from attribute query & other

flows…

• The principal name is used for attribute resolution, clear logs, etc.

• But now NameIdentifiers are things we’ve been calling attributes.

Page 22: Shibboleth 2.0: 6 months later…

The NameIdentifier Quandary: the theory

• Unified internal representation of identity– Principals/users– Entities– Allows for issuance of assertions to anyone about

anyone, e.g. SOAP clients– What’s the trust engine look like? Metadata?

• Multiple parties in every request– Requester– Presenter– Relying Party

• How can we do this without confusing everyone?– ARP’s– Other configuration– Which is most important? The requester?

Page 23: Shibboleth 2.0: 6 months later…

The NameIdentifier Quandary: it gets worse

• SP’s may request a specific name identifier– But maybe not: must have a default in the

RelyingParty

• Metadata may contain name identifier preferences– We’ve always treated metadata as a set of hints rather

than rules

• Federations represent groups of providers• What takes precedence? What do you send?

How do you handle multiple results?– ARP’s are cumulative, NameIdentifiers singular– But ARP’s should apply; these are attributes, after all

Page 24: Shibboleth 2.0: 6 months later…

The NameIdentifier Quandary: the last issue

• Mapping can’t be up front anymore due to intensive processing– And you may need to go look it up in external

stores

• NameIdentifier is really the primary key amongst your attributes– Unification with the Attribute Resolver– Without hammering data stores

• 50% of the current IdP request overhead is attribute resolution

Page 25: Shibboleth 2.0: 6 months later…

Today’s NameIdentifier Solution

• Resolve the NameIdentifier as far forward as possible

• 5 minute secondary attribute cache to avoid hammering repositories, but maintain data freshness

• IdP receives a request; needs to send out a NameID in the subject.– Look at the request; is one specified? ARP it– Look in the metadata;

• If multiple matches, use order of precedence, and throw the leftovers into additional attributes?

– If nothing in the metadata, use the default for the RelyingParty

Page 26: Shibboleth 2.0: 6 months later…

IdP: Attribute Resolution

• Make the attribute resolver and ARP engine more XML-aware– XPath for NameIdentifiers?

• Implement Beanshell for attribute resolution?

• SAML 2.0 LDAP profile uses urn:oid– We’d been doing lookup using friendly names– If you then map those back to OID’s, they may

not correspond to the ones in the directory

Page 27: Shibboleth 2.0: 6 months later…

IdP: Attribute Resolution

• SAML 2.0 includes an attribute namespace as well as attribute name– We’ll always use the URI namespace, and so should

you– But it’s different for Shibboleth 1.x and SAML 2.0…

• Will probably be hardcoded

• We’d assumed one namespace implicitly– Now attribute names have two parts– But we still will make this assumption for deployment

sanity

• Commercial vendors use namespace similar to our scope– For interop, Shibboleth will be able to receive multiple

namespaces, but not send them

Page 28: Shibboleth 2.0: 6 months later…

IdP: Authentication

• Incoming AuthnRequests routed through handlers to arrive at a dispatcher– Inspects request– Evaluates whether authentication needs have

already been met

• Dispatched to another handler -- but how, and how do they get back?– Once you return the browser, you’re toast– Basic auth as a model?– Back-channel calls, shared cookie domains

• isPassive

Page 29: Shibboleth 2.0: 6 months later…

IdP: Authentication

• Denial of Service fears– If we can’t store everything in the browser via cookie

chunking…– Then we’re spinning up sessions prior to auth/n

• SSO handler will pass to another layer of abstraction– IdP Responder -> SSO Handler -> Authentication

Handler -> Authentication Mechanism

• We’ll ship a Shibboleth ISO, which includes IP-based, and form-based netid/password for LDAP and database backends

• Your solution plugs into the Authentication Handler spot

Page 30: Shibboleth 2.0: 6 months later…

IdP: Authentication & LoA

• Authentication Method– Purely technical

• What’s “better” mean?

• Authentication Context– Includes policy

• SP can request multiple sufficient authentication contexts– How do you choose which one to use?– How can authentication contexts be ordered without

leading to configuration pain?– SSH/SASL send back a list, but worry about

downgrade attacks

• Federal Government: NIST has defined LoA

Page 31: Shibboleth 2.0: 6 months later…

General IdP

• Would need to maintain many sessions in the IdP to handle SLO– One per principal– One per principal/relying party pair– Must be server side to support both SOAP and

browser logout

• Some sort of session interface needed; some may have less functionality, but will be easier to deploy– Cookie, file, database, in-memory, Sequoia,

etc.– Logout support becomes optional

Page 32: Shibboleth 2.0: 6 months later…

General IdP

• More dynamic configuration– Changes picked up, tested, and loaded on the

fly

• New “Defaults” element to contain baseline response parameters– RelyingParty elements sit within this

Page 33: Shibboleth 2.0: 6 months later…

More Information

https://shibboleth.internet2.edu

https://authdev.it.ohio-state.edu/twiki

/bin/view/Shibboleth/WebHome

[email protected]