An organization is developing a secure reporting system consisting of three components:
1. WebPortal: An Angular Single Page Application (SPA) that allows employees to view their personalized dashboard.
2. ReportAPI: A secured ASP.NET Core Web API (https://api.contoso.com) that retrieves data from a backend database.
3. DataSync: A background daemon service that runs on an on-premises server to upload bulk logs to ReportAPI nightly.
You have the following requirements:
- WebPortal must acquire an access token to call ReportAPI. When a user logs in, ReportAPI must read the user's manager's details from Microsoft Graph on behalf of the signed-in user using the on-behalf-of (OBO) flow.
- DataSync must authenticate using client credentials (client secrets) to POST logs directly to ReportAPI.
- The configuration must follow the principle of least privilege.
- Standard user logins must not be blocked by consent prompts during authentication.
Which configuration correctly implements the permissions, scopes, and token acquisition requests to meet these requirements?
- ARegister ReportAPI, WebPortal, and DataSync in Microsoft Entra ID. In ReportAPI, expose Reports.Read and Logs.Write as delegated scopes. Configure DataSync to request a token using the client credentials flow with the scope set to api://<ReportAPI_Client_ID>/Logs.Write.
- BRegister ReportAPI and WebPortal in Microsoft Entra ID. Generate a Shared Access Signature (SAS) token on the backend storage account with Read, Write, and List permissions. Configure both WebPortal and DataSync to authenticate to ReportAPI using this SAS token.
- Register ReportAPI, WebPortal, and DataSync in Microsoft Entra ID. In ReportAPI, expose the delegated scope Reports.Read and define an application role (application permission) named Logs.Write. Grant ReportAPI the Microsoft Graph delegated permission User.Read.All and perform tenant-wide admin consent. Configure WebPortal to request the scope api://<ReportAPI_Client_ID>/Reports.Read, and configure DataSync to request a token using the client credentials flow with the scope set to api://<ReportAPI_Client_ID>/.default.Answer
- DRegister ReportAPI and WebPortal in Microsoft Entra ID. Create a Key Vault access policy that grants GET permissions to the DataSync service principal. Configure ReportAPI to read authorization scopes directly from Key Vault secrets using the secret name Reports.Read to determine if DataSync is allowed to write logs.