OAuth 2.0 Integration Patterns with XACML

Preview:

DESCRIPTION

OAuth 2.0 Integration Patterns with XACML

Citation preview

Prabath Siriwardena Senior Architect & Chair, Integration MC

Third-­‐party  applications  are  required  to  store  the  resource  owner's  credentials  for  future  use,  typically  a  password  in  clear-­‐

text.  

Servers  are  required  to  support  password  authentication,  despite  the  security  weaknesses  created  by  passwords.  

Third-­‐party  applications  gain  overly  broad  access  to  the  resource  owner's  protected  resources,  leaving  resource  owners  without  any  ability  to  restrict  duration  or  access  to  a  limited  

subset  of  resources.  

Resource  owners  cannot  revoke  access  to  an  individual  third-­‐party  without  revoking  access  to  all  third-­‐parties,  and  must  do  

so  by  changing  their  password.  

Compromise  of  any  third-­‐party  application  results  in  compromise  of  the  end-­‐user's  password  and  all  of  the  data  

protected  by  that  password.  

•  Complexity  in  validating  and  generating  signatures.  •  No  clear  separation  between  Resource  Server  and  

Authorization  Server.  •  Browser  based  re-­‐redirections.  

•  An  entity  capable  of  granting  access  to  a  protected  resource.    

•  When  the  resource  owner  is  a  person,  it  is  referred  to  as  an  end-­‐user.  

•  The  server  hosting  the  protected  resources,  capable  of  accepting  and  responding  to  protected  resource  requests  using  access  tokens.  

•  An  application  making  protected  resource  requests  on  behalf  of  the  resource  owner  and  with  its  authorization  

•  The  server  issuing  access  tokens  to  the  client  after  successfully  authenticating  the  resource  owner  and  obtaining  authorization  

Authorization  Code  

Implicit  

Resource  Owner  Password  Credentials  

Client  Credentials  

OAuth  Handshake  

Scope  

Confidential  Client  Type    

Web  Application  

OAuth  Handshake  

Client  Authenticates  to  AuthZ  Server  

BasicAuth   client_id  /  client_secret  

OAuth  Handshake  

OAuth  Handshake  

Scope  

Public  Client  Type    

User  Agent  based  Application  

OAuth  Handshake  

Anonymous  Clients  

OAuth  Handshake  

OAuth  Handshake  

Scope  

Confidential  Client  Type    

OAuth  Handshake  

BasicAuth  

OAuth  Handshake  

OAuth  Handshake  

Scope  

Confidential  Client  Type    

OAuth  Handshake  

BasicAuth  

OAuth  Handshake  

Runtime  

Runtime  

Bearer   MAC  

Runtime  

Bearer   MAC  

Any  party  in  possession  of  a  bearer  token  (a  "bearer")  can  use  it  to  get  access  to  the  associated  resources  (without  demonstrating  possession  of  a  cryptographic  key).  

Bearer  

Runtime  

Bearer   MAC  

HTTP  MAC  access  authentication  scheme  

MAC  

Feed   Clean  

Take  out  

Medication  

Feed   Clean  

Take  out  

Medication  

¡  The  de-­‐facto  standard  for  authorization  ¡  PAP  /  PDP  /  PEP  /  PIP  ¡  XML  based  policies  

Policy Enforcement

Point

OAuth   XACML  

Client   Subject  

Resource  Owner   Subject  

Scope   Action  +  Resource  

Client  

Resource  Owner  

Resource    

Scope  

Action  

Only  the  resource  owner  will  be  able  to  access  any  resource  during  weekend  and  after  9  PM  weekdays  

Authorization  Rules  

Client  :  Foo  

Day  :  Monday  Time  :  4  PM  

Resource  :  Bar    

Scope  =  “Scooby”+”medication”  

Client  :  Foo  

Day  :  Monday  Time  :  4  PM  

Resource  :  Bar    

Scope  =  “Scooby”+”medication”  

Client  :  Foo  

Day  :  Monday  Time  :  10  PM  

Resource  :  Bar    

Scope  =  “Scooby”+”medication”  

Resource  Owner  :  Foo  

Day  :  Monday  Time  :  10  PM  

Resource  :  Bar    

Scope  =  “Scooby”+”medication”  

Only  the  resource  owner  will  be  able  to  perform  Feed,  Take  Out  action  on  Dog  resource  

Authorization  Rules  

Client  :  Foo  

Day  :  Monday  Time  :  4  PM  

Resource  :  Bar    

Scope  =  “Scooby”+”feed”  

Client  :  Foo  

Day  :  Monday  Time  :  4  PM  

Resource  :  Bar    

Scope  =  “Scooby”+”feed”  

Resource  Owner  :  Foo  

Day  :  Monday  Time  :  10  PM  

Resource  :  Bar    

Scope  =  “Scooby”+”feed”  

Recommended