SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
Identity Management with Spring Security




         Dave Syer, VMware, SpringOne 2011
Overview

●
    What is Identity Management?
●
    Is it anything to do with Security?
●
    Some existing and emerging standards
●
    Relevant features of Spring Security and other Spring projects
●
    Common use cases
●
    Demo of prototype IDM system




                         COPYRIGHT VMWARE, INC, 2011
Agenda


●   Core domain:
     ● Authentication, identity, trust, delegation, claim, authorization
●   SSO
●   Identity Management
●   Standards:
     ● SAML
     ● OpenID
     ● OAuth, OAuth2
     ● OpenID Connect
     ● SCIM
     ● JWT
●   Spring Security and other projects
●   Use cases (Google, Facebook, CloudFoundry) and demos
●   IDM as a Service
                             COPYRIGHT VMWARE, INC, 2011
Demo Code




 $ git clone git://gist.github.com/1316904.git




                 COPYRIGHT VMWARE, INC, 2011
Authentication


●   You say you are Fred Bloggs? Can you prove it?
●   Human-human interactions
     ● Official document (passport, driving licence, etc.)
     ● We actually call it “ID”
     ● Letter of introduction
     ● Word of mouth, friend of a friend
●   Machine-human interactions
     ● Something you know, hopefully unguessable, maybe random, e.g.
       username/password
     ● Something you have, e.g. one Time Password (OTP) from RSA
       hard/soft token
     ● Multifactor authentication
●   Machine-machine interactions



                         COPYRIGHT VMWARE, INC, 2011
Typical System Architecture

                                                 “I'm Fred,
                                                 show me my
                                                 photos”
                                                              User
                   APP




         DB      User details
                 store




                         COPYRIGHT VMWARE, INC, 2011
Fred Accesses his Photos




                     COPYRIGHT VMWARE, INC, 2011
Two Apps, No Shared Authentication

                                              “I'm Fred,
                                              show me my
                                              photos”
                                                                  User
                 APP1


                                                              “I'm Fred,
                                                              can I buy a
                                                              book?”



                                                           APP2



         DB     User details
                store

                                                    DB


                      COPYRIGHT VMWARE, INC, 2011
Two Apps, Shared User Details

                                               “I'm Fred,
                                               show me my
                                               photos”
                                                                   User
                  APP1


                                                               “I'm Fred,
                                                               can I buy a
                                                               book?”



                                                            APP2



         DB

               User details
               store

                       COPYRIGHT VMWARE, INC, 2011
Two Apps, Single Sign On

                                               “I'm Fred,
                                               show me my
                                               photos”
                                                                   User
                  APP1


                                                               “I'm Fred,
                                                               can I buy a
                                                               book?”



                                                            APP2
                                      SSO

         DB

               User details
               store

                       COPYRIGHT VMWARE, INC, 2011
All Apps are
Single Sign On: Example Flow                           the same




                                                   ●   Explicit authentication
                                                       required on first visit

                                                   ●   Avoidable
                                                       subsequently if App
                                                       can store token – but
                                                       then with multiple
                                                       apps you have
                                                       distributed state



                                                        This is
                                                        unavoidable
                     COPYRIGHT VMWARE, INC, 2011
Two Apps, Single Sign On with Separate Authentication

                                                “I'm Fred,
                                                show me my
                                                photos”
                                                                    User
                   APP1


                                                                “I'm Fred,
                                                                can I buy a
                                                                book?”
         AUTH


                                                             APP2
                                       SSO

         DB

                User details
                store

                        COPYRIGHT VMWARE, INC, 2011
SSO With Spring Security


●   Good support for CAS
●   Many custom implementations for commercial products like
    SiteMinder
●   Field is fragmented
●   OpenID...




                        COPYRIGHT VMWARE, INC, 2011
Trust


●   You say you are Fred Bloggs? Can you prove it?
●   Oh, I remember, Martha said you're alright. Come in...
●   I trust Martha, USDOT, UKPA, etc, to verify Fred's identity
●   Why?
●   Because I know them, and they say they know Fred.




                          COPYRIGHT VMWARE, INC, 2011
Consumer Trusts Provider

                                                     “I'm Fred,
                                                     show me my
                                                     photos”
                                                                      User
   Consumer,           APP
   Relying Party




                                             IDP           Provider

           DB

                   User details
                   store

                             COPYRIGHT VMWARE, INC, 2011
Simplified User-App-IDP Interaction




                      COPYRIGHT VMWARE, INC, 2011
So What did we Gain with an Identity Provider?


●   App no longer has to do authentication or keep record of secure
    information about users
●   User only has to type secrets into a known trusted site (e.g.
    Google)

