fine-grained authorization with xacml

64
Prabath Siriwardena – Software Architect, WSO2

Upload: prabath-siriwardena

Post on 08-Jun-2015

4.489 views

Category:

Technology


3 download

DESCRIPTION

Fine-grained authorization with XACMLhttp://blog.facilelogin.com/

TRANSCRIPT

Page 1: Fine-grained authorization with XACML

Prabath Siriwardena – Software Architect, WSO2

Page 2: Fine-grained authorization with XACML

Ronaldo Michael Jordan

Page 3: Fine-grained authorization with XACML
Page 4: Fine-grained authorization with XACML
Page 5: Fine-grained authorization with XACML
Page 6: Fine-grained authorization with XACML
Page 7: Fine-grained authorization with XACML
Page 8: Fine-grained authorization with XACML
Page 9: Fine-grained authorization with XACML

eXtensible Access Control Markup Language

Page 10: Fine-grained authorization with XACML

First Meeting – 21 May 2001

Page 11: Fine-grained authorization with XACML

Requirements from Healthcare, DRM, Registry, Financial, Online Web

Page 12: Fine-grained authorization with XACML

XACML 1.0 - OASIS Standard – 6 February 2003

Page 13: Fine-grained authorization with XACML

XACML 1.1 – Committee Specification – 7th August 2003

Page 14: Fine-grained authorization with XACML

XACML 2.0 – OASIS Standard – 1 February 2005

Page 15: Fine-grained authorization with XACML

XACML 3.0 – OASIS Standard – 10th Aug 2010

Page 16: Fine-grained authorization with XACML

Policy Administration

Point

Administrator

Defines

Page 17: Fine-grained authorization with XACML
Page 18: Fine-grained authorization with XACML
Page 19: Fine-grained authorization with XACML
Page 20: Fine-grained authorization with XACML
Page 21: Fine-grained authorization with XACML
Page 22: Fine-grained authorization with XACML
Page 23: Fine-grained authorization with XACML

Policy Evaluation

Point

Access

Policy Decision Point

Page 24: Fine-grained authorization with XACML
Page 25: Fine-grained authorization with XACML

<inSequence> <entitlementService remoteServicePassword=“********" remoteServiceUrl="https://identity-server:9443/services" remoteServiceUserName="prabath"/> </inSequence>

UT

UT

Page 26: Fine-grained authorization with XACML

<inSequence> <entitlementService

callbackClass=“org.wso2.carbon.identity.entitlement.mediator. KerberosEntitlementCallbackHandler” remoteServicePassword=“********" remoteServiceUrl="https://identity-server:9443/services" remoteServiceUserName="prabath” /> </inSequence>

Kerberos

Kerberos

Page 27: Fine-grained authorization with XACML

<inSequence> <property  name="xacml_use_rest"  value=”true"  scope=”axis2"  type="STRING"/> <entitlementService remoteServicePassword=“********" remoteServiceUrl="https://identity-server:9443/services" remoteServiceUserName="prabath” /> </inSequence> BasicAuth/

RESTful

BasicAuth/RESTful

Page 28: Fine-grained authorization with XACML

<inSequence> <entitlementService

callbackClass=“org.wso2.carbon.identity.entitlement.mediator. X509EntitlementCallbackHandler” remoteServicePassword=“********" remoteServiceUrl="https://identity-server:9443/services" remoteServiceUserName="prabath” /> </inSequence>

Sign

Sign

Page 29: Fine-grained authorization with XACML

<inSequence> <entitlementService

callbackClass=“my.own.CustomEmtitlementCallbackhandler” remoteServicePassword=“********" remoteServiceUrl="https://identity-server:9443/services" remoteServiceUserName="prabath” /> </inSequence> Custom

Custom

package my.own; import org.wso2.carbon.identity.entitlement.mediator.EntitlementCallbackHandler; public class CustomEntitlementCallbackHandler extends EntitlementCallbackHandler { }

Page 30: Fine-grained authorization with XACML

My PEP

XACML

http://blog.facilelogin.com/2010/11/net-client-web-app-authorization-with.html

Page 31: Fine-grained authorization with XACML
Page 32: Fine-grained authorization with XACML

Policy Decision Point

Policy Information

Point

Page 33: Fine-grained authorization with XACML

Policy Decision Point

PIP Extension

(s)

Policy Evaluation

Point

Page 34: Fine-grained authorization with XACML

package  org.wso2.carbon.identity.entitlement.pip;    import  com.sun.xacml.ctx.RequestCtx;    /**    *  PIPExtensions  will  be  fired  for  each  and  every  XACML  request  -­‐  which  will  give  a  handle  to  the    *  incoming  request.    *      */  public  interface  PIPExtension  {            /**            *  Gives  a  handle  to  the  XACML  request  built.  Can  be  used  to  carry  out  custom  checks  or  updates            *  before  sending  to  the  PDP.            *              *  @param  request            *                        Incoming  XACML  request.            */          public  void  update(RequestCtx  request);    }  

Page 35: Fine-grained authorization with XACML

Policy Information

Point

PIP Designator

