Skip to content

Commit 9f4e8d2

Browse files
committed
Deploy Keycloak on Azure Cobalt 100 Arm64 virtual machines for identity and access management
Signed-off-by: odidev <odidev@puresoftware.com>
1 parent 09debb2 commit 9f4e8d2

22 files changed

Lines changed: 866 additions & 0 deletions
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
---
2+
title: Deploy Keycloak on Azure Cobalt 100 Arm64 virtual machines for identity and access management
3+
4+
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.
5+
6+
minutes_to_complete: 90
7+
8+
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.
9+
10+
learning_objectives:
11+
- Install and configure Keycloak on Azure Cobalt 100 Arm64 virtual machines
12+
- Configure PostgreSQL as the backend database for Keycloak
13+
- Configure realms, users, and OAuth2/OpenID Connect clients
14+
- Integrate a Flask application with Keycloak authentication
15+
- Validate OAuth2/OpenID Connect authentication workflows
16+
17+
prerequisites:
18+
- A [Microsoft Azure account](https://azure.microsoft.com/) with access to Cobalt 100 based instances (Dpsv6)
19+
- Basic knowledge of Linux command-line operations
20+
- Familiarity with SSH and remote server access
21+
- Basic understanding of authentication, OAuth2, and identity management concepts
22+
23+
author: Pareena Verma
24+
25+
### Tags
26+
skilllevels: Introductory
27+
subjects: Containers and Virtualization
28+
cloud_service_providers:
29+
- Microsoft Azure
30+
31+
armips:
32+
- Neoverse
33+
34+
tools_software_languages:
35+
- Keycloak
36+
- PostgreSQL
37+
- Flask
38+
- Python
39+
- Java
40+
41+
operatingsystems:
42+
- Linux
43+
44+
further_reading:
45+
- resource:
46+
title: Keycloak Official Website
47+
link: https://www.keycloak.org/
48+
type: website
49+
- resource:
50+
title: Keycloak Documentation
51+
link: https://www.keycloak.org/documentation
52+
type: documentation
53+
- resource:
54+
title: OAuth 2.0 Framework
55+
link: https://oauth.net/2/
56+
type: documentation
57+
- resource:
58+
title: OpenID Connect Documentation
59+
link: https://openid.net/connect/
60+
type: documentation
61+
- resource:
62+
title: Azure Cobalt 100 processors
63+
link: https://techcommunity.microsoft.com/blog/azurecompute/announcing-the-preview-of-new-azure-vms-based-on-the-azure-cobalt-100-processor/4146353
64+
type: documentation
65+
66+
### FIXED, DO NOT MODIFY
67+
# ================================================================================
68+
weight: 1
69+
layout: "learningpathall"
70+
learning_path_main_page: "yes"
71+
---
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# ================================================================================
3+
# FIXED, DO NOT MODIFY THIS FILE
4+
# ================================================================================
5+
weight: 21 # Set to always be larger than the content in this path to be at the end of the navigation.
6+
title: "Next Steps" # Always the same, html page title.
7+
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
8+
---
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
title: Understand Keycloak on Azure Cobalt 100
3+
weight: 2
4+
5+
layout: "learningpathall"
6+
---
7+
8+
## Why run Keycloak on Azure Cobalt 100
9+
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+
12+
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.
13+
14+
## Azure Cobalt 100 Arm-based processor
15+
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+
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.
23+
24+
Keycloak supports modern authentication standards such as:
25+
26+
- OAuth2
27+
- OpenID Connect (OIDC)
28+
- SAML
29+
30+
Keycloak provides centralized authentication, allowing users to log in once and securely access multiple applications using Single Sign-On (SSO).
31+
32+
Keycloak integrates with web applications, APIs, Kubernetes platforms, microservices, and enterprise identity systems, making it ideal for securing cloud-native workloads.
33+
34+
To learn more, see the official [Keycloak documentation](https://www.keycloak.org/documentation).
35+
36+
Keycloak provides several important capabilities for authentication and security management:
37+
38+
- Single Sign-On (SSO): Enables users to authenticate once and access multiple applications securely.
39+
- Centralized Identity Management: Manages users, roles, groups, and authentication policies from a single platform.
40+
- OAuth2 and OpenID Connect Support: Simplifies secure API and application authentication workflows.
41+
- Multi-factor Authentication (MFA): Improves account security using additional authentication methods.
42+
- User Federation: Integrates with enterprise identity systems such as LDAP and Active Directory.
43+
- Role-Based Access Control (RBAC): Controls user permissions and application access securely.
44+
45+
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.
46+
47+
## What you've learned and what's next
48+
49+
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.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
title: Allow access to Keycloak and Flask application on Azure
3+
weight: 4
4+
5+
### FIXED, DO NOT MODIFY
6+
layout: learningpathall
7+
---
8+
9+
## Configure external traffic for Keycloak and Flask application
10+
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+
13+
{{% 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+
{{% /notice %}}
16+
17+
### Add inbound firewall rules in Azure
18+
19+
To expose the required ports for Keycloak and the Flask application, create firewall rules.
20+
21+
1. Navigate to the [Azure portal](https://portal.azure.com), go to **Virtual Machines**, and select your virtual machine.
22+
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+
25+
2. In the left menu, select **Networking**, then select **Network settings**.
26+
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+
29+
3. Navigate to **Create port rule**, and select **Inbound port rule**.
30+
31+
![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")
32+
33+
4. Configure inbound security rules for the following ports:
34+
35+
| Port | Purpose |
36+
|---|---|
37+
| 8080 | Keycloak Admin Console |
38+
| 9000 | Keycloak health and management endpoint |
39+
| 5000 | Flask OAuth2 demo application |
40+
41+
Use the following settings for each rule:
42+
43+
- **Source:** My IP address
44+
- **Source IP addresses:** *(auto-populated with your current public IP)*
45+
- **Source port ranges:** *
46+
- **Destination:** Any
47+
- **Protocol:** TCP
48+
- **Action:** Allow
49+
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+
58+
{{% notice Note %}}
59+
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.
60+
{{% /notice %}}
61+
62+
5. After filling in the details, select **Add** to save each rule.
63+
64+
You can now access:
65+
66+
- Keycloak Admin Console on port **8080**
67+
- Keycloak health endpoint on port **9000**
68+
- Flask OAuth2 demo application on port **5000**
69+
70+
## What you've learned and what's next
71+
72+
You've now configured the Azure Network Security Group to allow incoming traffic for Keycloak and the Flask OAuth2 demo application.
73+
74+
Next, you'll deploy Keycloak, configure PostgreSQL integration, and validate OAuth2/OpenID Connect authentication workflows using the Flask application.
87 KB
Loading
50.5 KB
Loading
71.4 KB
Loading
38.8 KB
Loading
68.7 KB
Loading
84 KB
Loading

0 commit comments

Comments
 (0)