SlideShare une entreprise Scribd logo
1  sur  19
1
axiomatics.com
OpenID AuthZEN Prior Art
ALFA - Abbreviated Language for Authorization
David Brossard, January 2024 | https://www.linkedin.com/company/axiomatics/ | https://www.linkedin.com/in/davidbrossard/
2
axiomatics.com
axiomatics.com
TL;DR;
There’s an OpenAPI specification for the interfaces I am about to cover.
👉GitHub - axiomatics/xacml-3.0-authz-service-openapi-spec
3
axiomatics.com
axiomatics.com
Background
• ALFA is first and foremost a policy language
• ALFA follows NIST’s ABAC special publication
o SP 800-162, Guide to Attribute Based Access Control (ABAC) Definition and Considerations | CSRC
• ALFA is based on XACML
o It uses a lightweight syntax similar to Java
• ALFA leverages the JSON Profile of XACML to send/receive authorization requests
o JSON Profile of XACML 3.0 Version 1.1
• The JSON Profile of XACML references the REST Profile of XACML for the actual transport
o REST Profile of XACML v3.0 Version 1.0
• The transport part (HTTP…) is entirely decoupled from the request/response format.
o They’re 2 different specs (see above)
4
axiomatics.com
axiomatics.com
Use Cases
ALFA supports the same authorization use cases as XACML:
• Binary authorization request
o Can Alice view Document #1?
o Permit ✅/Deny❌/NotApplicable❔/Indeterminate ⚠️
• Batch authorization requests
o Can Alice, Bob, and Carol view, edit, or delete documents #1, 2, 3?
o 3x3x3 decisions are returned
o Batch requests are specified in another profile called the Multiple Decision Profile Version 1.0
• ⚠️Notably, ALFA (and XACML) does not support partial evaluation/search
o This is something vendors have had to build themselves
o Axiomatics has a proprietary API called Reverse Query that implements partial evaluation
5
axiomatics.com
axiomatics.com
Attributes are the core elements of an authorization request
• ALFA is entirely attribute-based
o Therefore, an authorization request is (nearly exclusively) made up of attributes
• An attribute is made up of
o A category e.g. subject
o A datatype e.g. string
o An identifier (a urn) e.g. com.acme.user.name
• Attributes can be multi-valued
o citizenship can contain multiple values e.g. Swiss and Swedish
• ALFA supports
o 4 default categories: subject, action, resource, and environment
– ✅This corresponds to Cedar’s PARC model and AuthZEN’s current subject/resource/action proposal
o A dozen standard datatypes (see https://alfa.guide/alfa-datatypes/)
• ALFA is extensible
o You can add categories and datatypes if you so desire
o In practice, users stick to subject/action/resource/environment and basic datatypes (string, boolean, numbers,
dates)
6
axiomatics.com
axiomatics.com
Authorization Request UML Diagram
💗
7
axiomatics.com
{"Request":
{
"AccessSubject":
[{"Attribute":
[
{"AttributeId":"axiomatics.demo.user.userId","Value":["Alice Anderson"]}
]
}],
"Resource":
[{"Attribute":
[
{"AttributeId":"axiomatics.demo.resourceType","Value":"record"},
{"AttributeId":"axiomatics.demo.record.recordId","Value":"123"}
]
}],
"Action":
[{"Attribute":
[
{"AttributeId":"axiomatics.demo.actionId","Value":"view"}
]
}]
}
Can Alice Anderson view record 123?
Sample Authorization Request
Each category is an array
of attributes
An attribute in its simplest
form is a key-value pair
A request is an array of
categories.
8
axiomatics.com
Generic Form: Can Dave view record 125?
Sample Authorization Request
{"Request": {
"Category": [
{"CategoryId":"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject",
"Attribute": [{"AttributeId": "user.employeeId","Value": "Dave"}]},
{"CategoryId":"urn:oasis:names:tc:xacml:3.0:attribute-category:action",
"Attribute": [{"AttributeId": "action.actionId","Value": "view"}]},
{"CategoryId":"urn:oasis:names:tc:xacml:3.0:attribute-category:resource",
"Attribute": [
{"AttributeId": "object.objectType","Value": "record"},
{"AttributeId": "record.recordId","Value": "125"}]}
]
}
}
9
axiomatics.com
axiomatics.com
Authorization Response UML Diagram
💗
10
axiomatics.com
axiomatics.com
Features of the Authorization Response
• The response contains an array of results (to be able to support the Multiple Decision Profile)
• Each result contains
o One of 4 possible decisions: Permit ✅/Deny❌/NotApplicable❔/Indeterminate ⚠️
o An optional status that can be used to convey errors e.g. missing attributes or division by zero
o An optional array of obligations and advice
o An optional array of attributes and their values used in the decision making process
o An optional array of identifiers pointing to the policies used in the evaluation process
11
axiomatics.com
axiomatics.com
Additional Features
• An Authorization Request can ask the PDP to return the identifiers of the policies evaluated
o ReturnPolicyIdList
– type boolean; default value is false
– This is useful to trace an evaluation or understand which policy triggered the eventual decision
o CombinedDecision
– type boolean; default value is false
– In the event of a Multiple Decision Request e.g. “Can Alice view and/or edit document #123”, rather than the PDP
returning 2 decisions (Permit, Deny), those decisions can be combined into a single one.
• Policies can contain obligations & advice which are additional statements that may be returned alongside
a decision e.g.
o Permit + obligation to use MFA
o It’s on the PEP to comply with the obligation
12
axiomatics.com
axiomatics.com
Sample Authorization Responses
{"Response": [
{
"Decision": "Permit"
}
]}
{"Response": [
{
"Decision": "Deny",
"PolicyIdentifierList": {
"PolicyIdReference": [
{"Id": "viewRecords.employeesViewRecords","Version": "1.0"}
],
"PolicySetIdReference": [
{"Id": "mainRecords.viewRecords","Version": "1.0"},
{"Id": "tutorial.main","Version": "1.0"}
]
}
}
]}
The simplest kind of
response. Note it’s an array
A sample response with
policy identifiers
13
axiomatics.com
axiomatics.com
Sample Authorization Response with Obligations
{"Response": [{
"Decision": "Deny",
"AssociatedAdvice": [
{
"Id": "tutorial.denyMessage",
"AttributeAssignment": [
{
"AttributeId": "message.denyReason",
"Value": "Sorry, Dave, you can't do that because you do not have a role",
"Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment",
}
]
}
]
}]}
This response contains
additional statements called
obligations
14
axiomatics.com
axiomatics.com
Simplifications
• Datatypes that can be inferred from JSON e.g. String, integer, double, boolean do not need to be specified
• Some fields that are mandatory in XACML are optional in the JSON representation and have a default
value
o E.g. XPathVersion (not very useful in a JSON world)
15
axiomatics.com
axiomatics.com
Features ALFA does not have by design
• You cannot ask the PDP to only consider a subset of
policies
o It is not up to the requester to decide what applies to
them
• You cannot send the PDP a policy to execute
o It is configured beforehand through different means (see
PAP-PDP)
• As previously mentioned, no ‘search’ or partial
evaluation
o Vendors e.g. Axiomatics have implemented their own
approach
No, you don’t get to tell
me what the law is.
You cannot ride a
wooden horse on I-401
16
axiomatics.com
axiomatics.com
Things that could be simplified (and that AuthZEN should do)
• Let’s fully drop features and parameters that are really only
meaningful in XACML but not in ALFA or in modern-day XMLless
worlds
• Let’s support 2 decisions only: Permit and Deny
17
axiomatics.com
axiomatics.com
Extending the JSON Profile to support Search
• Essentially, the same request structure could be used.
• One would have to add the desired decision, typically Permit
o What can Alice do?
o Give me the list of items Alice can delete
• Standardizing the request is straightforward
o Standardizing the response is harder
o Is it a filter?
o Is it the list of items?
18
axiomatics.com
axiomatics.com
References
• JSON Profile of XACML 3.0 Version 1.1
• REST Profile of XACML v3.0 Version 1.0
• XACML v3.0 Multiple Decision Profile Version 1.0
• ALFA - the Abbreviated Language for Authorization
• Sample Requests - Postman Collection
19
axiomatics.com
Thank you

Contenu connexe

Similaire à OpenID AuthZEN ALFA PEP-PDP Prior Art

Ladies Be Architects - Integration - Multi-Org, Security, JSON, Backup & Restore
Ladies Be Architects - Integration - Multi-Org, Security, JSON, Backup & RestoreLadies Be Architects - Integration - Multi-Org, Security, JSON, Backup & Restore
Ladies Be Architects - Integration - Multi-Org, Security, JSON, Backup & Restoregemziebeth
 
The never-ending REST API design debate
The never-ending REST API design debateThe never-ending REST API design debate
The never-ending REST API design debateRestlet
 
Restful webservice
Restful webserviceRestful webservice
Restful webserviceDong Ngoc
 
Solr/Elasticsearch for CF Developers (and others)
Solr/Elasticsearch for CF Developers (and others)Solr/Elasticsearch for CF Developers (and others)
Solr/Elasticsearch for CF Developers (and others)Mary Jo Sminkey
 
Externalizing Authorization in Micro Services world
Externalizing Authorization in Micro Services worldExternalizing Authorization in Micro Services world
Externalizing Authorization in Micro Services worldSitaraman Lakshminarayanan
 
REST - Why, When and How? at AMIS25
REST - Why, When and How? at AMIS25REST - Why, When and How? at AMIS25
REST - Why, When and How? at AMIS25Jon Petter Hjulstad
 
Design API using RAML - basics
Design API using RAML - basicsDesign API using RAML - basics
Design API using RAML - basicskunal vishe
 
Introduction to Solr
Introduction to SolrIntroduction to Solr
Introduction to SolrErik Hatcher
 
E5: Predix Security with ACS & UAA (Predix Transform 2016)
E5: Predix Security with ACS & UAA (Predix Transform 2016)E5: Predix Security with ACS & UAA (Predix Transform 2016)
E5: Predix Security with ACS & UAA (Predix Transform 2016)Predix
 
Mule soft RAML API Designing
Mule soft RAML API DesigningMule soft RAML API Designing
Mule soft RAML API DesigningRaja Reddy
 
Introduction to Solr
Introduction to SolrIntroduction to Solr
Introduction to SolrErik Hatcher
 
Netflix OSS Meetup Season 5 Episode 1
Netflix OSS Meetup Season 5 Episode 1Netflix OSS Meetup Season 5 Episode 1
Netflix OSS Meetup Season 5 Episode 1aspyker
 
Open Badge Directory [Cycle 1]
Open Badge Directory [Cycle 1]Open Badge Directory [Cycle 1]
Open Badge Directory [Cycle 1]Open Badges
 
Attribute based access control
Attribute based  access controlAttribute based  access control
Attribute based access controlNarendra Kumar
 
aip-workshop1-dev-tutorial
aip-workshop1-dev-tutorialaip-workshop1-dev-tutorial
aip-workshop1-dev-tutorialMatthew Vaughn
 

Similaire à OpenID AuthZEN ALFA PEP-PDP Prior Art (20)

Ladies Be Architects - Integration - Multi-Org, Security, JSON, Backup & Restore
Ladies Be Architects - Integration - Multi-Org, Security, JSON, Backup & RestoreLadies Be Architects - Integration - Multi-Org, Security, JSON, Backup & Restore
Ladies Be Architects - Integration - Multi-Org, Security, JSON, Backup & Restore
 
The never-ending REST API design debate
The never-ending REST API design debateThe never-ending REST API design debate
The never-ending REST API design debate
 
Restful webservice
Restful webserviceRestful webservice
Restful webservice
 
Solr/Elasticsearch for CF Developers (and others)
Solr/Elasticsearch for CF Developers (and others)Solr/Elasticsearch for CF Developers (and others)
Solr/Elasticsearch for CF Developers (and others)
 
Externalizing Authorization in Micro Services world
Externalizing Authorization in Micro Services worldExternalizing Authorization in Micro Services world
Externalizing Authorization in Micro Services world
 
Pega overview
Pega overviewPega overview
Pega overview
 
Pega | pega Bpm Training
Pega | pega Bpm TrainingPega | pega Bpm Training
Pega | pega Bpm Training
 
What is rules in pega
What is rules in pegaWhat is rules in pega
What is rules in pega
 
Opa in the api management world
Opa in the api management worldOpa in the api management world
Opa in the api management world
 
REST - Why, When and How? at AMIS25
REST - Why, When and How? at AMIS25REST - Why, When and How? at AMIS25
REST - Why, When and How? at AMIS25
 
Design API using RAML - basics
Design API using RAML - basicsDesign API using RAML - basics
Design API using RAML - basics
 
Introduction to Solr
Introduction to SolrIntroduction to Solr
Introduction to Solr
 
E5: Predix Security with ACS & UAA (Predix Transform 2016)
E5: Predix Security with ACS & UAA (Predix Transform 2016)E5: Predix Security with ACS & UAA (Predix Transform 2016)
E5: Predix Security with ACS & UAA (Predix Transform 2016)
 
Mule soft RAML API Designing
Mule soft RAML API DesigningMule soft RAML API Designing
Mule soft RAML API Designing
 
Introduction to Solr
Introduction to SolrIntroduction to Solr
Introduction to Solr
 
Netflix OSS Meetup Season 5 Episode 1
Netflix OSS Meetup Season 5 Episode 1Netflix OSS Meetup Season 5 Episode 1
Netflix OSS Meetup Season 5 Episode 1
 
Open Badge Directory [Cycle 1]
Open Badge Directory [Cycle 1]Open Badge Directory [Cycle 1]
Open Badge Directory [Cycle 1]
 
Api security-testing
Api security-testingApi security-testing
Api security-testing
 
Attribute based access control
Attribute based  access controlAttribute based  access control
Attribute based access control
 
aip-workshop1-dev-tutorial
aip-workshop1-dev-tutorialaip-workshop1-dev-tutorial
aip-workshop1-dev-tutorial
 

Plus de David Brossard

ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs - Nordi...
ABAC, ReBAC, Zanzibar, ALFA…  How Should I Implement AuthZ in My APIs - Nordi...ABAC, ReBAC, Zanzibar, ALFA…  How Should I Implement AuthZ in My APIs - Nordi...
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs - Nordi...David Brossard
 
The Holy Grail of IAM: Getting to Grips with Authorization
The Holy Grail of IAM: Getting to Grips with AuthorizationThe Holy Grail of IAM: Getting to Grips with Authorization
The Holy Grail of IAM: Getting to Grips with AuthorizationDavid Brossard
 
OpenID Foundation AuthZEN WG Update
OpenID Foundation AuthZEN WG UpdateOpenID Foundation AuthZEN WG Update
OpenID Foundation AuthZEN WG UpdateDavid Brossard
 
Policy enabling your services - using elastic dynamic authorization to contro...
Policy enabling your services - using elastic dynamic authorization to contro...Policy enabling your services - using elastic dynamic authorization to contro...
Policy enabling your services - using elastic dynamic authorization to contro...David Brossard
 
Updates from the OASIS XACML Technical Committee - Making Authorization Devel...
Updates from the OASIS XACML Technical Committee - Making Authorization Devel...Updates from the OASIS XACML Technical Committee - Making Authorization Devel...
Updates from the OASIS XACML Technical Committee - Making Authorization Devel...David Brossard
 
To the cloud and beyond: delivering policy-driven authorization for cloud app...
To the cloud and beyond: delivering policy-driven authorization for cloud app...To the cloud and beyond: delivering policy-driven authorization for cloud app...
To the cloud and beyond: delivering policy-driven authorization for cloud app...David Brossard
 
OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?
OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?
OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?David Brossard
 
Why lasagna is better than spaghetti: baking authorization into your applicat...
Why lasagna is better than spaghetti: baking authorization into your applicat...Why lasagna is better than spaghetti: baking authorization into your applicat...
Why lasagna is better than spaghetti: baking authorization into your applicat...David Brossard
 
EIC 2014 Oasis Workshop: Using XACML to implement Privacy by Design
EIC 2014   Oasis Workshop: Using XACML to implement Privacy by DesignEIC 2014   Oasis Workshop: Using XACML to implement Privacy by Design
EIC 2014 Oasis Workshop: Using XACML to implement Privacy by DesignDavid Brossard
 
Fine grained access control for cloud-based services using ABAC and XACML
Fine grained access control for cloud-based services using ABAC and XACMLFine grained access control for cloud-based services using ABAC and XACML
Fine grained access control for cloud-based services using ABAC and XACMLDavid Brossard
 
OASIS Workshop: Identity, Privacy, and Data Protection in the Cloud – What is...
OASIS Workshop: Identity, Privacy, and Data Protection in the Cloud – What is...OASIS Workshop: Identity, Privacy, and Data Protection in the Cloud – What is...
OASIS Workshop: Identity, Privacy, and Data Protection in the Cloud – What is...David Brossard
 
Authorization - it's not just about who you are
Authorization - it's not just about who you areAuthorization - it's not just about who you are
Authorization - it's not just about who you areDavid Brossard
 
XACML in five minutes: excerpt from Catalyst 2013 panel "New school identity ...
XACML in five minutes: excerpt from Catalyst 2013 panel "New school identity ...XACML in five minutes: excerpt from Catalyst 2013 panel "New school identity ...
XACML in five minutes: excerpt from Catalyst 2013 panel "New school identity ...David Brossard
 
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...David Brossard
 
XACML - Fight For Your Love
XACML - Fight For Your LoveXACML - Fight For Your Love
XACML - Fight For Your LoveDavid Brossard
 

Plus de David Brossard (15)

ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs - Nordi...
ABAC, ReBAC, Zanzibar, ALFA…  How Should I Implement AuthZ in My APIs - Nordi...ABAC, ReBAC, Zanzibar, ALFA…  How Should I Implement AuthZ in My APIs - Nordi...
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs - Nordi...
 
The Holy Grail of IAM: Getting to Grips with Authorization
The Holy Grail of IAM: Getting to Grips with AuthorizationThe Holy Grail of IAM: Getting to Grips with Authorization
The Holy Grail of IAM: Getting to Grips with Authorization
 
OpenID Foundation AuthZEN WG Update
OpenID Foundation AuthZEN WG UpdateOpenID Foundation AuthZEN WG Update
OpenID Foundation AuthZEN WG Update
 
Policy enabling your services - using elastic dynamic authorization to contro...
Policy enabling your services - using elastic dynamic authorization to contro...Policy enabling your services - using elastic dynamic authorization to contro...
Policy enabling your services - using elastic dynamic authorization to contro...
 
Updates from the OASIS XACML Technical Committee - Making Authorization Devel...
Updates from the OASIS XACML Technical Committee - Making Authorization Devel...Updates from the OASIS XACML Technical Committee - Making Authorization Devel...
Updates from the OASIS XACML Technical Committee - Making Authorization Devel...
 
To the cloud and beyond: delivering policy-driven authorization for cloud app...
To the cloud and beyond: delivering policy-driven authorization for cloud app...To the cloud and beyond: delivering policy-driven authorization for cloud app...
To the cloud and beyond: delivering policy-driven authorization for cloud app...
 
OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?
OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?
OWASP Chicago 2016 - What is Attribute Based Access Control (ABAC)?
 
Why lasagna is better than spaghetti: baking authorization into your applicat...
Why lasagna is better than spaghetti: baking authorization into your applicat...Why lasagna is better than spaghetti: baking authorization into your applicat...
Why lasagna is better than spaghetti: baking authorization into your applicat...
 
EIC 2014 Oasis Workshop: Using XACML to implement Privacy by Design
EIC 2014   Oasis Workshop: Using XACML to implement Privacy by DesignEIC 2014   Oasis Workshop: Using XACML to implement Privacy by Design
EIC 2014 Oasis Workshop: Using XACML to implement Privacy by Design
 
Fine grained access control for cloud-based services using ABAC and XACML
Fine grained access control for cloud-based services using ABAC and XACMLFine grained access control for cloud-based services using ABAC and XACML
Fine grained access control for cloud-based services using ABAC and XACML
 
OASIS Workshop: Identity, Privacy, and Data Protection in the Cloud – What is...
OASIS Workshop: Identity, Privacy, and Data Protection in the Cloud – What is...OASIS Workshop: Identity, Privacy, and Data Protection in the Cloud – What is...
OASIS Workshop: Identity, Privacy, and Data Protection in the Cloud – What is...
 
Authorization - it's not just about who you are
Authorization - it's not just about who you areAuthorization - it's not just about who you are
Authorization - it's not just about who you are
 
XACML in five minutes: excerpt from Catalyst 2013 panel "New school identity ...
XACML in five minutes: excerpt from Catalyst 2013 panel "New school identity ...XACML in five minutes: excerpt from Catalyst 2013 panel "New school identity ...
XACML in five minutes: excerpt from Catalyst 2013 panel "New school identity ...
 
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...
XACML for Developers - Updates, New Tools, & Patterns for the Eager #IAM Deve...
 
XACML - Fight For Your Love
XACML - Fight For Your LoveXACML - Fight For Your Love
XACML - Fight For Your Love
 

Dernier

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 

Dernier (20)

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 

OpenID AuthZEN ALFA PEP-PDP Prior Art

  • 1. 1 axiomatics.com OpenID AuthZEN Prior Art ALFA - Abbreviated Language for Authorization David Brossard, January 2024 | https://www.linkedin.com/company/axiomatics/ | https://www.linkedin.com/in/davidbrossard/
  • 2. 2 axiomatics.com axiomatics.com TL;DR; There’s an OpenAPI specification for the interfaces I am about to cover. 👉GitHub - axiomatics/xacml-3.0-authz-service-openapi-spec
  • 3. 3 axiomatics.com axiomatics.com Background • ALFA is first and foremost a policy language • ALFA follows NIST’s ABAC special publication o SP 800-162, Guide to Attribute Based Access Control (ABAC) Definition and Considerations | CSRC • ALFA is based on XACML o It uses a lightweight syntax similar to Java • ALFA leverages the JSON Profile of XACML to send/receive authorization requests o JSON Profile of XACML 3.0 Version 1.1 • The JSON Profile of XACML references the REST Profile of XACML for the actual transport o REST Profile of XACML v3.0 Version 1.0 • The transport part (HTTP…) is entirely decoupled from the request/response format. o They’re 2 different specs (see above)
  • 4. 4 axiomatics.com axiomatics.com Use Cases ALFA supports the same authorization use cases as XACML: • Binary authorization request o Can Alice view Document #1? o Permit ✅/Deny❌/NotApplicable❔/Indeterminate ⚠️ • Batch authorization requests o Can Alice, Bob, and Carol view, edit, or delete documents #1, 2, 3? o 3x3x3 decisions are returned o Batch requests are specified in another profile called the Multiple Decision Profile Version 1.0 • ⚠️Notably, ALFA (and XACML) does not support partial evaluation/search o This is something vendors have had to build themselves o Axiomatics has a proprietary API called Reverse Query that implements partial evaluation
  • 5. 5 axiomatics.com axiomatics.com Attributes are the core elements of an authorization request • ALFA is entirely attribute-based o Therefore, an authorization request is (nearly exclusively) made up of attributes • An attribute is made up of o A category e.g. subject o A datatype e.g. string o An identifier (a urn) e.g. com.acme.user.name • Attributes can be multi-valued o citizenship can contain multiple values e.g. Swiss and Swedish • ALFA supports o 4 default categories: subject, action, resource, and environment – ✅This corresponds to Cedar’s PARC model and AuthZEN’s current subject/resource/action proposal o A dozen standard datatypes (see https://alfa.guide/alfa-datatypes/) • ALFA is extensible o You can add categories and datatypes if you so desire o In practice, users stick to subject/action/resource/environment and basic datatypes (string, boolean, numbers, dates)
  • 8. 8 axiomatics.com Generic Form: Can Dave view record 125? Sample Authorization Request {"Request": { "Category": [ {"CategoryId":"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject", "Attribute": [{"AttributeId": "user.employeeId","Value": "Dave"}]}, {"CategoryId":"urn:oasis:names:tc:xacml:3.0:attribute-category:action", "Attribute": [{"AttributeId": "action.actionId","Value": "view"}]}, {"CategoryId":"urn:oasis:names:tc:xacml:3.0:attribute-category:resource", "Attribute": [ {"AttributeId": "object.objectType","Value": "record"}, {"AttributeId": "record.recordId","Value": "125"}]} ] } }
  • 10. 10 axiomatics.com axiomatics.com Features of the Authorization Response • The response contains an array of results (to be able to support the Multiple Decision Profile) • Each result contains o One of 4 possible decisions: Permit ✅/Deny❌/NotApplicable❔/Indeterminate ⚠️ o An optional status that can be used to convey errors e.g. missing attributes or division by zero o An optional array of obligations and advice o An optional array of attributes and their values used in the decision making process o An optional array of identifiers pointing to the policies used in the evaluation process
  • 11. 11 axiomatics.com axiomatics.com Additional Features • An Authorization Request can ask the PDP to return the identifiers of the policies evaluated o ReturnPolicyIdList – type boolean; default value is false – This is useful to trace an evaluation or understand which policy triggered the eventual decision o CombinedDecision – type boolean; default value is false – In the event of a Multiple Decision Request e.g. “Can Alice view and/or edit document #123”, rather than the PDP returning 2 decisions (Permit, Deny), those decisions can be combined into a single one. • Policies can contain obligations & advice which are additional statements that may be returned alongside a decision e.g. o Permit + obligation to use MFA o It’s on the PEP to comply with the obligation
  • 12. 12 axiomatics.com axiomatics.com Sample Authorization Responses {"Response": [ { "Decision": "Permit" } ]} {"Response": [ { "Decision": "Deny", "PolicyIdentifierList": { "PolicyIdReference": [ {"Id": "viewRecords.employeesViewRecords","Version": "1.0"} ], "PolicySetIdReference": [ {"Id": "mainRecords.viewRecords","Version": "1.0"}, {"Id": "tutorial.main","Version": "1.0"} ] } } ]} The simplest kind of response. Note it’s an array A sample response with policy identifiers
  • 13. 13 axiomatics.com axiomatics.com Sample Authorization Response with Obligations {"Response": [{ "Decision": "Deny", "AssociatedAdvice": [ { "Id": "tutorial.denyMessage", "AttributeAssignment": [ { "AttributeId": "message.denyReason", "Value": "Sorry, Dave, you can't do that because you do not have a role", "Category": "urn:oasis:names:tc:xacml:3.0:attribute-category:environment", } ] } ] }]} This response contains additional statements called obligations
  • 14. 14 axiomatics.com axiomatics.com Simplifications • Datatypes that can be inferred from JSON e.g. String, integer, double, boolean do not need to be specified • Some fields that are mandatory in XACML are optional in the JSON representation and have a default value o E.g. XPathVersion (not very useful in a JSON world)
  • 15. 15 axiomatics.com axiomatics.com Features ALFA does not have by design • You cannot ask the PDP to only consider a subset of policies o It is not up to the requester to decide what applies to them • You cannot send the PDP a policy to execute o It is configured beforehand through different means (see PAP-PDP) • As previously mentioned, no ‘search’ or partial evaluation o Vendors e.g. Axiomatics have implemented their own approach No, you don’t get to tell me what the law is. You cannot ride a wooden horse on I-401
  • 16. 16 axiomatics.com axiomatics.com Things that could be simplified (and that AuthZEN should do) • Let’s fully drop features and parameters that are really only meaningful in XACML but not in ALFA or in modern-day XMLless worlds • Let’s support 2 decisions only: Permit and Deny
  • 17. 17 axiomatics.com axiomatics.com Extending the JSON Profile to support Search • Essentially, the same request structure could be used. • One would have to add the desired decision, typically Permit o What can Alice do? o Give me the list of items Alice can delete • Standardizing the request is straightforward o Standardizing the response is harder o Is it a filter? o Is it the list of items?
  • 18. 18 axiomatics.com axiomatics.com References • JSON Profile of XACML 3.0 Version 1.1 • REST Profile of XACML v3.0 Version 1.0 • XACML v3.0 Multiple Decision Profile Version 1.0 • ALFA - the Abbreviated Language for Authorization • Sample Requests - Postman Collection