●   Separation of concerns
●   Abstraction always comes at a cost
●   Increased complexity – more to understand, more to maintain,
    more to go wrong
●   Complexity and Security are uneasy bedfellows
●   Hence there are standards that cover this interaction




                         COPYRIGHT VMWARE, INC, 2011
Complexity: Schematic Actual Conversation




                     COPYRIGHT VMWARE, INC, 2011
Complexity: HTTP Protocol Actual Conversation




                     COPYRIGHT VMWARE, INC, 2011
Compare: Native Authentication




                     COPYRIGHT VMWARE, INC, 2011
OpenID

                                                    “I'm Fred,
                                                    show me my
                                                    photos”
                                                                     User
  Relying Party       APP




                                         OpenID           Provider

          DB

                  User details
                  store

                            COPYRIGHT VMWARE, INC, 2011
OpenID


●   Protocol for attribute exchange
●   Sits on top of HTTP(S)
●   Form plus JSONish on back channel (attribute fetch)
●   Form data and redirects on front channel
●   Does not specify authentication (up to the Provider)
●   Does not require pre-registration of Relying Parties (Apps)
●   Implemented in various languages, e.g. Java->OpenID4J (Google
    code)
●   Support in Spring Security for Relying Party




                        COPYRIGHT VMWARE, INC, 2011
Spring Security OpenID RP



<http xmlns="http://www.springframework.org/schema/security">
    ...

   <openid-login login-page="/openid"
         user-service-ref="registeringUserService"
         authentication-failure-url="/login_error.jsp">
       <attribute-exchange identifier-match=".*">
           <openid-attribute name="email"
              Type="http://schema.openid.net/contact/email" required="true" />
           <openid-attribute name="fullname"
              type="http://schema.openid.net/namePerson" required="true" />
       </attribute-exchange>
   </openid-login>

</http>




                            COPYRIGHT VMWARE, INC, 2011
SSO with OpenID

                                                   “I'm Fred,
                                                   show me my
                                                   photos”
                                                                           User
   Relying Party      APP1


                                                                       “I'm Fred,
                                                                       can I buy a
                                                                       book?”



                                                                    APP2
                                        OpenID

           DB
                                                         Provider
                   User details
                   store

                           COPYRIGHT VMWARE, INC, 2011
SSO with OpenID




                                                No user input
                                                required here if
                                                IDP is stateful




                  COPYRIGHT VMWARE, INC, 2011
Delegation and Client Authorization


●   So Fred told you to come and pick up his order?
●   You say you're Martha? Show me some ID.
●   And what about some documentation about the order?




           Resource Owner

                                       Client
                                       (e.g. a service
                                       provider)          Scope of
                                                          responsibility




                            COPYRIGHT VMWARE, INC, 2011
Delegation and Client Authorization


●   An App needs to access Fred's resources on his behalf
●   Resources live in a protected Resource Server (API)
●   Fred is the Resource Owner: he can read and write his resources
    if he logs into the API himself
●   But App is the Client of the API service not Fred, and Fred
    doesn't want to grant App write access
●   Resource Server can grant App access to a restricted Scope of
    activity
●   Fred authorizes the App to read his Resources
●   App gets an Access Token that enables it to act on behalf of Fred
●   Where does it get the token from? An Authorization Server




                          COPYRIGHT VMWARE, INC, 2011
Delegation

                                                     “I'm Fred,
                                                     show me my
                                                     photos”               Resource
       Client          APP                                                 Owner


         Token


        API           Resource
                      Server


                Token                                      Authorization
                                           AUTH
                Services                                   Server




                             COPYRIGHT VMWARE, INC, 2011
Example Token Services using Shared Storage

                                                  “I'm Fred,
                                                  show me my
                                                  photos”               Resource
       Client       APP                                                 Owner


         Token


        API        Resource
                   Server


                                        AUTH            Authorization
                                                        Server
         DB

                 Token Store


                          COPYRIGHT VMWARE, INC, 2011
Delegation Standards

●   SAML 1.0, 2.0
     ● XML
     ● back channel                                       Need key
                                                          exchange
     ● cryptography
     ● Spring Security SAML, Service Provider = Resource Server only
●   OAuth 1.0a
     ● plain text
     ● back channel
                                                     Nonce and request token
     ● cryptography
     ● Spring Security OAuth (consumer and provider)
●   OAuth 2
     ● JSON (plus optional custom formats)
     ● no back channel in spec (but need token services in practice)
     ● clear text (need SSL), plus extensions
     ● Spring Security OAuth (consumer and provider)

                            COPYRIGHT VMWARE, INC, 2011
OAuth2


●   Client /app

      GET /api/photos
      Authorization: Bearer FDSHGK78JH356G

