Fix MCP OAuth mission: Application ID URI cannot be a dev tunnel URL - #3208
Open
Elliot Margot (OwnOptic) wants to merge 1 commit into
Open
Elliot Margot (OwnOptic) wants to merge 1 commit into
Elliot Margot (OwnOptic) wants to merge 1 commit into
Conversation
Elliot Margot (OwnOptic)
requested a review
from April Dunnam (aprildunnam)
as a code owner
August 30, 2026 12:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lab 1.2 of the "Secure an MCP Server with OAuth 2.0" mission asks you to open the HR MCP Server app in Entra ID and replace the Application ID URI with your dev tunnel URL. That edit cannot succeed. Microsoft Entra ID only accepts an
https://identifier URI whose host is a verified domain of the tenant, anddevtunnels.mscannot be verified by anyone, so the save fails with:The supported formats are listed in Restrictions on identifier URIs of Microsoft Entra applications. That page also notes a verified domain may still be required for the
https://scheme even when the tenant's identifier URI policy is switched off, so this is not something a learner can work around in their own tenant. This is what #3193 reports.The step is also unnecessary. In this mission's own server under
docs/special-ops/mcp-oauth/assets/hr-mcp-server-secured/:scpclaim to be the bareHR.Manage(Program.cs,HRMCPServerConfiguration.cs)realmcomes fromAudience, which is the server's client ID (Program.cs)resourcevalue and theresource_metadataURL are built from the incoming request host, so the dev tunnel is picked up automatically (Program.cs)Nothing reads the Application ID URI, so the mission works with the default
api://<client-id>that Lab 1.2 already sets a few steps earlier.What changed, in
docs/special-ops/mcp-oauth/index.md:api://<client-id>, names the exact error, links the Learn page, and explains that the tunnel is still picked up from the request host.appsettings.jsonscope and the Lab 1.4 note now useapi://[YOUR_HR_MCP_SERVER_CLIENT_ID]/HR.Manageinstead of[YOUR_DEVTUNNEL_URL]/HR.Manage.Verified:
markdownlint-cli2with the repo's.markdownlint.jsoncandcspellwith the repo'scspell.jsonboth report zero issues on the changed file, and the added Learn link returns 200. I also checked the siblingmcs-mcpmission, which uses the dev tunnel only as a server URL and has no Entra step, so it needs no change.Closes #3193