Skip to content

Commit 8d7a85e

Browse files
Merge pull request #3373 from anupras-mohapatra-arm/servers-and-cloud-computing
Keycloak on Azure LP editorial review
2 parents 103e2d2 + af7f83c commit 8d7a85e

6 files changed

Lines changed: 172 additions & 239 deletions

File tree

content/learning-paths/servers-and-cloud-computing/keycloak-cobalt/_index.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
---
2-
title: Deploy Keycloak on Azure Cobalt 100 Arm64 virtual machines for identity and access management
3-
4-
draft: true
5-
cascade:
6-
draft: true
2+
title: Deploy Keycloak on Azure Cobalt 100-based Arm64 virtual machines for identity and access management
73

84
description: Learn how to install and configure Keycloak on an Azure Cobalt 100 Arm64 virtual machine, integrate it with PostgreSQL, configure OAuth2/OpenID Connect authentication, and secure applications using centralized identity management.
95

@@ -12,14 +8,14 @@ minutes_to_complete: 90
128
who_is_this_for: This is an introductory topic for developers, DevOps engineers, platform engineers, and cloud architects who want to deploy centralized authentication and identity management using Keycloak on Arm-based cloud environments.
139

1410
learning_objectives:
15-
- Install and configure Keycloak on Azure Cobalt 100 Arm64 virtual machines
11+
- Install and configure Keycloak on Azure Cobalt 100-based Arm64 virtual machines
1612
- Configure PostgreSQL as the backend database for Keycloak
1713
- Configure realms, users, and OAuth2/OpenID Connect clients
1814
- Integrate a Flask application with Keycloak authentication
1915
- Validate OAuth2/OpenID Connect authentication workflows
2016