●   Resource Server /api
       authenticated:
      200 OK
      ...


       unauthenticated:

      401 Unauthorized
      WWW-Authenticate: Bearer realm=”/auth”




                           COPYRIGHT VMWARE, INC, 2011
OAuth2 Acquiring an Access Token


●   Grant Types
     ● Password
     ● Authorization Code
     ● Refresh Token
     ● Implicit
     ● Client Credentials
●   Others allowed as extensions, e.g. SAML assertion




                         COPYRIGHT VMWARE, INC, 2011
OAuth2 Grant Type: Password


●   Resource Server /api

      GET /auth/token?response_type=password&username=......&...
      Authorization: Basic asdsdfggghf=

●   Authorization Server /auth                           Client
                                                         credentials
     ● Token Endpoint

      200 OK
      {
        “access_token” : “JAHDGFJH78IOUY”,
        “token_type” : “bearer”,
        “expires_in” : “3600”
      }




                           COPYRIGHT VMWARE, INC, 2011
OAuth2: Grant Type Password




                    COPYRIGHT VMWARE, INC, 2011
OAuth2 Grant Type: Authorization Code


●    Client /app

    GET /auth/authorize?response_type=authorization_code&...
    Authorization: Basic asdsdfggghf=

●    Authorization Server /auth
      ● Authorization Endpoint

        302 Found
        Location: /app/photos?code=dfjhg




                             COPYRIGHT VMWARE, INC, 2011
OAuth2 Grant Type: Authorization Code


●   Resource Server /api

      GET /auth/token?grant_type=authorization_code&code=......&...
      Authorization: Basic asdsdfggghf=

●   Authorization Server /auth
     ● Token Endpoint

      200 OK
      {
        “access_token” : “JAHDGFJH78IOUY”,
        “token_type” : “bearer”,
        “expires_in” : “3600”
      }




                           COPYRIGHT VMWARE, INC, 2011
OAuth2 Grant Type: Authorization Code




                                                   ????




                     COPYRIGHT VMWARE, INC, 2011
OAuth2 Grant Type: Authorization Code, Explicit Authorization

         The spec doesn't say how this happens, just that it does,
         e.g:
       ????




                       COPYRIGHT VMWARE, INC, 2011
OAuth2: More Detail and Options

●   Grant type
     ● Password – native apps, fixed authentication
     ● Authorization Code – webapps with browser redirects
     ● Refresh Token – optional for tokens issued with Auth Code
     ● Implicit – script clients in webapps, native apps
     ● Client Credentials – service peers
     ● Other, e.g. SAML
●   Token type
     ● Bearer
     ● Other, e.g. MAC
●   Scope
     ● Arbitrary string. Signifies something to Resource Server about which
       resources are available. C.f. “audience” in SAML.
●   State



                             COPYRIGHT VMWARE, INC, 2011
Spring Security OAuth: Resource Server /api




    <sec:http ...>
        ...
        <sec:custom-filter ref="oauth2ServiceFilter"
            before="EXCEPTION_TRANSLATION_FILTER" />
    </sec:http>

    <oauth:provider id="oauth2ServiceFilter" token-services-ref="tokenServices">
        <oauth:resource-server resource-id="api" />
    </oauth:provider>




                            COPYRIGHT VMWARE, INC, 2011
Spring Security OAuth: Authorization Server /auth



<sec:http>
  ...
    <sec:custom-filter ref="oauth2ServiceFilter" after="EXCEPTION_TRANSLATION_FILTER" />
</sec:http>

<oauth:provider id="oauth2ServiceFilter" token-services-ref="tokenServices">
    <oauth:authorization-server client-details-service-ref="clientDetails">
        <oauth:authorization-code />
        <oauth:implicit />
        <oauth:refresh-token />
        <oauth:client-credentials />
        <oauth:password />
    </oauth:authorization-server>
</oauth:provider>

<oauth:client-details-service id="clientDetails">
    <oauth:client clientId="app"
        authorizedGrantTypes="password,authorization_code,refresh_token"
        scope="read_photos"
        authorities="ROLE_GUEST" />
</oauth:client-details-service>




                                COPYRIGHT VMWARE, INC, 2011
Spring Security OAuth: Client /app



 <sec:http>
   ...
     <sec:custom-filter ref="oauth2ClientFilter"     after="EXCEPTION_TRANSLATION_FILTER"/>
 </sec:http>

 <oauth:client id="oauth2ClientFilter" token-services-ref="oauth2TokenServices" />

 <bean class="apiRestTemplate" class="org...oauth2.client.OAuth2RestTemplate">
     <constructor-arg ref="api" />
 </bean>

 <oauth:resource id="api" type="authorization_code"
     clientId="app" accessTokenUri="${accessTokenUri}"
     userAuthorizationUri="${userAuthorizationUri}" scope="read_photos" />




   N.B. Spring Social has client support as well (similar approach,
   convergence will come later)


                                COPYRIGHT VMWARE, INC, 2011