(s)

Policy Decision Point

Page 36: Fine-grained authorization with XACML

package  org.wso2.carbon.identity.entitlement.pip;    import  java.util.Set;    /**    *  To  register  a  PIP  attribute  handler  with  the  PDP  against  their  supported  attributes  -­‐  you  need  to    *  implement  this  interface  and  add  an  entry  to  pip-­‐config.xml  file  -­‐  which  should  be  inside    *  [CARBON_HOME]\repository\conf        */  public  interface  PIPAttributeFinder  {            /**            *  Will  be  fired  by  CarbonAttributeFinder  whenever  it  finds  an  attribute  supported  by  this            *  module.            *              *  @param  subjectId  Name  of  the  subject  the  returned  attributes  should  apply  to.            *  @param  resourceId  The  name  of  the  resource  the  subject  is  trying  to  access.            *  @param  attributeId  The  unique  id  of  the  required  attribute.            *  @return  Returns  a  <code>Set</code>  of  <code>String</code>s  that  represent  the  attribute  values.            *  @throws  Exception            */          public  Set<String>  getAttributeValues(String  subjectId,  String  resourceId,  String  attributeId)                          throws  Exception;            /**            *  Returns  a  <code>Set</code>  of  <code>String</code>s  that  represent  the  attributeIds  handled  by            *  this  module,  or  null  if  this  module  doesn't  handle  any  specific  attributeIds.  A  return  value            *  of  null  means  that  this  module  will  not  handle  any  attributes.            */          public  Set<String>  getSupportedAttributes();  }  

Page 37: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 38: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Allows PolicySet(s) or Policy(s) to be combined

Page 39: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

PolicyCombiningAlgorithm

Page 40: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

PolicyCombiningAlgorithm

Page 41: Fine-grained authorization with XACML

Policy Administration

Point

Policy Store

<PolicySet/>  

<PolicySet/>  

<PolicySet/>  

<PolicySet/>  

Page 42: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Acts as an index to find out matching PolicySets

Page 43: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 44: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 45: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 46: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 47: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Allows Rule(s) be combined

Page 48: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

RuleCombiningAlgorithm

Page 49: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 50: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 51: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 52: Fine-grained authorization with XACML

<PolicySet/>

<Policy/>

<Rule/>

<Target/>

<Subject/> <Resource/> <Action/>

<Environment/> <Condition/>

Page 53: Fine-grained authorization with XACML

<Policy PolicyId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIA003:policy" RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:deny-overrides"> <Description> Policy for Conformance Test IIA003.</Description> <Target/> <Rule RuleId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIA003:rule" Effect="Permit"> <Description> A subject with a "bogus" attribute with a value of "Physician" can read or write Bart Simpson's medical record. </Description> <Target> <Subjects> <Subject> <SubjectMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">

Physician </AttributeValue> <SubjectAttributeDesignator AttributeId=“urn:oasis:names:tc:xacml:1.0:subject:subject-id" DataType="http://www.w3.org/2001/XMLSchema#string"/> </SubjectMatch> </Subject> </Subjects> </Target> </Rule> </Policy>

Page 54: Fine-grained authorization with XACML
Page 55: Fine-grained authorization with XACML

Data Types / Functions / Identifiers

Document  Identifier:  oasis-­‐access_control-­‐xacml-­‐2.0-­‐core-­‐spec-­‐os  Section  :  10  

Page 56: Fine-grained authorization with XACML

<Request/>

<Subject/>

<Resource/>

<Environment/>

<Action/>

<Attribute/>

Page 57: Fine-grained authorization with XACML

<Response/>

<Result/>

<Decision/>

Page 58: Fine-grained authorization with XACML

Conveying XACML Attributes in a SOAP Message

xacml-samlp:XACMLAuthzDecisionQuery

 saml:Attribute

Page 59: Fine-grained authorization with XACML

XACML Assertions

XACMLAuthzAssertion

 XACMLPrivacyAssertion

Page 60: Fine-grained authorization with XACML

Defines how to use SAML 2.0 to protect, store, transport, request, and respond with XACML schema instances and other

information needed by an XACML implementation.

Page 61: Fine-grained authorization with XACML
Page 62: Fine-grained authorization with XACML

<saml:Assertion Version="2.0" ID="9812368” IssueInstant="2006-05-31T13:20:00.000"> <saml:Issuer>https://XACMLPDP.example.com</saml:Issuer> <saml:Statement xsi:type="xacml-saml:XACMLAuthzDecisionStatementType"> <xacml-context:Response> <xacml-context:Result> <xacml-context:Decision> NotApplicable </xacml-context:Decision> </xacml-context:Result> </xacml-context:Response> <xacml-context:Request> .... </xacml-context:Request> </saml:Statement> </saml:Assertion>

Page 63: Fine-grained authorization with XACML

Optimizations in XPATH

User-defined attribute categories

New TARGET matching criteria : <AnyOf> <AllOf>

New Obligation Expressions

Advice

Delegation

Multiple Decision Profile

Enhancements to Policy Combining Algorithms

Page 64: Fine-grained authorization with XACML