0

使用Microsoft 示例代码时 “如何使用 Microsoft 身份平台(以前称为 Azure Active Directory for Developers)保护使用 ASP.NET Core 构建的 Web API”

在按照 TodoList 服务的注册步骤(他们建议 1 个范围,但我添加了 1 个附加)时,我添加了 2 个范围。在 TodoListService 中有一个 Task PrepareAuthenticatedClient() 链接到代码

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 还是两者都看到?

4

1 回答 1

0

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

于 2020-08-19T18:35:44.960 回答