or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Gartner IAM London: API Gateway Interop Scenario
Created: Jan 23 2025
Updated: Feb 22 2025 (subject.type: "user" -> "identity")
Context
On March 25 2025, Gartner is holding their IAM Summit in London.
AuthZEN has 3 interop showcase sessions secured.
In addition to demonstrating the existing Todo application, which works with about 15 PDP implementations, we are also bringing in API Gateways as Policy Enforcement Points.
The API Gateway scenario layers on top of the existing Todo scenario.
Todo app: fine-grained authorization
Currently, the Todo authorization scenario relies on the application to supply the OwnerID for each Todo. The application retrieves this from a SQLite database, which is not exposed/accessible to the Gateway.
Therefore, only the application has all the data to be able to correctly formulate the question "can this user perform this action on this specific todo".
This scenario is documented here and remains unchanged for the Gartner inteorp.
API gateway: medium-grained authorization
The API Gateway can do "medium-grained authorization" in this scenario, formulating the question "can this user invoke this HTTP method on this route".
The remainder of this document describes the endpoints that the React application invokes (and the API gateway proxies).
For each endpoint, it documents the payload the AuthZEN requests that participating gateways will issue to AuthZEN-compliant PDPs, and how the PDPs should respond to each request.
Participating PDPs will, therefore, employ TWO policies: one for the existing fine-grained authorization scenario, and a new policy to handle the route authorization done by the Gateway (which will be referred to as "medium-grained authorization").
Overview of the scenario
The Todo application manages a shared todo list between a set of users.
There are 5 actions that the Todo application supports, each with a permission associated with it:
can_read_user
can_read_todos
can_create_todo
can_update_todo
can_delete_todo
There are four roles defined:
viewer
- able to view the shared todo list (can_read_todos
), as well as information about each of the owners of a Todo (notably, their picture) (can_read_user
)editor
-viewer
+ the ability to create new Todos (can_create_todo
), as well as edit and delete Todos that are owned by that useradmin
-editor
+ the ability to delete any Todos (can_delete_todo
)evil_genius
-editor
+ the ability to edit Todos that don't belong to the user (can_update_todo
)There are 5 users defined (based on the "Rick & Morty" cartoon), each with one (or more) roles, defined below in the Subjects section.
Component description
The interop consists of the following components:
The URIs listed in the document below are the contracts between the React app and the Node.JS backend.
The payloads listed below are the contract between the API Gateway (the PEP) and the PDP.
Subjects
Note: in every request payload, the subject indicated by
<subject_from_jwt>
is one of the following strings:This will be extracted from the
sub
claim in the JWT passed in as a bearer token in the Authorization header of each request, and passed into the AuthZEN request.Attributes associated with users (expected to come from PIP)
These are noted below in JSON format, with the key being the PID string from the table above, and the value being a set of attributes associated with the user.
The PIP can, of course, express this in any way they desire. The policy for each implementation has its own contract with its PIP, and this contract is outside of the scope of the PEP-PDP interop scenario.
Requests and payloads
Unless otherwise noted, these are payloads for the
evaluation
API, and are meant to be sent using the following HTTP(S) request:GET /users/{userId}
Get information (e.g. email, picture) associated with a user. This is used by the backend to render the picture of the user that owns each todo.
For simplicity, the policy always returns
true
.Request payload
Response payload
For every subject and resource combination:
GET /todos
Get the list of todos.
Evaluation API payload
For simplicity, the policy always returns
true
for every user.Evaluation API Request payload
Evaluation API Response payload
For every subject and resource combination:
POST /todos
Create a new todo.
The policy evaluates the subject's
roles
attribute to determine whether the user can create a new todo.Request payload
Response payload
Only users with a
roles
attribute that containsadmin
oreditor
return atrue
decision. In the user set above, this includes Rick, Morty, and Summer.For the other two users, Beth and Jerry, the decision is
false
.PUT /todos/{todoId}
Edit (complete) a todo.
The policy allows the operation if the subject's
roles
attribute contains theevil_genius
role OReditor
role.The Node.js back-end allows users with the
evil_genius
role to complete ANY todos, but only allows users with theeditor
role to complete their own Todos.However, given the fact that the incoming HTTP request DOES NOT include information about the owner of the Todo, the API Gateway, which only performs medium-grained authorization, allows any
editor
orevil_genius
to execute this operation (which means) passing it to the Todo back-end to perform fine-grained authorization.Request payload
Response payload
Only users with a
roles
attribute that containsevil_genius
(Rick), OReditor
(Morty and Summer), return atrue
decision.For the user Morty, the following request will return a
true
decision:For Jerry (who is a
viewer
), the decision will befalse
:DELETE /todos/{todoId}
Delete a todo.
The policy allows the operation if the subject's
roles
attribute contains theadmin
role OReditor
role.The Node.js back-end allows users with the
admin
role to complete ANY todos, but only allows users with theeditor
role to complete their own Todos.However, given the fact that the incoming HTTP request DOES NOT include information about the owner of the Todo, the API Gateway, which only performs medium-grained authorization, allows any
editor
oradmin
to execute this operation (which means) passing it to the Todo back-end to perform fine-grained authorization.Request payload
Response payload
Only users with a
roles
attribute that containsadmin
(Rick), OReditor
(Morty and Summer), return atrue
decision.For the user Morty, the following request will return a
true
decision:For Jerry (who is a
viewer
), the decision will befalse
: