The Design and Implementation of an OpenID

advertisement
The Design and Implementation
of an OpenID-Enabled PKI
Kevin Bauer
University of Colorado
Supervisor: Dhiva Muruganantham
The Login Explosion Problem
• Everyone uses a variety of web services
– E-mail, social networking sites, blogging sites, online collaboration tools, etc.
• But each site has a unique way for us to login
• Wouldn’t it be great to have just one set of credentials?
1
Solution: OpenID
For example: http://ksbauer.myopenid.com
2
What is OpenID?
• OpenID is an authentication protocol
– It provides a way for a user to prove their identity
• OpenID’s primary design considerations:
– Simplify your online experience
• Eliminates the need for multiple user names and passwords
• Single Sign-On: Authenticate once, log-in many times
– Decentralized
• No central authorities, users are free to choose their identity
providers
– Third-party websites never see authentication credentials
• Your user names and passwords are safer
– Built on existing web technologies
• Leverages the ubiquity of HTTP(S), URI, XML, SSL, Diffie-Hellman
• No specialized technologies are necessary
3
How Does OpenID Work?
1. RP asks the user to login
Relying party provides an interface
to request user’s OpenID URI
2. User submits OpenID URL
3. Perform
URL discovery
RP
4. Return
IdP endpoint
5. Request
login
8. Return
auth. result
http://natron.es.net/openid/kevinbauer3
User
IdP
6. Redirect
user to IdP
7. User logs in
9. Grant user access?
Website
(relying party or RP)
Identity Provider
(IdP)
End User
4
OpenID IdP Discovery
• Which identity provider is responsible for
authenticating this user?
HTTP HEAD: http://natron.es.net/openid/kevinbauer3
Retrieve HTTP response headers
200 OK
Date: Tue, 11 Aug 2009 17:55:47 GMT
Server: Apache/2.2.11 (Fedora) DAV/2 mod_ssl/2.2.11
Content-Type: text/plain
…
Client-Date: Tue, 11 Aug 2009 17:55:47 GMT
Client-Peer: 198.128.5.22:443
Client-Response-Num: 1
X-XRDS-Location: https://natron.es.net/claimed_xrds.jsp?
opEndpoint=https://natron.es.net/provider
Identity provider endpoint URL is discovered
5
OpenID User Authentication
• Redirect user to the discovered IdP endpoint
• IdP authenticates the user
User should manually verify IdP URL
when authenticating with a password
(to mitigate phishing attacks)
The referring site is displayed
The user provides their
authentication credentials
to the IdP
6
OpenID User Authentication (2)
• User approves the authentication request
The user explicitly authorizes the
release of the authentication result
• Authentication result is shared with the relying party
7
OpenID and User Information
• Beyond authentication, OpenID provides a
structured way of sharing information about
you
• Simple Registration Protocol
– Lightweight profile exchange
• Full name, nickname, e-mail, date of birth, gender,
postcode, country, language, and time zone
• Attribute Exchange Protocol
– More flexible information exchange
– Allows RP to request any information about users 8
Our Project:
Develop OpenID Infrastructure for ESnet
Three main deliverables for our project:
1. OpenID identity provider
2. OpenID-enabled certificate authority
3. OpenID-enabled collaboration tool (TWiki)
9
ESnet OpenID Provider
Two authentication methods:
username/passwords, client certificates
Persistent Account Storage:
- LDAP to store authentication credentials
- MySQL database to store user attributes
Registration Validation:
Send confirmation e-mail to verify
the account creation
(for password-based accounts)
Automatic Registration:
Automatic enrollment
for token holders; All
“international grid trust
federation” certs. trusted
10
Demo: OpenID Identity Provider
11
OpenID-Enabled Certificate Authority
• Goal: Enable users to request short-term certificates using
their OpenID automatically
A relying party
User enters their OpenID
IdP whitelisting
Or logs-in directly
with their IdP
12
Demo: Certificate Request with OpenID
13
OpenID Collaboration Site
• Goal: Use OpenID to login to an ESnet TWiki
• TWiki is an example of another OpenID relying party
OpenID
authentication
http://natron.es.net/openid/kevinbauer3
• Obtains user information from the attribute exchange
14
Demo: OpenID for Collaboration: Twiki
15
OpenID Summary
OpenID offers the following benefits:
• Single sign-on simplifies the online experience
• Third-parties don’t know our passwords
• Trust is decentralized
• Easy to deploy, built on proven web technologies
But, OpenID is not a perfect solution…
16
Open Problems with OpenID: Phishing
• What is phishing?
Example:
An attempt to steal
usernames/passwords by
impersonating a legitimate
(high value) website
• Particularly dangerous because OpenID credentials may grant
access to a large number of accounts
• Design effective UIs and educate users about risks
– Users should verify URLs and SSL certificates before releasing their
passwords
• Certificate-based authentication largely solves this
17
Open Problems with OpenID:
Hard to Leave the Web Browser
• Can we use OpenID with non-web applications?
– GridFTP, SSH, other legacy applications outside the browser
• Simple answer: Not really
– OpenID relies on browser interactions between the user
and their IdP
– Single sign-on functionality needs browser session state
• More complicated answer: Maybe
– Mimic the browser functionality within the legacy app
– Requires the legacy app to be modified (it’s now an RP)
18
Open Problems with OpenID:
User’s Privacy May Be at Risk
• OpenID exposes user information in two ways
– Problem: Attribute exchange releases user’s name, email, etc. to relying parties
• Solution: Give user’s ability to control what information is
released about them
– Problem: OpenID identifiers are persistent and global
identifiers  Behavior can be linked over time
• Solution: Give users dynamic identifiers, a different identity
each time they login to an RP
19
One-time Use Identifiers Mitigates Tracking
Login to RP with the IdP
endpoint, not OpenID
https://natron.es.net/provider
This allows the user to
login directly with their IdP
Authenticate with the IdP
as normal and ask for onetime use identifier
IdP returns a randomly
https://natron.es.net/openid/1exrt9ezhp9ug generated and authenticated
OpenID to the RP
https://natron.es.net/openid/36lse1cyoz4u
Login again and get
a new random ID
20
Demo: One-time Use Identifiers
21
OpenID/Shibboleth Comparison
• Both protocols offer
– Cross-domain authN
– Attribute exchange
– Single sign-on
• Key Differences
– Trust model
• OpenID assumes a completely open trust model
• Shibboleth is federated; trust only a limited set of IdPs
– Freedom to choose your IdP
• OpenID allows users to chose any IdP
• Shibboleth requires that authentication be handled by your
“home institution” (LBNL, ESnet, UC-Berkeley, etc.)
22
Future Work
• Currently finishing a blog site to provide up-todate information about our OpenID service
• Explore OpenID + OAuth as a way to enable
non-web OpenID authentication
• Explore how Shibboleth and OpenID can
interoperate
• Continue to improve the OpenID provider’s UI
23
Summary and Conclusion
• We developed OpenID infrastructure that
includes:
– An ESnet-operated OpenID identity provider
– An automated short-term certificate issuing
service that consumes OpenID
– A TWiki-based collaboration site that consumes
OpenID
• Thank you to Dhiva, Mike, and ESnet staff
24
Download