Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Authorization in a Service-Oriented Environment

lumberj
April 24, 2014

Authorization in a Service-Oriented Environment

In a SOA environment users can interact with multiple parts of your system, and the rules for authorization become dispersed across applications. The task of maintaining rules becomes complex. The challenge compounds further in a heterogeneous environment, with services built in different languages. In this talk, I focus on the topic of authorization, specifically how we can scale and grow our services with confidence. I’ll walk through a new framework we've developed to approach this problem.

lumberj

April 24, 2014
Tweet

Other Decks in Programming

Transcript

  1. Types of Authorization * Role Base Access Control (RBAC) *

    Attribute Based Access Control (ABAC) * Access Control Lists (ACL) * Rule Based Access Control …. http://www.evolllution.com/opinions/cybersecurity-access-control/
  2. What is “Service Oriented Architecture”? “A loosely-coupled architecture designed to

    meet the business needs of the organization.” http://msdn.microsoft.com/en-us/library/bb833022.aspx
  3. • Reusability • Allocate resources as necessary • Loose coupling

    • Encapsulated concerns • Change out libraries or platforms (i.e., pluggability) • Codebase that scales across teams • Distributed development (i.e., parallel development)
  4. "The XACML model supports and encourages the separation of the

    access decision from the point of use.”
  5. “When access decisions are baked into client applications (or based

    on local machine userids and Access Control Lists (ACLs)), it is very difficult to update the decision criteria when the governing policy changes.”
  6. “When the client is decoupled from the access decision, authorization

    policies can be updated on the fly and affect all clients immediately.”
  7. http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.pdf <?xml version="1.0" encoding="UTF-8"?> Policy mlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" mlns:xacml="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" mlns:xsi="http://www.w3.org/2001/XMLSchema-instance" mlns:xf="http://www.w3.org/2005/xpath-functions" mlns:md="http:www.med.example.com/schemas/record.xsd"

    PolicyId="urn:oasis:names:tc:xacml:3.0:example:policyid:2" Version="1.0" RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining- thm:deny-overrides"> <PolicyDefaults> <XPathVersion>http://www.w3.org/TR/1999/REC-xpath-19991116</XPathVersion> </PolicyDefaults> <Target/> <VariableDefinition VariableId="17590035"> <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:date-less-or-equal"> <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:date-one-and-only"> <AttributeDesignator MustBePresent="false" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-date" DataType="http://www.w3.org/2001/XMLSchema#date"/> </Apply> <Apply
  8. { "conditions":[ { "equal": { … } }, ! {

    "not_equal": { … } } ] } What are the conditions?
  9. gem install iron_hide ! Source & Documentation: http://bit.ly/1k17NHs ! Sample

    App: http://bit.ly/1lxB00B ! CouchDB Adapter: http://bit.ly/1k17NHs Questions?