Microsoft 身份平台 4-WebApp-your-API/4-1-MyOrg/

Microsoft Identity Platform 4-WebApp-your-API/4-1-MyOrg/

使用时Microsoft Sample Code “如何使用 Microsoft 身份平台(以前称为开发人员的 Azure Active Directory)保护使用 ASP.NET 核心构建的 Web API”

我按照 TodoList 服务的注册步骤添加了 2 个范围(他们建议 1 个范围,但我又添加了 1 个)。 在 TodoListService 中有一个任务 PrepareAuthenticatedClient() Link to code

private async Task PrepareAuthenticatedClient()
        {
            var accessToken = await _tokenAcquisition.GetAccessTokenForUserAsync(new[] { _TodoListScope });
            Debug.WriteLine($"access token-{accessToken}");
            _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        }

我只将默认范围添加到 appsettings.json 配置中,要求您按照 MS 说明在应用程序的配置部分中注册,但是当代码运行时,我获得了访问代码并解码它使用 jwt.ms

我似乎有“scp”:“access_as_editor access_as_user”,

我原以为我只会看到 access_as_user",因为这是在 _TodoListScope 中传递的范围。我应该只看到 1 个还是两者都看到?

如果您在申请注册期间或通过其他方式同意这两个范围,那么您所看到的是预期的,即您应该同时看到这两个范围。这是因为 permissions and consent 在 Azure AD 中的工作方式。当您为资源(例如您的网站 API)请求 访问令牌 时,您之前同意的所有范围 该资源 将被返回,无论您当时是否实际请求该范围。