SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
 
Authentication and Authorization in Asp.Net
Authentication and Authorization in Asp.NetAuthentication and Authorization in Asp.Net
Authentication and Authorization in Asp.Net
 
OAuth 2.0 with IBM WebSphere DataPower
OAuth 2.0 with IBM WebSphere DataPowerOAuth 2.0 with IBM WebSphere DataPower
OAuth 2.0 with IBM WebSphere DataPower
 
IBM DataPower Gateway appliances feature & virtual edition comparison
IBM DataPower Gateway appliances feature & virtual edition comparisonIBM DataPower Gateway appliances feature & virtual edition comparison
IBM DataPower Gateway appliances feature & virtual edition comparison
 
Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web API
 
Express JS Middleware Tutorial
Express JS Middleware TutorialExpress JS Middleware Tutorial
Express JS Middleware Tutorial
 
Thick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash CourseThick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash Course
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Introduction to Swagger
Introduction to SwaggerIntroduction to Swagger
Introduction to Swagger
 
How to secure your data lake
How to secure your data lakeHow to secure your data lake
How to secure your data lake
 
J2ee
J2eeJ2ee
J2ee
 
API Security : Patterns and Practices
API Security : Patterns and PracticesAPI Security : Patterns and Practices
API Security : Patterns and Practices
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Introduction to React Native - Nader Dabit
Introduction to React Native - Nader DabitIntroduction to React Native - Nader Dabit
Introduction to React Native - Nader Dabit
 
DataPower Security Hardening
DataPower Security HardeningDataPower Security Hardening
DataPower Security Hardening
 
安全なID連携のハウツー
安全なID連携のハウツー安全なID連携のハウツー
安全なID連携のハウツー
 
Overview of Chef - Fundamentals Webinar Series Part 1
Overview of Chef - Fundamentals Webinar Series Part 1Overview of Chef - Fundamentals Webinar Series Part 1
Overview of Chef - Fundamentals Webinar Series Part 1
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
A Spring Data’s Guide to Persistence
A Spring Data’s Guide to PersistenceA Spring Data’s Guide to Persistence
A Spring Data’s Guide to Persistence
 
LINEのFIDO導入と将来展望
LINEのFIDO導入と将来展望LINEのFIDO導入と将来展望
LINEのFIDO導入と将来展望
 

Más de JAX London

Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeSpring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
JAX London
 
Keynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorKeynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James Governor
JAX London
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
JAX London
 
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
JAX London
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
JAX London
 

Más de JAX London (20)

Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
 
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
 
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark LittleKeynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
 
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave SyerSpring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
 
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenSpring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard Wolff
 
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeSpring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
 
Keynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorKeynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James Governor
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
 
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
 
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
 
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao KandJava Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
 
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJava Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
 
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter LedbrookJava Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
 
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJava EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
 
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
 
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJava Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
 

Último

Último (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 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 🐘
 
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
 
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...
 
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
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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...
 
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
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Spring Day | Identity Management with Spring Security | Dave Syer

  • 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