SlideShare a Scribd company logo
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

Introduction to SAML 2.0
Introduction to SAML 2.0Introduction to SAML 2.0
Introduction to SAML 2.0
Mika Koivisto
 
Spring Boot & WebSocket
Spring Boot & WebSocketSpring Boot & WebSocket
Spring Boot & WebSocketMing-Ying Wu
 
Getting Started With WebAuthn
Getting Started With WebAuthnGetting Started With WebAuthn
Getting Started With WebAuthn
FIDO Alliance
 
F5 Automation Toolchain
F5 Automation ToolchainF5 Automation Toolchain
F5 Automation Toolchain
MarketingArrowECS_CZ
 
AWSを用いたWebホスティング
AWSを用いたWebホスティングAWSを用いたWebホスティング
AWSを用いたWebホスティング
SORACOM, INC
 
Identity Governance: Not Just For Compliance
Identity Governance: Not Just For ComplianceIdentity Governance: Not Just For Compliance
Identity Governance: Not Just For Compliance
IBM Security
 
Deep Dive on Container Networking at Scale on Amazon EKS, Amazon ECS, & Amazo...
Deep Dive on Container Networking at Scale on Amazon EKS, Amazon ECS, & Amazo...Deep Dive on Container Networking at Scale on Amazon EKS, Amazon ECS, & Amazo...
Deep Dive on Container Networking at Scale on Amazon EKS, Amazon ECS, & Amazo...
Amazon Web Services
 
Ad(microsoftの方)のOpenId Connect対応
Ad(microsoftの方)のOpenId Connect対応Ad(microsoftの方)のOpenId Connect対応
Ad(microsoftの方)のOpenId Connect対応
Naohiro Fujie
 
Checkmarx meetup API Security - API Security top 10 - Erez Yalon
Checkmarx meetup API Security -  API Security top 10 - Erez YalonCheckmarx meetup API Security -  API Security top 10 - Erez Yalon
Checkmarx meetup API Security - API Security top 10 - Erez Yalon
Adar Weidman
 
SSO introduction
SSO introductionSSO introduction
SSO introduction
Aidy Tificate
 
Identity management and single sign on - how much flexibility
Identity management and single sign on - how much flexibilityIdentity management and single sign on - how much flexibility
Identity management and single sign on - how much flexibility
Ryan Dawson
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
Jesus Perez Franco
 
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-Amazon Web Services Japan
 
20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update
Amazon Web Services Japan
 
Implementing security requirements for banking API system using Open Source ...
 Implementing security requirements for banking API system using Open Source ... Implementing security requirements for banking API system using Open Source ...
Implementing security requirements for banking API system using Open Source ...
Yuichi Nakamura
 
Enterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOEnterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOOliver Mueller
 
AWS Tools for Windows PowerShell
AWS Tools for Windows PowerShellAWS Tools for Windows PowerShell
AWS Tools for Windows PowerShell
Amazon Web Services Japan
 
Single Sign On - The Basics
Single Sign On - The BasicsSingle Sign On - The Basics
Single Sign On - The Basics
Ishan A B Ambanwela
 
Introduction to OpenID Connect
Introduction to OpenID Connect Introduction to OpenID Connect
Introduction to OpenID Connect
Nat Sakimura
 
20190306 AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス
20190306 AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス20190306 AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス
20190306 AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス
Amazon Web Services Japan
 

What's hot (20)

Introduction to SAML 2.0
Introduction to SAML 2.0Introduction to SAML 2.0
Introduction to SAML 2.0
 
Spring Boot & WebSocket
Spring Boot & WebSocketSpring Boot & WebSocket
Spring Boot & WebSocket
 
Getting Started With WebAuthn
Getting Started With WebAuthnGetting Started With WebAuthn
Getting Started With WebAuthn
 
F5 Automation Toolchain
F5 Automation ToolchainF5 Automation Toolchain
F5 Automation Toolchain
 
AWSを用いたWebホスティング
AWSを用いたWebホスティングAWSを用いたWebホスティング
AWSを用いたWebホスティング
 
Identity Governance: Not Just For Compliance
Identity Governance: Not Just For ComplianceIdentity Governance: Not Just For Compliance
Identity Governance: Not Just For Compliance
 
Deep Dive on Container Networking at Scale on Amazon EKS, Amazon ECS, & Amazo...
Deep Dive on Container Networking at Scale on Amazon EKS, Amazon ECS, & Amazo...Deep Dive on Container Networking at Scale on Amazon EKS, Amazon ECS, & Amazo...
Deep Dive on Container Networking at Scale on Amazon EKS, Amazon ECS, & Amazo...
 
Ad(microsoftの方)のOpenId Connect対応
Ad(microsoftの方)のOpenId Connect対応Ad(microsoftの方)のOpenId Connect対応
Ad(microsoftの方)のOpenId Connect対応
 
Checkmarx meetup API Security - API Security top 10 - Erez Yalon
Checkmarx meetup API Security -  API Security top 10 - Erez YalonCheckmarx meetup API Security -  API Security top 10 - Erez Yalon
Checkmarx meetup API Security - API Security top 10 - Erez Yalon
 
SSO introduction
SSO introductionSSO introduction
SSO introduction
 
Identity management and single sign on - how much flexibility
Identity management and single sign on - how much flexibilityIdentity management and single sign on - how much flexibility
Identity management and single sign on - how much flexibility
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
 
20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update
 
Implementing security requirements for banking API system using Open Source ...
 Implementing security requirements for banking API system using Open Source ... Implementing security requirements for banking API system using Open Source ...
Implementing security requirements for banking API system using Open Source ...
 
Enterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOEnterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSO
 
AWS Tools for Windows PowerShell
AWS Tools for Windows PowerShellAWS Tools for Windows PowerShell
AWS Tools for Windows PowerShell
 
Single Sign On - The Basics
Single Sign On - The BasicsSingle Sign On - The Basics
Single Sign On - The Basics
 
Introduction to OpenID Connect
Introduction to OpenID Connect Introduction to OpenID Connect
Introduction to OpenID Connect
 
20190306 AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス
20190306 AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス20190306 AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス
20190306 AWS Black Belt Online Seminar Amazon EC2 スポットインスタンス
 

More from JAX London

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...
JAX London
 
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...
JAX London
 
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
JAX London
 
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...
JAX London
 
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
JAX London
 
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
JAX London
 
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
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 GierkeJAX 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 GovernorJAX 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 JiangJAX London
 
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...
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 | 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
JAX London
 
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
JAX London
 
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
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
 
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
JAX London
 
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
JAX London
 
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...
JAX London
 
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
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

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 

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