2117
prerequisites:
22-
- A [Microsoft Azure account](https://azure.microsoft.com/) with access to Cobalt 100 based instances (Dpsv6)
18+
- A [Microsoft Azure account](https://azure.microsoft.com/) with access to Cobalt 100-based instances (Dpsv6)
2319
- Basic knowledge of Linux command-line operations
2420
- Familiarity with SSH and remote server access
2521
- Basic understanding of authentication, OAuth2, and identity management concepts
Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,39 @@
11
---
2-
title: Understand Keycloak on Azure Cobalt 100
2+
title: Understand Keycloak for identity and access management on Azure Cobalt 100-based virtual machines
3+
description: Learn how Keycloak provides IAM, OAuth2/OpenID Connect, and single sign-on for applications running on Arm-based Azure infrastructure.
34
weight: 2
45

56
layout: "learningpathall"
67
---
78

89
## Why run Keycloak on Azure Cobalt 100
910

10-
Keycloak on Arm-based Azure Cobalt 100 processors delivers scalable and efficient identity and access management for modern cloud-native applications. Azure Cobalt 100 processors provide dedicated physical cores per vCPU, which helps deliver predictable performance for authentication workloads, user management, and OAuth2/OpenID Connect flows.
11+
Keycloak delivers scalable and efficient identity and access management for modern cloud-native applications. Azure Cobalt 100 processors provide dedicated physical cores per vCPU, which helps deliver predictable performance for authentication workloads, user management, and OAuth2/OpenID Connect (OIDC) flows.
1112

1213
Keycloak benefits from the strong multi-core performance and energy efficiency of Arm-based Azure infrastructure, making it well suited for enterprise authentication systems, API security, and cloud-native identity platforms.
1314

1415
## Azure Cobalt 100 Arm-based processor
1516

16-
Azure’s Cobalt 100 is Microsoft’s first-generation, in-house Arm-based processor. Built on Arm Neoverse N2, Cobalt 100 is a 64-bit CPU that delivers strong performance and energy efficiency for cloud-native, scale-out Linux workloads. These workloads include web and application servers, data analytics, open-source databases, and caching systems. Running at 3.4 GHz, Cobalt 100 allocates a dedicated physical core for each vCPU, ensuring consistent and predictable performance.
17+
Azure’s Cobalt 100 is Microsoft’s first-generation, in-house Arm-based processor. Built on Arm Neoverse N2, Cobalt 100 is a 64-bit CPU that delivers strong performance and energy efficiency for cloud-native, scale-out Linux workloads.
1718

18-
To learn more, see the Microsoft blog [Announcing the preview of new Azure VMs based on the Azure Cobalt 100 processor](https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353).
19-
20-
## How Keycloak improves authentication and identity management
21-
22-
Keycloak is an open-source Identity and Access Management (IAM) platform that simplifies authentication and authorization for applications and services.
19+
Running at 3.4 GHz, Cobalt 100 allocates a dedicated physical core for each vCPU, ensuring consistent and predictable performance.
2320

24-
Keycloak supports modern authentication standards such as:
25-
26-
- OAuth2
27-
- OpenID Connect (OIDC)
28-
- SAML
21+
To learn more, see the Microsoft blog [Announcing the preview of new Azure VMs based on the Azure Cobalt 100 processor](https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353).
2922

30-
Keycloak provides centralized authentication, allowing users to log in once and securely access multiple applications using Single Sign-On (SSO).
23+
## How Keycloak provides authentication and identity management
3124

32-
Keycloak integrates with web applications, APIs, Kubernetes platforms, microservices, and enterprise identity systems, making it ideal for securing cloud-native workloads.
25+
Keycloak is an open-source identity and access management (IAM) platform that simplifies authentication and authorization for applications and services.
3326

34-
To learn more, see the official [Keycloak documentation](https://www.keycloak.org/documentation).
27+
Keycloak supports modern authentication standards such as OAuth2, OIDC, and Security Asserion Markup Language (SAML). It integrates with web applications, APIs, Kubernetes platforms, microservices, and enterprise identity systems, making it ideal for securing cloud-native workloads.
3528

36-
Keycloak provides several important capabilities for authentication and security management. Its Single Sign-On (SSO) support lets users authenticate once and access multiple applications without logging in again. Centralized Identity Management means you can manage users, roles, groups, and authentication policies from a single platform, while OAuth2 and OpenID Connect support simplifies secure API and application authentication workflows.
29+
Keycloak provides several important capabilities for authentication and security management. With single sign-on (SSO) support, you can authenticate once and access multiple applications without logging in again. With centralized identity management, you can manage users, roles, groups, and authentication policies from a single platform. With OAuth2 and OpenID Connect support, you get simplified secure API and application authentication workflows.
3730

38-
Keycloak also supports Multi-factor Authentication (MFA) for stronger account security, User Federation for integrating with enterprise identity systems such as LDAP and Active Directory, and Role-Based Access Control (RBAC) to control user permissions and application access.
31+
Keycloak also supports multi-factor authentication (MFA) for stronger account security, user federation for integrating with enterprise identity systems such as LDAP and Active Directory, and role-based access control (RBAC) to control user permissions and application access.
3932

40-
In this Learning Path, you'll deploy Keycloak on an Azure Cobalt 100 Arm64 virtual machine and configure PostgreSQL as the backend database. You'll create realms, users, and OAuth2/OpenID Connect clients, then integrate a Flask application with Keycloak authentication.
33+
To learn more about Keycloak, see the official [Keycloak documentation](https://www.keycloak.org/documentation).
4134

4235
## What you've learned and what's next
4336

44-
You now understand why Azure Cobalt 100 and Keycloak are a strong combination for scalable authentication and identity management workloads. Next, you'll create the virtual machine that will run Keycloak and the Flask OAuth2 demo application throughout this Learning Path.
37+
You've now learned why Azure Cobalt 100 and Keycloak are a strong combination for scalable authentication and identity management workloads. You also learned how Keycloak provides support for centralized identity management.
38+
39+
Next, you'll create a virtual machine on Azure that you'll use to run Keycloak and a Flask OAuth2 demo application.
Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,53 @@
11
---
2-
title: Allow access to Keycloak and Flask application on Azure
2+
title: Allow access to Keycloak and the Flask application on Azure
3+
description: Learn how to configure Azure Network Security Group inbound rules for Keycloak, its health endpoint, and a Flask OAuth2 demo application.
34
weight: 4
45

56
### FIXED, DO NOT MODIFY
67
layout: learningpathall
78
---
89

9-
## Configure external traffic for Keycloak and Flask application
10+
## Configure external traffic for Keycloak and the Flask application
1011

11-
To allow external traffic for Keycloak and the Flask OAuth2 demo application on an Azure virtual machine, open the required ports in the Network Security Group (NSG). The NSG can be attached to the virtual machine's network interface or subnet.
12+
To allow external traffic for Keycloak and the Flask OAuth2 demo application on the Azure virtual machine, open the required ports in the network security group (NSG).
1213

1314
{{% notice Note %}}
14-
For more information about Azure setup, see [Getting started with Microsoft Azure Platform](/learning-paths/servers-and-cloud-computing/csp/azure/).
15+
For more information about Azure setup, see [Getting started with Microsoft Azure](/learning-paths/servers-and-cloud-computing/csp/azure/).
1516
{{% /notice %}}
1617

1718
### Add inbound firewall rules in Azure
1819

19-
To expose the required ports for Keycloak and the Flask application, create firewall rules.
20+
To expose the required ports for Keycloak and the Flask application, create firewall rules:
2021

2122
1. Navigate to the [Azure portal](https://portal.azure.com), go to **Virtual Machines**, and select your virtual machine.
2223

23-
![Azure Portal Virtual Machines page with the target Azure Cobalt 100 Arm64 virtual machine selected before configuring network access for Keycloak.#center](images/virtual_machine.png "Azure Virtual Machines page")
24+
![Azure Portal Virtual machines page with the target Azure Cobalt 100-based Arm64 virtual machine selected before configuring network access for Keycloak.#center](images/virtual_machine.png "Azure Virtual machines page")
2425

2526
2. In the left menu, select **Networking**, then select **Network settings**.
2627

27-
![Azure Portal Networking page showing the network settings attached to the Azure Cobalt 100 Arm64 virtual machine for configuring inbound access rules.#center](images/networking.png "Azure VM networking settings")
28+
![Azure Portal Networking page showing the network settings attached to the Azure Cobalt 100-based Arm64 virtual machine for configuring inbound access rules.#center](images/networking.png "Azure VM networking settings")
2829

2930
3. Navigate to **Create port rule**, and select **Inbound port rule**.
3031

3132
![Azure Portal Create port rule menu with Inbound port rule selected for configuring Keycloak and Flask application access.#center](images/port_rule.png "Create inbound firewall rule")
3233

3334
4. Configure inbound security rules for the following ports:
3435

35-
| Port | Purpose |
36-
|---|---|
37-
| 8080 | Keycloak Admin Console |
38-
| 9000 | Keycloak health and management endpoint |
39-
| 5000 | Flask OAuth2 demo application |
36+
| Port | Purpose | Rule name |
37+
|---|---|---|
38+
| `8080` | Keycloak admin console | `allow-keycloak-8080` |
39+
| `9000` | Keycloak health and management endpoint | `allow-keycloak-9000` |
40+
| `5000` | Flask OAuth2 demo application | `allow-flask-5000` |
4041

4142
Use the following settings for each rule:
4243

4344
- **Source:** My IP address
4445
- **Source IP addresses:** *(auto-populated with your current public IP)*
45-
- **Source port ranges:** *
46+
- **Source port ranges:** `* `
4647
- **Destination:** Any
4748
- **Protocol:** TCP
4849
- **Action:** Allow
4950

50-
Use these names:
51-
52-
| Port | Rule Name |
53-
|---|---|
54-
| 8080 | allow-keycloak-8080 |
55-
| 9000 | allow-keycloak-9000 |
56-
| 5000 | allow-flask-5000 |
57-
5851
{{% notice Note %}}
5952
Setting **Source** to **My IP address** restricts access to the ports to your current machine only. If your public IP changes or you need to access the services from another machine, update the source IP in the NSG rule.
6053
{{% /notice %}}
@@ -63,12 +56,13 @@ Setting **Source** to **My IP address** restricts access to the ports to your cu
6356

6457
You can now access:
6558

66-
- Keycloak Admin Console on port **8080**
67-
- Keycloak health endpoint on port **9000**
68-
- Flask OAuth2 demo application on port **5000**
59+
- The Keycloak admin console on port **8080**
60+
- The Keycloak health endpoint on port **9000**
61+
- The Flask OAuth2 demo application on port **5000**
6962

7063
## What you've learned and what's next
7164

72-
You've now configured the Azure Network Security Group to allow incoming traffic for Keycloak and the Flask OAuth2 demo application.
65+
You've now configured the Azure network security group to allow incoming traffic for Keycloak and the Flask OAuth2 demo application that you'll build in the following sections.
66+
67+
Next, you'll install Keycloak on the VM and configure PostgreSQL as the backend database.
7368

74-
Next, you'll deploy Keycloak, configure PostgreSQL integration, and validate OAuth2/OpenID Connect authentication workflows using the Flask application.
Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,66 @@
11
---
2-
title: Create an Azure Cobalt 100 Arm64 virtual machine
2+
title: Create an Azure Cobalt 100-based Arm64 virtual machine
3+
description: Learn how to create an Azure Dpsv6 Arm64 virtual machine powered by Azure Cobalt 100 and connect to it with SSH.
34
weight: 3
45

56
### FIXED, DO NOT MODIFY
67
layout: learningpathall
78
---
89

9-
## Set up the Azure virtual machine
10+
## Set up an Arm-based Azure virtual machine
1011

11-
In this section, you'll launch the Azure portal to create a virtual machine (VM) with the Arm-based Azure Cobalt 100 processor.
12+
In this section, you'll launch the Azure portal to create a virtual machine (VM) powered by the Arm-based Azure Cobalt 100 processor.
1213

13-
This Learning Path focuses on general-purpose virtual machines in the Dpsv6 series. For more information, see the [Microsoft Azure guide for the Dpsv6 size series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dpsv6-series).
14+
You'll create a general-purpose VM in the Dpsv6 series. For more information about this series of VMs, see the [Microsoft Azure guide for the Dpsv6 size series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dpsv6-series).
1415

15-
While the steps to create this instance are included here for convenience, you can also see [Deploy a Cobalt 100 virtual machine on Azure Learning Path](/learning-paths/servers-and-cloud-computing/cobalt/).
16+
For more detailed steps to create a VM, see the [Deploy a Cobalt 100 virtual machine on Azure Learning Path](/learning-paths/servers-and-cloud-computing/cobalt/).
1617

17-
### Create an Arm-based virtual machine in the Azure portal
18+
### Use the Azure portal to create a virtual machine
1819

1920
To create an Azure virtual machine using the Azure portal:
2021

2122
1. Launch the Azure portal and navigate to **Virtual Machines**.
2223
2. Select **Create**, and select **Virtual Machine** from the drop-down list.
23-
3. In the **Basic** tab, fill in the instance details such as **Virtual machine name** and **Region**.
24+
3. In the **Basics** tab, provide instance details such as **Virtual machine name** and **Region**.
2425
4. Select **Ubuntu Pro 24.04 LTS** as the image for your virtual machine, and select **Arm64** as the VM architecture.
2526
5. In the **Size** field, select **See all sizes** and select the D-Series v6 family of virtual machines.
26-
6. Select **D4ps_v6** from the list as shown in the diagram below:
27+
6. Select **D4ps_v6** from the list as shown in the following screenshot:
2728

2829
![Azure Portal showing D-Series v6 VM size selection with D4ps_v6 highlighted#center](images/instance.png "Select D4ps_v6 from the D-Series v6 family")
2930

3031
7. For **Authentication type**, select **SSH public key**.
3132

3233
{{% notice Note %}}
33-
Azure generates an SSH key pair for you and lets you save it for future use. This method is fast, secure, and easy for connecting to your virtual machine.
34+
Azure generates an SSH key pair for you that you can save for future use. This method is fast, secure, and easy for connecting to your VM.
3435
{{% /notice %}}
3536

3637
8. Fill in the **Administrator username** for your VM.
37-
9. Select **Generate new key pair**, and select **RSA SSH Format** as the SSH Key Type.
38+
9. Select **Generate new key pair**, and select **RSA SSH Format** as the **SSH key type**.
3839

3940
{{% notice Note %}}
4041
RSA offers better security with keys longer than 3072 bits.
4142
{{% /notice %}}
4243

4344
10. Give your SSH key a key pair name.
44-
11. In the **Inbound port rules**, select **HTTP (80)** and **SSH (22)** as the inbound ports, as shown in the following image:
45+
11. Under **Inbound port rules**, select **HTTP (80)** and **SSH (22)** as the inbound ports, as shown in the following screenshot:
4546

4647
![Azure Portal inbound port configuration showing SSH and HTTP selected. Check that the required access settings are in place before creating the virtual machine.#center](images/instance1.png "Configure inbound port rules for HTTP and SSH access")
4748

4849
12. Select the **Review + Create** tab and review the configuration for your virtual machine. It should look like the following:
4950

5051
![Azure Portal Review + Create tab showing VM configuration summary ready for deployment#center](images/ubuntu-pro.png "Review VM configuration before creation")
5152

52-
13. When you're happy with your selection, select the **Create** button and then **Download Private key and Create Resource**.
53+
13. When you're happy with your selection, select the **Create** button and then **Download private key and create resource**.
5354

5455
![Azure Portal showing Create button and SSH key download dialog#center](images/instance4.png "Download SSH key and create the virtual machine")
5556

56-
Your virtual machine should be ready and running in a few minutes. You can SSH into the virtual machine using the private key, along with the public IP details.
57+
Your VM should be ready and running in a few minutes. You can SSH into the virtual machine using the private key, along with the public IP details.
5758

5859
![Azure Portal deployment result showing that the virtual machine was created successfully. Look for the successful deployment status and the connection details you will use to access the virtual machine in the next step.#center](images/final-vm.png "Successful VM deployment confirmation")
5960

60-
{{% notice Note %}}To learn more about Arm-based virtual machines in Azure, see "Getting Started with Microsoft Azure" in [Get started with Arm-based cloud instances](/learning-paths/servers-and-cloud-computing/csp/azure/).{{% /notice %}}
61+
{{% notice Note %}}To learn more about Arm-based virtual machines in Azure, see the Azure section in the [Get started with Arm-based cloud instances](/learning-paths/servers-and-cloud-computing/csp/azure/) Learning Path.{{% /notice %}}
6162

62-
### Connect to your virtual machine
63+
## Connect to your virtual machine
6364

6465
Use the private key file you downloaded and the public IP address shown in the Azure portal to connect to your virtual machine.
6566

@@ -71,6 +72,6 @@ Replace `<your-key-name>` with the name of your SSH key pair and `YOUR_PUBLIC_IP
7172

7273
## What you've accomplished and what's next
7374

74-
You've created an Azure Cobalt 100 Arm64 virtual machine running Ubuntu 24.04 LTS with SSH authentication configured. The virtual machine is now ready for installing PostgreSQL, Keycloak, and the Flask OAuth2 demo application.
75+
You've now created an Azure Cobalt 100-based Arm64 virtual machine running Ubuntu 24.04 LTS with SSH authentication configured. The virtual machine is ready for installing PostgreSQL, Keycloak, and the Flask OAuth2 demo application.
7576

76-
Next, you'll install Keycloak on the VM, configure PostgreSQL as the backend database, and deploy a demo OAuth2/OpenID Connect application using Flask.
77+
Next, you'll set up firewall rules to allow external traffic for Keycloak and the demo Flask application.

0 commit comments

Comments
 (0)