OpenID Connect

●   Similar to OpenID in the role that it plays, but not in any other way
    related
●   Uses OAuth2 as a protocol for attribute exchange
●   Google, Salesforce, etc. behind spec
●   OAuth2 endpoints:
     ●  /authorize
     ●  /token
●   OpenID endpoints are OAuth2 protected resources:
     ●  /userinfo
     ●  /check_id
●   Clients obtain access token with scope=openid
●   OAuth /token endpoint includes id token in response as well as
    access token
●   Responses in JSON or JWT (=encrypted JSON)
●   Not implemented in Spring project (yet), SECOAUTH or SEC

                            COPYRIGHT VMWARE, INC, 2011
OpenID Connect: Token Acquisition


●   Resource Server /api

      GET /auth/token?grant_type=authorization_code&code=......&...
      Authorization: Basic asdsdfggghf=

●   Authorization Server /auth
     ● Token Endpoint

      200 OK
      {
        “access_token” : “JAHDGFJH78IOUY”,
        “token_type” : “bearer”,
        “expires_in” : “3600”,
        “scope” : “openid”,
        “id_token” : “LKJADSFKHJG8723E”
      }



                           COPYRIGHT VMWARE, INC, 2011
OpenID Connect: User Info


●   Resource Server /api

      GET /auth/userinfo
      Authorization: Bearer JAHDGFJH78IOUY

●   Authorization Server /auth
     ● User Info Endpoint

      200 OK
      {
        “user_id” : “dsyer”,
        “name” : “Dave Syer”,
        “email” : “dsyer@vmware.com”,
        ...
      }



                           COPYRIGHT VMWARE, INC, 2011
SCIM


●   Simple Cloud Identity Management
●   Plain test / JSON standard for provisioning identity systems
●   Standard endpoints
     ●  /Users – query user accounts
     ●  /User – CRUD operations on users
     ●  /Groups – CRUD operations on groups
●   An OAuth2 authorization service might implement SCIM
●   Not implemented (yet) in Spring




                          COPYRIGHT VMWARE, INC, 2011
Spring Security: Project Organization

         Luke Taylor (VMW),
                                                              Core
         Robert Winch         Spring Security
                                                                          Web
                                           ● 3.1.0 just released
                                           ● Stable, mature

 Ryan Heaton,                                                       LDAP      OpenID       ...
 Dave Syer (VMW),


      Spring Security OAuth
                                                         Spring Extensions: Security

                                                                    Vladimir Schaefer,
                                Keith Donald (VMW),                 Mike Wiesner (VMW)
   OAuth1a          OAuth2      Craig Walls (VMW)
                                                                 SAML        Kerberos
                                       Spring Social
  ● Oauth2 spec not yet final
  ● External lead
                                                                ● 1.0.0 not yet released
                                   ● 1.0.0 just released        ● Partly external, low-activity
  ● 1.0.0.M5 release in pipeline
                                   ● Consumer for well-

                                     known providers


                                COPYRIGHT VMWARE, INC, 2011
CloudFoundry IDM

                                                     “I'm Fred,
                                                     show me my
                                                     apps”                   Resource
        Client      Admin Console                                            Owner


            Token


  CloudController       Resource
                        Server

                                                           Authorization
 Access          Token                                     Server:
                                            UAA
 Decision        Services
                                                           OAuth2,
                                                           OpenID Connect,
   Collab Spaces                                           SCIM



                             COPYRIGHT VMWARE, INC, 2011
CloudFoundry IDM

                                                     “I'm Fred,
                                                     show me my
                                                     apps”                   Resource
        Client         VMC                                                   Owner


            Token


  CloudController      Resource
                       Server

                                                           Authorization
 Access          Token                                     Server:
                                            UAA
 Decision        Services
                                                           OAuth2,
                                                           OpenID Connect,
   Collab Spaces                                           SCIM



                             COPYRIGHT VMWARE, INC, 2011
Links


●   SECOAUTH:
    https://github.com/SpringSource/spring-security-oauth
●   OpenId4J: http://code.google.com/p/openid4java/
●   OpenID Connect: http://openid.net/developers/specs/
●   OAuth2: http://tools.ietf.org/html/draft-ietf-oauth-v2
●   SCIM: http://www.simplecloud.info
●   SES (SAML and Kerberos):
    http://static.springsource.org/spring-security/site/extensions.html
●   Demos: http://gist.github.com/1316904




                          COPYRIGHT VMWARE, INC, 2011
Overview

●
    What is Identity Management?
●
    Is it anything to do with Security?
