@@ -831,7 +831,7 @@ Camp 1 follows six waypoints, each building on the previous one. Click each wayp
831831
832832 ---
833833
834- ??? example "Option A: Device Code Flow (Understaning OAuth)"
834+ ??? example "Option A: Device Code Flow (Understanding OAuth)"
835835
836836 **Best for:** Learning OAuth mechanics, CLI automation, headless environments
837837
@@ -1406,85 +1406,7 @@ az ad app delete --id $APP_ID
14061406
14071407---
14081408
1409- ## Next Steps
1410-
1411- ### Immediate Actions
1412-
1413- - Review your own MCP servers for token exposure
1414- - Migrate hardcoded secrets to Key Vault
1415- - Implement OAuth 2.1 for production servers
1416- - Apply least-privilege RBAC everywhere
1417-
1418- ### Continue the Journey
1419-
1420- Ready for the next challenge? Proceed to:
1421-
1422- ** [ Camp 2: Gateway & Network Security →] ( camp2-gateway/index.md ) **
1423-
1424- Learn about:
1425-
1426- - Gateway patterns for MCP
1427- - Rate limiting and throttling
1428- - Network security controls
1429- - DDoS protection
1430- - Traffic monitoring
1431-
1432- ---
1433-
1434- ## Additional Resources
1435-
1436- - [ Azure Managed Identity Documentation] ( https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/ )
1437- - [ Azure Key Vault Best Practices] ( https://learn.microsoft.com/azure/key-vault/general/best-practices )
1438- - [ OAuth 2.1 Specification] ( https://oauth.net/2.1/ )
1439- - [ OWASP MCP Azure Security Guide] ( https://microsoft.github.io/mcp-azure-security-guide/ )
1440- - [ FastMCP Authentication Documentation] ( https://github.com/jlowin/fastmcp )
1441-
1442- ---
1443-
1444- ## Troubleshooting
1445-
1446- ??? question "Issue: azd up fails with subscription access error"
1447- ** Solution:** Ensure you're logged in with correct subscription:
1448- ```bash
1449- az login
1450- az account set --subscription "<your-subscription-id >"
1451- azd auth login
1452- ```
1453-
1454- ??? question "Issue: Token acquisition fails"
1455- ** Solution:** Ensure you're logged in with ` az login ` and have correct app registration:
1456- ```bash
1457- az login
1458- # Verify tenant
1459- az account show --query tenantId -o tsv
1460- # Re-run registration if needed
1461- ./scripts/register-entra-app.sh
1462- ```
1463-
1464- ??? question "Issue: Key Vault access denied"
1465- ** Solution:** Verify Managed Identity has "Key Vault Secrets User" role:
1466- ```bash
1467- ./scripts/enable-managed-identity.sh
1468- # Check role assignments
1469- azd env get-values | grep AZURE_MANAGED_IDENTITY_PRINCIPAL_ID
1470- ```
1471-
1472- ??? question "Issue: JWT validation fails with 'Invalid audience'"
1473- ** Solution:** Ensure AZURE_CLIENT_ID matches your Entra ID app:
1474- ```bash
1475- azd env get-values | grep -E "AZURE_CLIENT_ID|AZURE_TENANT_ID"
1476- # Verify these match your app registration in Azure Portal
1477- ```
1478-
1479- ??? question "Issue: Can't find deployed container app URL"
1480- ** Solution:** Get deployment information:
1481- ```bash
1482- azd env get-values | grep URL
1483- # Or check in Azure Portal:
1484- # Resource Group → Container App → Overview → Application Url
1485- ```
1486-
1487- ---
1409+ [ Continue: Camp 2 Gateway Security →] ( camp2-gateway/index.md ) { .md-button .md-button--primary }
14881410
14891411---
14901412
0 commit comments