SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Semelhante a 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
 
Opa in the api management world
Opa in the api management worldOpa in the api management world
Opa in the api management worldRed Hat
 
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
 

Semelhante a OpenID AuthZEN ALFA PEP-PDP Prior Art (20)

Open Policy Agent
Open Policy AgentOpen Policy Agent
Open Policy Agent
 
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
 

Mais 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
 

Mais 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
 

Último

Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfFIDO Alliance
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfFIDO Alliance
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024TopCSSGallery
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoUXDXConf
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 

Último (20)

Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 

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