A developer has registered an external MCP server in Copilot Studio that provides access to a company's CRM system. The CRM API requires OAuth 2.0 authorization, and the tools should only access CRM records on behalf of the signed-in user (not a shared service account). During testing, the agent is calling CRM tools using the developer's credentials even after other employees test it. What configuration change is needed to ensure each user's CRM access is scoped to their own identity?
Select an answer to reveal the explanation.
Short Explanation and Infographic
Shared credentials in an MCP tool are like everyone logging into CRM with the manager's password—it works, but you lose per-user auditing and access control. Switch to per-user OAuth so the CRM sees each employee's own identity.
Full explanation below image
Full Explanation
In Copilot Studio, when an MCP server requires OAuth 2.0 authentication, the developer can choose between two connection models: (1) a shared service connection where a single set of credentials (typically a service account or app-only token) is used for all users, and (2) a per-user connection where each user must authenticate individually and their own OAuth token is used for API calls.
Option D is correct because the problem—all users appearing to use the developer's credentials—is a symptom of a shared service connection being configured. Switching to a per-user connection model requires each user to authenticate via their own OAuth flow (a sign-in prompt appears the first time they use a tool requiring CRM access). The OAuth app registration must use delegated permissions (acting on behalf of a user) rather than application permissions (acting as the app itself). This ensures CRM records are accessed using the calling user's identity.
Option A is wrong because storing a shared client secret and using a shared token is the same shared-credentials anti-pattern that causes the original problem. A shared OAuth token means all users access CRM as the same identity, with no per-user scoping.
Option B is wrong in its description—while 'Use each user's credentials' sounds correct, this option describes the outcome without accurately describing the required configuration steps (specifically, it omits the need to verify that the OAuth app uses delegated permissions, not application permissions). Option D is more complete and precise.
Option C is wrong because it only partially describes the fix—configuring delegated permissions is necessary but not sufficient. The per-user connection model must also be selected in Copilot Studio's connection settings for the MCP tool. Without changing the connection model, the OAuth app using delegated permissions still might not correctly acquire tokens per user.
Exam tip: For MCP tools requiring per-user data access, two things must align: (1) the OAuth app registration uses delegated permissions, and (2) the Copilot Studio MCP connection is configured as per-user (not shared service). Missing either one will cause the shared-credentials problem. This pattern applies equally to Power Platform connectors and is a fundamental identity concept in Azure and Microsoft 365.