●
    Some existing and emerging standards
●
    Relevant features of Spring Security and other Spring projects
●
    Common use cases
●
    Demo of prototype IDM system




                         COPYRIGHT VMWARE, INC, 2011

Weitere ähnliche Inhalte

Was ist angesagt?

Keynote Systems - Mobile Solutions Overview Presentation
Keynote Systems - Mobile Solutions Overview PresentationKeynote Systems - Mobile Solutions Overview Presentation
Keynote Systems - Mobile Solutions Overview Presentation
vprathap
 
Saas webinar-dec6-01
Saas webinar-dec6-01Saas webinar-dec6-01
Saas webinar-dec6-01
Paul Madsen
 
Extending softwareintomobile 11 28-2012
Extending softwareintomobile 11 28-2012Extending softwareintomobile 11 28-2012
Extending softwareintomobile 11 28-2012
CorSource
 

Was ist angesagt? (9)

Mobile browser testing v1.0
Mobile browser testing v1.0Mobile browser testing v1.0
Mobile browser testing v1.0
 
Kentico Technical Learning: Exploring jQuery Mobile
Kentico Technical Learning: Exploring jQuery MobileKentico Technical Learning: Exploring jQuery Mobile
Kentico Technical Learning: Exploring jQuery Mobile
 
Integration of OSGi and User Friendly UI Application - Akira Moriguchi
Integration of OSGi and User Friendly UI Application - Akira MoriguchiIntegration of OSGi and User Friendly UI Application - Akira Moriguchi
Integration of OSGi and User Friendly UI Application - Akira Moriguchi
 
Keynote Systems - Mobile Solutions Overview Presentation
Keynote Systems - Mobile Solutions Overview PresentationKeynote Systems - Mobile Solutions Overview Presentation
Keynote Systems - Mobile Solutions Overview Presentation
 
Designing Mobile Applications
Designing Mobile ApplicationsDesigning Mobile Applications
Designing Mobile Applications
 
Smartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone BudgetSmartphone Behavior On A Featurephone Budget
Smartphone Behavior On A Featurephone Budget
 
Saas webinar-dec6-01
Saas webinar-dec6-01Saas webinar-dec6-01
Saas webinar-dec6-01
 
Extending softwareintomobile 11 28-2012
Extending softwareintomobile 11 28-2012Extending softwareintomobile 11 28-2012
Extending softwareintomobile 11 28-2012
 
Protecting Online Identities - MIX09
Protecting Online Identities - MIX09Protecting Online Identities - MIX09
Protecting Online Identities - MIX09
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

