OAuth 2.0

Authorization Framework



Philipp Marien | 02.08.2016

Contents

  • Introduction
  • Roles
  • Tokens
  • Endpoints
  • Flows
  • Scopes
  • Extensions

Introduction

  • Authorisation-Framework
  • Standard: RFC 6749
  • No Authentication!
  • Application to Application
  • Obtain access to HTTP service
  • Central user and rights management

Roles

  • Resource
  • Resource Owner
  • Resource Server
  • Client
  • Authorization Server
Roles Created with Sketch. Resource Server Authorization Server Client User

Tokens

  • Access Token
    • access_token
    • refresh_token (optional)
    • expires_in
  • Refresh Token

Endpoints

  • Authorization Server
    • Authorize Endpoint (/oauth/authorize)
    • Token Endpoint (/oauth/token)
  • Client
    • Redirection Endpoint

Flows

Authorization Code

Resource Server Authorization Server Client User /api/test /api/test Authorization: Bearer ACCESS Access Token Access Token { "access_token": "ACCESS", "refresh_token": "REFRESH", "expires_in": 300 } /oauth/token /oauth/token Authorization: Basic base64(id:secret) grant_type=authorization_code code=TESTCODE Authorization Code Authorization Code Redirect: http://example.com?code= TESTCODE&state=1234 Login Username Password Login /oauth/authorize /oauth/authorize response_type=code client_id=test redirect_uri=http://example.com state=1234

Implicit

Resource Server Authorization Server Client User /api/test /api/test Authorization: Bearer ACCESS Access Token Access Token Redirect: http://example.com?token= ACCESS&state=1234 Login Username Password Login /oauth/authorize /oauth/authorize response_type=token client_id=test redirect_uri=http://example.com state=1234

Resource Owner Password

Resource Server Authorization Server Client User /api/test /api/test Authorization: Bearer ACCESS Access Token Access Token { "access_token": "ACCESS", "refresh_token": "REFRESH", "expires_in": 300 } /oauth/token /oauth/token Authorization: Basic base64(id:secret) grant_type=password username=enm password=test56 Password Password Login Username Password Login

Refresh

Resource Server Authorization Server Client User /api/test /api/test Authorization: Bearer ACCESS Access Token Access Token { "access_token": "ACCESS", "refresh_token": "REFRESH", "expires_in": 300 } /oauth/token /oauth/token Authorization: Basic base64(id:secret) grant_type=refresh refresh_token=REFRESH

Client Credentials

Resource Server Authorization Server Client User /api/test /api/test Authorization: Bearer ACCESS Access Token Access Token { "access_token": "ACCESS", "expires_in": 300 } /oauth/token /oauth/token Authorization: Basic base64(id:secret) grant_type=client_credentials

Scopes

Extensions

  • Bearer Token Usage
  • Token Introspection (Validation)
  • OpenId Connect (Authentication)

Questions?

Confluence: OAuth 2.0