Skip to content

Commit 4f36673

Browse files
Generic OIDC (#212)
* (wip): setting up entra-id * fixing entra id generate token workflow * m2m auth * added token gen * commented out the github env variable * one server only * fixing merge conflicts overwrting * resolving merge conflicts overwrite * removed from scopes.yml * updated readme * added reverted changes to scopes.yml * added reverted changes to scopes.yml * added reverted changes to scopes.yml - 1 * committed my_agent.json by mistake * marking 128 as complete in readme --------- Co-authored-by: Nisha Deborah Philips <nishdeb@amazon.com>
1 parent b493dfa commit 4f36673

File tree

13 files changed

+1405
-35
lines changed

13 files changed

+1405
-35
lines changed

.env.example

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ AUTH_SERVER_EXTERNAL_URL=https://your-domain.com
3030
# =============================================================================
3131
# AUTHENTICATION PROVIDER CONFIGURATION
3232
# =============================================================================
33-
# Choose authentication provider: 'cognito' or 'keycloak'
33+
# Choose authentication provider: 'cognito', 'keycloak', or 'entra'
3434
AUTH_PROVIDER=keycloak
3535

3636
# =============================================================================
@@ -109,14 +109,42 @@ AWS_REGION=us-east-1
109109
# Format: {region}_{random_string}
110110
COGNITO_USER_POOL_ID=us-east-1_XXXXXXXXX
111111

112-
# Cognito App Client ID
112+
# Cognito App Client ID
113113
# Get this from Amazon Cognito console > User Pools > App Integration > App clients
114114
COGNITO_CLIENT_ID=your_cognito_client_id_here
115115

116116
# Cognito App Client Secret
117117
# Get this from Amazon Cognito console > User Pools > App Integration > App clients
118118
COGNITO_CLIENT_SECRET=your_cognito_client_secret_here
119119

120+
# =============================================================================
121+
# MICROSOFT ENTRA ID CONFIGURATION (if AUTH_PROVIDER=entra)
122+
# =============================================================================
123+
124+
# Azure AD Tenant ID (Directory/tenant ID from Azure Portal)
125+
# Format: GUID (e.g., 12345678-1234-1234-1234-123456789012)
126+
# Get from: Azure Portal → Azure Active Directory → Overview → Tenant ID
127+
ENTRA_TENANT_ID=your-tenant-id-here
128+
129+
# Entra ID Application (client) ID
130+
# Format: GUID (e.g., 87654321-4321-4321-4321-210987654321)
131+
# Get from: Azure Portal → App registrations → Your App → Application (client) ID
132+
ENTRA_CLIENT_ID=your-client-id-here
133+
134+
# Entra ID Client Secret (Application secret value)
135+
# Get from: Azure Portal → App registrations → Your App → Certificates & secrets
136+
# NOTE: Copy the secret VALUE immediately after creation (not the secret ID)
137+
ENTRA_CLIENT_SECRET=your-client-secret-here
138+
139+
# Enable Entra ID in OAuth2 providers (set to true when using Entra ID)
140+
ENTRA_ENABLED=false
141+
142+
# Azure AD Group Object IDs for authorization (configured in scopes.yml)
143+
# Admin Group Example
144+
ENTRA_GROUP_ADMIN_ID=your-admin-group-object-id-here
145+
# Users Group Example
146+
ENTRA_GROUP_USERS_ID=your-users-group-object-id-here
147+
120148
# =============================================================================
121149
# APPLICATION SECURITY
122150
# =============================================================================
@@ -170,9 +198,9 @@ DOCKERHUB_TOKEN=your_dockerhub_access_token
170198
# GITHUB_USERNAME=your_github_username
171199
# GITHUB_TOKEN=your_github_personal_access_token
172200

173-
# Container registry organization names
174-
DOCKERHUB_ORG=mcpgateway
175-
GITHUB_ORG=agentic-community
201+
# # Container registry organization names
202+
# DOCKERHUB_ORG=mcpgateway
203+
# GITHUB_ORG=agentic-community
176204

177205
# =============================================================================
178206
# EXTERNAL REGISTRY CONFIGURATION

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ Interactive terminal interface for chatting with AI models and discovering MCP t
130130
## What's New
131131

132132
- **🔗 Agent-to-Agent (A2A) Protocol Support** - Agents can now register, discover, and communicate with other agents through a secure, centralized registry. Enable autonomous agent ecosystems with Keycloak-based access control and fine-grained permissions. [A2A Guide](docs/a2a.md)
133+
- **🏢 Microsoft Entra ID Integration** - Enterprise SSO with Microsoft Entra ID (Azure AD) authentication. Group-based access control, conditional access policies, and seamless integration with existing Microsoft 365 environments. [Entra ID Setup Guide](docs/entra-id-setup.md)
133134
- **🤖 Agentic CLI for MCP Registry** - Talk to the Registry in natural language using a Claude Code-like interface. Discover tools, ask questions, and execute MCP commands conversationally. [Learn more](docs/mcp-registry-cli.md)
134135
- **💬 Interactive MCP-Registry CLI** - Terminal-based chat interface with AI-powered MCP tool discovery. Supports Amazon Bedrock and Anthropic API. [MCP-Registry CLI](docs/mcp-registry-cli.md)
135136
- **🔒 MCP Server Security Scanning** - Integrated vulnerability scanning with [Cisco AI Defence MCP Scanner](https://github.com/cisco-ai-defense/mcp-scanner). Automatic security scans during server registration, periodic registry-wide scans with detailed markdown reports, and automatic disabling of servers with security issues.
@@ -551,7 +552,7 @@ The following GitHub issues represent our current development roadmap and planne
551552
- **[#195 - Add A2A (Agent-to-Agent) Protocol Support to Registry](https://github.com/agentic-community/mcp-gateway-registry/issues/195)****COMPLETE**
552553
Agents can now register, discover, and communicate with other agents through the secure registry. Full implementation includes agent lifecycle management, Keycloak-based access control, fine-grained permissions, comprehensive testing, and documentation. [A2A Guide](docs/a2a.md)
553554

554-
- **[#128 - Add Microsoft Entra ID (Azure AD) Authentication Provider](https://github.com/agentic-community/mcp-gateway-registry/issues/128)** 🚧 **IN PROGRESS**
555+
- **[#128 - Add Microsoft Entra ID (Azure AD) Authentication Provider](https://github.com/agentic-community/mcp-gateway-registry/issues/128)** **COMPLETE**
555556
Extend authentication support beyond Keycloak to include Microsoft Entra ID integration. Enables enterprise SSO for organizations using Azure Active Directory.
556557

557558
- **[#170 - Architectural Proposal: Separate Gateway and Registry Containers](https://github.com/agentic-community/mcp-gateway-registry/issues/170)** 🚧 **IN PROGRESS**

auth_server/oauth2_providers.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,25 @@ providers:
3636
name_claim: "name"
3737
enabled: true
3838

39+
entra:
40+
display_name: "Microsoft Entra ID"
41+
client_id: "${ENTRA_CLIENT_ID}"
42+
client_secret: "${ENTRA_CLIENT_SECRET}"
43+
auth_url: "https://login.microsoftonline.com/${ENTRA_TENANT_ID}/oauth2/v2.0/authorize"
44+
token_url: "https://login.microsoftonline.com/${ENTRA_TENANT_ID}/oauth2/v2.0/token"
45+
user_info_url: "https://graph.microsoft.com/oidc/userinfo"
46+
logout_url: "https://login.microsoftonline.com/${ENTRA_TENANT_ID}/oauth2/v2.0/logout"
47+
# Request basic OIDC scopes - email and groups require optional claims configuration in Azure Portal
48+
scopes: ["openid", "email", "profile"]
49+
response_type: "code"
50+
grant_type: "authorization_code"
51+
# Claims mapping for user info
52+
username_claim: "preferred_username"
53+
groups_claim: "groups"
54+
email_claim: "email"
55+
name_claim: "name"
56+
enabled: true
57+
3958
github:
4059
display_name: "GitHub"
4160
client_id: "${GITHUB_CLIENT_ID}"

0 commit comments

Comments
 (0)