SlideShare a Scribd company logo
1 of 51
Download to read offline
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

More Related Content

What's hot

フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)
abend_cve_9999_0001
 

What's hot (20)

Websphere Application Server V8.5
Websphere Application Server V8.5Websphere Application Server V8.5
Websphere Application Server V8.5
 
Arquitetura reativa, a solução para os microserviços?
Arquitetura reativa,  a solução para os microserviços?Arquitetura reativa,  a solução para os microserviços?
Arquitetura reativa, a solução para os microserviços?
 
Scim overview
Scim overviewScim overview
Scim overview
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Spring 2.0 技術手冊第一章 - 認識 Spring
Spring 2.0 技術手冊第一章 - 認識 SpringSpring 2.0 技術手冊第一章 - 認識 Spring
Spring 2.0 技術手冊第一章 - 認識 Spring
 
WebSphere application server 8.5.5 - quick overview
WebSphere application server 8.5.5 - quick overviewWebSphere application server 8.5.5 - quick overview
WebSphere application server 8.5.5 - quick overview
 
Security Considerations for API Gateway Aggregation
Security Considerations for API Gateway AggregationSecurity Considerations for API Gateway Aggregation
Security Considerations for API Gateway Aggregation
 
LINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーLINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルー
 
Forguncy システム運用者向けガイド
Forguncy システム運用者向けガイドForguncy システム運用者向けガイド
Forguncy システム運用者向けガイド
 
フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)
 
Okta docs
Okta docsOkta docs
Okta docs
 
IBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use CasesIBM DataPower Gateway - Common Use Cases
IBM DataPower Gateway - Common Use Cases
 
Consuming Restful APIs using Swagger v2.0
Consuming Restful APIs using Swagger v2.0Consuming Restful APIs using Swagger v2.0
Consuming Restful APIs using Swagger v2.0
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Why Mulesoft ?
Why Mulesoft ?Why Mulesoft ?
Why Mulesoft ?
 
Java EE 8新機能解説 -Bean Validation 2.0編-
Java EE 8新機能解説 -Bean Validation 2.0編-Java EE 8新機能解説 -Bean Validation 2.0編-
Java EE 8新機能解説 -Bean Validation 2.0編-
 
WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)WAS vs JBoss, WebLogic, Tomcat (year 2015)
WAS vs JBoss, WebLogic, Tomcat (year 2015)
 
7 Ways To Crash Postgres
7 Ways To Crash Postgres7 Ways To Crash Postgres
7 Ways To Crash Postgres
 
Microservices Design Patterns Explained | Edureka
Microservices Design Patterns Explained | EdurekaMicroservices Design Patterns Explained | Edureka
Microservices Design Patterns Explained | Edureka
 
IBM WebSphere Application Server version to version comparison
IBM WebSphere Application Server version to version comparisonIBM WebSphere Application Server version to version comparison
IBM WebSphere Application Server version to version comparison
 

More from 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
 

More from 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
 

Recently uploaded

Recently uploaded (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
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
 
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
 
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...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
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
 
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
 

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