dsyer s2gx2011 idm

  • 1. Identity Management with Spring Security Dave Syer, VMware, SpringOne 2011
  • 2. Overview ● What is Identity Management? ● Is it anything to do with Security? ● Some existing and emerging standards ● Relevant features of Spring Security and other Spring projects ● Common use cases ● Demo of prototype IDM system COPYRIGHT VMWARE, INC, 2011
  • 3. Agenda ● Core domain: ● Authentication, identity, trust, delegation, claim, authorization ● SSO ● Identity Management ● Standards: ● SAML ● OpenID ● OAuth, OAuth2 ● OpenID Connect ● SCIM ● JWT ● Spring Security and other projects ● Use cases (Google, Facebook, CloudFoundry) and demos ● IDM as a Service COPYRIGHT VMWARE, INC, 2011
  • 4. Demo Code $ git clone git://gist.github.com/1316904.git COPYRIGHT VMWARE, INC, 2011
  • 5. Authentication ● You say you are Fred Bloggs? Can you prove it? ● Human-human interactions ● Official document (passport, driving licence, etc.) ● We actually call it “ID” ● Letter of introduction ● Word of mouth, friend of a friend ● Machine-human interactions ● Something you know, hopefully unguessable, maybe random, e.g. username/password ● Something you have, e.g. one Time Password (OTP) from RSA hard/soft token ● Multifactor authentication ● Machine-machine interactions COPYRIGHT VMWARE, INC, 2011
  • 6. Typical System Architecture “I'm Fred, show me my photos” User APP DB User details store COPYRIGHT VMWARE, INC, 2011
  • 7. Fred Accesses his Photos COPYRIGHT VMWARE, INC, 2011
  • 8. Two Apps, No Shared Authentication “I'm Fred, show me my photos” User APP1 “I'm Fred, can I buy a book?” APP2 DB User details store DB COPYRIGHT VMWARE, INC, 2011
  • 9. Two Apps, Shared User Details “I'm Fred, show me my photos” User APP1 “I'm Fred, can I buy a book?” APP2 DB User details store COPYRIGHT VMWARE, INC, 2011
  • 10. Two Apps, Single Sign On “I'm Fred, show me my photos” User APP1 “I'm Fred, can I buy a book?” APP2 SSO DB User details store COPYRIGHT VMWARE, INC, 2011
  • 11. All Apps are Single Sign On: Example Flow the same ● Explicit authentication required on first visit ● Avoidable subsequently if App can store token – but then with multiple apps you have distributed state This is unavoidable COPYRIGHT VMWARE, INC, 2011
  • 12. Two Apps, Single Sign On with Separate Authentication “I'm Fred, show me my photos” User APP1 “I'm Fred, can I buy a book?” AUTH APP2 SSO DB User details store COPYRIGHT VMWARE, INC, 2011
  • 13. SSO With Spring Security ● Good support for CAS ● Many custom implementations for commercial products like SiteMinder ● Field is fragmented ● OpenID... COPYRIGHT VMWARE, INC, 2011
  • 14. Trust ● You say you are Fred Bloggs? Can you prove it? ● Oh, I remember, Martha said you're alright. Come in... ● I trust Martha, USDOT, UKPA, etc, to verify Fred's identity ● Why? ● Because I know them, and they say they know Fred. COPYRIGHT VMWARE, INC, 2011
  • 15. Consumer Trusts Provider “I'm Fred, show me my photos” User Consumer, APP Relying Party IDP Provider DB User details store COPYRIGHT VMWARE, INC, 2011
  • 16. Simplified User-App-IDP Interaction COPYRIGHT VMWARE, INC, 2011
  • 17. So What did we Gain with an Identity Provider? ● App no longer has to do authentication or keep record of secure information about users ● User only has to type secrets into a known trusted site (e.g. Google) ● Separation of concerns ● Abstraction always comes at a cost ● Increased complexity – more to understand, more to maintain, more to go wrong ● Complexity and Security are uneasy bedfellows ● Hence there are standards that cover this interaction COPYRIGHT VMWARE, INC, 2011
  • 18. Complexity: Schematic Actual Conversation COPYRIGHT VMWARE, INC, 2011
  • 19. Complexity: HTTP Protocol Actual Conversation COPYRIGHT VMWARE, INC, 2011
  • 20. Compare: Native Authentication COPYRIGHT VMWARE, INC, 2011
  • 21. OpenID “I'm Fred, show me my photos” User Relying Party APP OpenID Provider DB User details store COPYRIGHT VMWARE, INC, 2011
  • 22. OpenID ● Protocol for attribute exchange ● Sits on top of HTTP(S) ● Form plus JSONish on back channel (attribute fetch) ● Form data and redirects on front channel ● Does not specify authentication (up to the Provider) ● Does not require pre-registration of Relying Parties (Apps) ● Implemented in various languages, e.g. Java->OpenID4J (Google code) ● Support in Spring Security for Relying Party COPYRIGHT VMWARE, INC, 2011
  • 23. Spring Security OpenID RP <http xmlns="http://www.springframework.org/schema/security"> ... <openid-login login-page="/openid" user-service-ref="registeringUserService" authentication-failure-url="/login_error.jsp"> <attribute-exchange identifier-match=".*"> <openid-attribute name="email" Type="http://schema.openid.net/contact/email" required="true" /> <openid-attribute name="fullname" type="http://schema.openid.net/namePerson" required="true" /> </attribute-exchange> </openid-login> </http> COPYRIGHT VMWARE, INC, 2011
  • 24. SSO with OpenID “I'm Fred, show me my photos” User Relying Party APP1 “I'm Fred, can I buy a book?” APP2 OpenID DB Provider User details store COPYRIGHT VMWARE, INC, 2011
  • 25. SSO with OpenID No user input required here if IDP is stateful COPYRIGHT VMWARE, INC, 2011
  • 26. Delegation and Client Authorization ● So Fred told you to come and pick up his order? ● You say you're Martha? Show me some ID. ● And what about some documentation about the order? Resource Owner Client (e.g. a service provider) Scope of responsibility COPYRIGHT VMWARE, INC, 2011
  • 27. Delegation and Client Authorization ● An App needs to access Fred's resources on his behalf ● Resources live in a protected Resource Server (API) ● Fred is the Resource Owner: he can read and write his resources if he logs into the API himself ● But App is the Client of the API service not Fred, and Fred doesn't want to grant App write access ● Resource Server can grant App access to a restricted Scope of activity ● Fred authorizes the App to read his Resources ● App gets an Access Token that enables it to act on behalf of Fred ● Where does it get the token from? An Authorization Server COPYRIGHT VMWARE, INC, 2011
  • 28. Delegation “I'm Fred, show me my photos” Resource Client APP Owner Token API Resource Server Token Authorization AUTH Services Server COPYRIGHT VMWARE, INC, 2011
  • 29. Example Token Services using Shared Storage “I'm Fred, show me my photos” Resource Client APP Owner Token API Resource Server AUTH Authorization Server DB Token Store COPYRIGHT VMWARE, INC, 2011
  • 30. Delegation Standards ● SAML 1.0, 2.0 ● XML ● back channel Need key exchange ● cryptography ● Spring Security SAML, Service Provider = Resource Server only ● OAuth 1.0a ● plain text ● back channel Nonce and request token ● cryptography ● Spring Security OAuth (consumer and provider) ● OAuth 2 ● JSON (plus optional custom formats) ● no back channel in spec (but need token services in practice) ● clear text (need SSL), plus extensions ● Spring Security OAuth (consumer and provider) COPYRIGHT VMWARE, INC, 2011
  • 31. OAuth2 ● Client /app GET /api/photos Authorization: Bearer FDSHGK78JH356G ● Resource Server /api authenticated: 200 OK ... unauthenticated: 401 Unauthorized WWW-Authenticate: Bearer realm=”/auth” COPYRIGHT VMWARE, INC, 2011
  • 32. OAuth2 Acquiring an Access Token ● Grant Types ● Password ● Authorization Code ● Refresh Token ● Implicit ● Client Credentials ● Others allowed as extensions, e.g. SAML assertion COPYRIGHT VMWARE, INC, 2011
  • 33. OAuth2 Grant Type: Password ● Resource Server /api GET /auth/token?response_type=password&username=......&... Authorization: Basic asdsdfggghf= ● Authorization Server /auth Client credentials ● Token Endpoint 200 OK { “access_token” : “JAHDGFJH78IOUY”, “token_type” : “bearer”, “expires_in” : “3600” } COPYRIGHT VMWARE, INC, 2011
  • 34. OAuth2: Grant Type Password COPYRIGHT VMWARE, INC, 2011
  • 35. OAuth2 Grant Type: Authorization Code ● Client /app GET /auth/authorize?response_type=authorization_code&... Authorization: Basic asdsdfggghf= ● Authorization Server /auth ● Authorization Endpoint 302 Found Location: /app/photos?code=dfjhg COPYRIGHT VMWARE, INC, 2011
  • 36. OAuth2 Grant Type: Authorization Code ● Resource Server /api GET /auth/token?grant_type=authorization_code&code=......&... Authorization: Basic asdsdfggghf= ● Authorization Server /auth ● Token Endpoint 200 OK { “access_token” : “JAHDGFJH78IOUY”, “token_type” : “bearer”, “expires_in” : “3600” } COPYRIGHT VMWARE, INC, 2011
  • 37. OAuth2 Grant Type: Authorization Code ???? COPYRIGHT VMWARE, INC, 2011
  • 38. OAuth2 Grant Type: Authorization Code, Explicit Authorization The spec doesn't say how this happens, just that it does, e.g: ???? COPYRIGHT VMWARE, INC, 2011
  • 39. OAuth2: More Detail and Options ● Grant type ● Password – native apps, fixed authentication ● Authorization Code – webapps with browser redirects ● Refresh Token – optional for tokens issued with Auth Code ● Implicit – script clients in webapps, native apps ● Client Credentials – service peers ● Other, e.g. SAML ● Token type ● Bearer ● Other, e.g. MAC ● Scope ● Arbitrary string. Signifies something to Resource Server about which resources are available. C.f. “audience” in SAML. ● State COPYRIGHT VMWARE, INC, 2011
  • 40. Spring Security OAuth: Resource Server /api <sec:http ...> ... <sec:custom-filter ref="oauth2ServiceFilter" before="EXCEPTION_TRANSLATION_FILTER" /> </sec:http> <oauth:provider id="oauth2ServiceFilter" token-services-ref="tokenServices"> <oauth:resource-server resource-id="api" /> </oauth:provider> COPYRIGHT VMWARE, INC, 2011
  • 41. Spring Security OAuth: Authorization Server /auth <sec:http> ... <sec:custom-filter ref="oauth2ServiceFilter" after="EXCEPTION_TRANSLATION_FILTER" /> </sec:http> <oauth:provider id="oauth2ServiceFilter" token-services-ref="tokenServices"> <oauth:authorization-server client-details-service-ref="clientDetails"> <oauth:authorization-code /> <oauth:implicit /> <oauth:refresh-token /> <oauth:client-credentials /> <oauth:password /> </oauth:authorization-server> </oauth:provider> <oauth:client-details-service id="clientDetails"> <oauth:client clientId="app" authorizedGrantTypes="password,authorization_code,refresh_token" scope="read_photos" authorities="ROLE_GUEST" /> </oauth:client-details-service> COPYRIGHT VMWARE, INC, 2011
  • 42. Spring Security OAuth: Client /app <sec:http> ... <sec:custom-filter ref="oauth2ClientFilter" after="EXCEPTION_TRANSLATION_FILTER"/> </sec:http> <oauth:client id="oauth2ClientFilter" token-services-ref="oauth2TokenServices" /> <bean class="apiRestTemplate" class="org...oauth2.client.OAuth2RestTemplate"> <constructor-arg ref="api" /> </bean> <oauth:resource id="api" type="authorization_code" clientId="app" accessTokenUri="${accessTokenUri}" userAuthorizationUri="${userAuthorizationUri}" scope="read_photos" /> N.B. Spring Social has client support as well (similar approach, convergence will come later) COPYRIGHT VMWARE, INC, 2011
  • 43. OpenID Connect ● Similar to OpenID in the role that it plays, but not in any other way related ● Uses OAuth2 as a protocol for attribute exchange ● Google, Salesforce, etc. behind spec ● OAuth2 endpoints: ● /authorize ● /token ● OpenID endpoints are OAuth2 protected resources: ● /userinfo ● /check_id ● Clients obtain access token with scope=openid ● OAuth /token endpoint includes id token in response as well as access token ● Responses in JSON or JWT (=encrypted JSON) ● Not implemented in Spring project (yet), SECOAUTH or SEC COPYRIGHT VMWARE, INC, 2011
  • 44. OpenID Connect: Token Acquisition ● Resource Server /api GET /auth/token?grant_type=authorization_code&code=......&... Authorization: Basic asdsdfggghf= ● Authorization Server /auth ● Token Endpoint 200 OK { “access_token” : “JAHDGFJH78IOUY”, “token_type” : “bearer”, “expires_in” : “3600”, “scope” : “openid”, “id_token” : “LKJADSFKHJG8723E” } COPYRIGHT VMWARE, INC, 2011
  • 45. OpenID Connect: User Info ● Resource Server /api GET /auth/userinfo Authorization: Bearer JAHDGFJH78IOUY ● Authorization Server /auth ● User Info Endpoint 200 OK { “user_id” : “dsyer”, “name” : “Dave Syer”, “email” : “dsyer@vmware.com”, ... } COPYRIGHT VMWARE, INC, 2011
  • 46. SCIM ● Simple Cloud Identity Management ● Plain test / JSON standard for provisioning identity systems ● Standard endpoints ● /Users – query user accounts ● /User – CRUD operations on users ● /Groups – CRUD operations on groups ● An OAuth2 authorization service might implement SCIM ● Not implemented (yet) in Spring COPYRIGHT VMWARE, INC, 2011
  • 47. Spring Security: Project Organization Luke Taylor (VMW), Core Robert Winch Spring Security Web ● 3.1.0 just released ● Stable, mature Ryan Heaton, LDAP OpenID ... Dave Syer (VMW), Spring Security OAuth Spring Extensions: Security Vladimir Schaefer, Keith Donald (VMW), Mike Wiesner (VMW) OAuth1a OAuth2 Craig Walls (VMW) SAML Kerberos Spring Social ● Oauth2 spec not yet final ● External lead ● 1.0.0 not yet released ● 1.0.0 just released ● Partly external, low-activity ● 1.0.0.M5 release in pipeline ● Consumer for well- known providers COPYRIGHT VMWARE, INC, 2011
  • 48. CloudFoundry IDM “I'm Fred, show me my apps” Resource Client Admin Console Owner Token CloudController Resource Server Authorization Access Token Server: UAA Decision Services OAuth2, OpenID Connect, Collab Spaces SCIM COPYRIGHT VMWARE, INC, 2011
  • 49. CloudFoundry IDM “I'm Fred, show me my apps” Resource Client VMC Owner Token CloudController Resource Server Authorization Access Token Server: UAA Decision Services OAuth2, OpenID Connect, Collab Spaces SCIM COPYRIGHT VMWARE, INC, 2011
  • 50. Links ● SECOAUTH: https://github.com/SpringSource/spring-security-oauth ● OpenId4J: http://code.google.com/p/openid4java/ ● OpenID Connect: http://openid.net/developers/specs/ ● OAuth2: http://tools.ietf.org/html/draft-ietf-oauth-v2 ● SCIM: http://www.simplecloud.info ● SES (SAML and Kerberos): http://static.springsource.org/spring-security/site/extensions.html ● Demos: http://gist.github.com/1316904 COPYRIGHT VMWARE, INC, 2011
  • 51. Overview ● What is Identity Management? ● Is it anything to do with Security? ● Some existing and emerging standards ● Relevant features of Spring Security and other Spring projects ● Common use cases ● Demo of prototype IDM system COPYRIGHT VMWARE, INC, 2011