Skip to content

Commit 58cbf2e

Browse files
Move infrastructure & sample overviews to dedicated README files
1 parent 5708d64 commit 58cbf2e

File tree

19 files changed

+178
-296
lines changed

19 files changed

+178
-296
lines changed

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ The first time you run a Jupyter notebook, you'll be asked to install the Jupyte
4949

5050
| Sample Name | Description | Supported Infrastructure(s) |
5151
|:----------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------|:------------------------------|
52-
| [AuthX](./samples/authx/create.ipynb) | Authentication and role-based authorization in a mock HR API. | All infrastructures |
53-
| [AuthX Pro](./samples/authx-pro/create.ipynb) | Authentication and role-based authorization in a mock product with multiple APIs and policy fragments. | All infrastructures |
54-
| [General](./samples/general/create.ipynb) | Basic demo of APIM sample setup and policy usage. | All infrastructures |
55-
| [Load Balancing](./samples/load-balancing/create.ipynb) | Priority and weighted load balancing across backends. | apim-aca, afd-apim (with ACA) |
56-
| [Secure Blob Access](./samples/secure-blob-access/create.ipynb) | Secure blob access via the [valet key pattern](https://learn.microsoft.com/azure/architecture/patterns/valet-key). | All infrastructures |
52+
| [AuthX](./samples/authx/README.md) | Authentication and role-based authorization in a mock HR API. | All infrastructures |
53+
| [AuthX Pro](./samples/authx-pro/README.md) | Authentication and role-based authorization in a mock product with multiple APIs and policy fragments. | All infrastructures |
54+
| [General](./samples/general/README.md) | Basic demo of APIM sample setup and policy usage. | All infrastructures |
55+
| [Load Balancing](./samples/load-balancing/README.md) | Priority and weighted load balancing across backends. | apim-aca, afd-apim (with ACA) |
56+
| [Secure Blob Access](./samples/secure-blob-access/README.md) | Secure blob access via the [valet key pattern](https://learn.microsoft.com/azure/architecture/patterns/valet-key). | All infrastructures |
5757

5858
### ▶️ Running a Sample
5959

infrastructure/afd-apim/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Front Door & API Management & Container Apps Infrastructure
22

3-
Secure architecture that takes all traffic off the public Internet once Azure Front Door is traversed. This is due to Front Door's use of a private link to Azure API Management.
3+
Secure architecture that takes all traffic off the public Internet once Azure Front Door is traversed. Traffic behind the Front Door is subsequently inaccessible to the public. This is due to Front Door's use of a private link to Azure API Management.
44

55
<img src="./Azure Front Door, API Management & Container Apps Architecture.svg" alt="Diagram showing Azure Front Door, API Management, and Container Apps architecture. Azure Front Door routes traffic to API Management, which then routes to Container Apps. Telemetry is sent to Azure Monitor." title="Azure Front Door, API Management & Container Apps Architecture" width="1000" />
66

@@ -17,4 +17,6 @@ Adjust the `user-defined parameters` in this lab's Jupyter Notebook's [Initializ
1717

1818
## ▶️ Execution
1919

20-
1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.
20+
👟 **Expected *Run All* runtime: ~13 minutes**
21+
22+
1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.

infrastructure/afd-apim/create.ipynb

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,5 @@
11
{
22
"cells": [
3-
{
4-
"cell_type": "markdown",
5-
"metadata": {},
6-
"source": [
7-
"# Infrastructure: Azure Front Door to API Management via Private Link\n",
8-
"\n",
9-
"Sets up the infrastructure for an Azure Front Door Premium instance to connect to API Management via a private link. API Management is not accessible publicly at all and can only be reached via the private link.\n",
10-
"\n",
11-
"⌚ **Expected *Run All* runtime: ~13 minutes**"
12-
]
13-
},
143
{
154
"cell_type": "markdown",
165
"metadata": {},

infrastructure/apim-aca/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ Adjust the `user-defined parameters` in this lab's Jupyter Notebook's [Initializ
1616

1717
## ▶️ Execution
1818

19-
1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.
19+
👟 **Expected *Run All* runtime: ~5 minutes**
20+
21+
1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.

infrastructure/apim-aca/create.ipynb

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,5 @@
11
{
22
"cells": [
3-
{
4-
"cell_type": "markdown",
5-
"metadata": {},
6-
"source": [
7-
"# Infrastructure: API Management using Azure Container Apps as its API backends\n",
8-
"\n",
9-
"Sets up the infrastructure for API Management to connect to backend APIs hosted in Azure Container Apps. \n",
10-
"\n",
11-
"This simplified setup uses public endpoints on the container apps. It _may_ eventually switch to using VNet or private link. \n",
12-
"\n",
13-
"⌚ **Expected *Run All* runtime: ~5 minutes**"
14-
]
15-
},
163
{
174
"cell_type": "markdown",
185
"metadata": {},

infrastructure/simple-apim/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,6 @@ Adjust the `user-defined parameters` in this lab's Jupyter Notebook's [Initializ
1515

1616
## ▶️ Execution
1717

18-
1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.
18+
👟 **Expected *Run All* runtime: ~3 minutes**
19+
20+
1. Execute this lab's [Jupyter Notebook](./create.ipynb) step-by-step or via _Run All_.

infrastructure/simple-apim/create.ipynb

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,5 @@
11
{
22
"cells": [
3-
{
4-
"cell_type": "markdown",
5-
"metadata": {},
6-
"source": [
7-
"# Infrastructure: Simple API Management\n",
8-
"\n",
9-
"Sets up the infrastructure for a simple API Management setup with a publicly-accessible APIM instance.\n",
10-
"\n",
11-
"⌚ **Expected *Run All* runtime: ~3 minutes**"
12-
]
13-
},
143
{
154
"cell_type": "markdown",
165
"metadata": {},

samples/_TEMPLATE/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Samples: [TEMPLATE NAME]
2+
3+
[BRIEF SAMPLE DESCRIPTION]
4+
5+
⚙️ **Supported infrastructures**: [Comma-separated names of the supported infrastructures or "All infrastructures"]
6+
7+
👟 **Expected *Run All* runtime (excl. infrastructure prerequisite): ~[NOTEBOOK RUNTIME] minute**
8+
9+
## 🎯 Objectives
10+
11+
1. [LEARNING / EXPERIMENTATION OBJECTIVE 1]
12+
1. [LEARNING / EXPERIMENTATION OBJECTIVE 2]
13+
1. ...
14+
15+
## 📝 Scenario
16+
17+
[IF THE SAMPLE IS DEMONSTRATED THROUGH A USE CASE OR SCENARIO, PLEASE DETAIL IT HERE. OTHERWISE, DELETE THIS SECTION]
18+
19+
## 🛩️ Lab Components
20+
21+
[DESCRIBE IN MORE DETAIL WHAT THIS LAB SETS UP AND HOW THIS BENEFITS THE LEARNER/USER.]
22+
23+
## ⚙️ Configuration
24+
25+
1. Decide which of the [Infrastructure Architectures](../../README.md#infrastructure-architectures) you wish to use.
26+
1. If the infrastructure _does not_ yet exist, navigate to the desired [infrastructure](../../infrastructure/) folder and follow its README.md.
27+
1. If the infrastructure _does_ exist, adjust the `user-defined parameters` in the _Initialize notebook variables_ below. Please ensure that all parameters match your infrastructure.

samples/_TEMPLATE/create.ipynb

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,5 @@
11
{
22
"cells": [
3-
{
4-
"cell_type": "markdown",
5-
"metadata": {},
6-
"source": [
7-
"# Samples: [TEMPLATE NAME]\n",
8-
"\n",
9-
"[BRIEF SAMPLE DESCRIPTION]\n",
10-
"\n",
11-
"⚙️ **Supported infrastructures**: [Comma-separated names of the supported infrastructures or \"All infrastructures\"]\n",
12-
"\n",
13-
"⌚ **Expected *Run All* runtime (excl. infrastructure prerequisite): ~[NOTEBOOK RUNTIME] minute**\n",
14-
"\n",
15-
"## 🎯 Objectives\n",
16-
"\n",
17-
"1. [LEARNING / EXPERIMENTATION OBJECTIVE 1]\n",
18-
"1. [LEARNING / EXPERIMENTATION OBJECTIVE 2]\n",
19-
"1. ...\n",
20-
"\n",
21-
"## 📝 Scenario\n",
22-
"\n",
23-
"[IF THE SAMPLE IS DEMONSTRATED THROUGH A USE CASE OR SCENARIO, PLEASE DETAIL IT HERE. OTHERWISE, DELETE THIS SECTION]\n",
24-
"\n",
25-
"## 🧩 Lab Components\n",
26-
"\n",
27-
"[DESCRIBE IN MORE DETAIL WHAT THIS LAB SETS UP AND HOW THIS BENEFITS THE LEARNER/USER.]\n",
28-
"\n",
29-
"## ⚙️ Configuration\n",
30-
"\n",
31-
"1. Decide which of the [Infrastructure Architectures](../../README.md#infrastructure-architectures) you wish to use.\n",
32-
" 1. If the infrastructure _does not_ yet exist, navigate to the desired [infrastructure](../../infrastructure/) folder and follow its README.md.\n",
33-
" 1. If the infrastructure _does_ exist, adjust the `user-defined parameters` in the _Initialize notebook variables_ below. Please ensure that all parameters match your infrastructure."
34-
]
35-
},
363
{
374
"cell_type": "markdown",
385
"metadata": {},

samples/authX-pro/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Samples: AuthX Pro - Authentication & Authorization
2+
3+
Sets up a more sophisticate authentication (authN) and authorization (authZ) combination for role-based access control (RBAC) to a mock API and its operations.
4+
5+
⚙️ **Supported infrastructures**: All infrastructures
6+
7+
👟 **Expected *Run All* runtime (excl. infrastructure prerequisite): ~2-3 minutes**
8+
9+
## 🎯 Objectives
10+
11+
1. Understand how API Management supports OAuth 2.0 authentication (authN) with JSON Web Tokens (JWT).
12+
1. Learn how authorization (authZ) can be accomplished based on JWT claims.
13+
1. Configure authN and authZ at various levels in the API Management hierarchy - product, API, and API operations
14+
1. Use external secrets in policies.
15+
1. Experience how API Management policy fragments simplify shared logic.
16+
17+
## 📝 Scenario
18+
This sample, compared to the simpler _AuthX_, introduces use of API Management Product and policy fragments to simplify and consolidate shared logic. When considering scaling, consider this as your starting point.
19+
20+
The same two personas from _AuthX_ are at play:
21+
22+
- `HR Administrator` - holds broad rights to the API
23+
- `HR Associate` - has read-only permissions
24+
25+
The API hierarchy is as follows:
26+
27+
1. All APIs / global
28+
This is a great place to do authentication, but we refrain from doing it in the sample as to not affect other samples.
29+
1. HR Product
30+
Perform authentication and authorization for HR_Member in the JWT claims. Continue on success; otherwise, return 401.
31+
1. HR Employee & Benefits APIs

0 commit comments

Comments
 (0)