使用User.ReadBasic.All从Azure AD中读取用户时出现权限问题?

里卡多·菲盖雷多(Ricardo Figueiredo)

我正在尝试获取天蓝色的用户,并且遇到权限错误,即使不是我放置我的用户,为什么?不应该是我不需要管理员同意的东西吗?任何帮助表示赞赏!


            IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
                .Create("****")
                .WithTenantId("****")
                .WithClientSecret("***")
                .Build();

            ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
            // Create a new instance of GraphServiceClient with the authentication provider.
            GraphServiceClient graphClient = new GraphServiceClient(authProvider);

            var user = await graphClient.Users
                .Request()
                .WithScopes(graphScopes)
                .Select(u => new {
                    u.DisplayName
                })
                .GetAsync();
    ```

对于此问题,您似乎无权获取用户。您可以参考图api文档,需要如下所示的权限:

在此处输入图片说明

因此,请转到在您的天蓝色广告中注册的应用程序,然后单击“ API权限”,然后在其中添加权限。

在此处输入图片说明

在此处输入图片说明

After add the permissions, please do not forget click "Grand admin consent for xxx".

For the question why it still failed when you change the Users to me. You use client credential flow to do authentication to request the graph api, you just provide the information of clientId, tenantId and clientSecret. So it doesn't contain a user(or yourself) information. So you can't use .Me. If you want to use .Me, you can use password grant flow. It contains the user information, so system know who is .Me.

================================Update==============================

如果您要使用委托权限(例如User.ReadBasic.All),则不能使用client_credential。现在您的代码使用client_credential流,访问令牌不包含用户身份。我在下面提供了一个用户名/密码流示例(并使用委托权限User.ReadBasic.All)供您参考f:

在已注册应用的“ API权限”标签中,我只添加一个权限User.ReadBasic.All

在此处输入图片说明

代码如下图所示:

using Microsoft.Graph;
using Microsoft.Graph.Auth;
using Microsoft.Identity.Client;
using System;
using System.Security;

namespace ConsoleApp3
{
    class Program
    {
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
            .Create("<clientId>")
            .WithTenantId("<tenantId>")
            .Build();

            string[] scopes = new string[] { "https://graph.microsoft.com/.default" };

            UsernamePasswordProvider authProvider = new UsernamePasswordProvider(publicClientApplication, scopes);

            GraphServiceClient graphClient = new GraphServiceClient(authProvider);

            var str = "<your password>";
            var password = new SecureString();
            foreach (char c in str) password.AppendChar(c);

            var users = await graphClient.Users.Request().WithUsernamePassword("<your account/email>", password).GetAsync();

            Console.WriteLine(users.Count);
        }
    }
}

并且在运行代码之前,您需要做一次“同意使用该应用程序”。您需要按以下方式浏览网址:https://login.microsoftonline.com/<tenantId>/oauth2/v2.0/authorize?client_id=<clientId>&response_type=code&redirect_uri=<redirectUri>&response_mode=query&scope=openid https://graph.microsoft.com/.default&state=12345在浏览器中,页面将显示为:在此处输入图片说明

单击“接受”,然后可以运行代码以获取成功的用户列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Groups.ReadBasic.All的替代方法-未经管理员同意即可访问组

来自分类Dev

资源“00000003-0000-0000-c000-000000000000”上不存在的范围“Mail.ReadBasic.All”

来自分类Dev

使用Azure AD Graph客户端API更改用户密码的权限问题

来自分类Dev

使用fscanf读取C中的坐标时出现问题

来自分类Dev

在管道中使用脚本时如何读取用户输入

来自分类Dev

尝试使用外部域中的用户名更改本地 Azure AD B2C 用户的密码时出现错误 AADSTS50034

来自分类Dev

通过GRAPH更新Azure AD中的用户时出现Json序列化错误

来自分类Dev

默认情况下,使用 azure AD 会向所有用户授予权限。

来自分类Dev

想要从用户读取用户名时,已经设置了$ USER

来自分类Dev

获取Azure AD用户的组时遇到问题

来自分类Dev

Apache Shiro-使用数据库读取用户,角色和权限

来自分类Dev

使用SQL ALL运算符时出现问题

来自分类Dev

在尝试使用Firebase创建帐户时创建用户文档时出现“无法读取未定义的属性'user'”

来自分类Dev

通过访问令牌,使用Azure DevOps中的REST API获取用户详细信息

来自分类Dev

Office 365 Exchange Online的Azure AD门户中新的“读取用户和共享邮件”委托作用域的目的是什么

来自分类Dev

C:使用fget读取用户输入时出现细分错误

来自分类Dev

在Mac上使用apache2时出现权限问题

来自分类Dev

仅使用Azure AD身份时如何将用户添加到新Azure API Management开发人员门户的Administrators组中?

来自分类Dev

在角度应用程序中添加Azure AD身份验证(带有MSAL)时,CORS出现问题

来自分类Dev

使用 Xcode 和 Fastlane 在 Azure DevOps Pipelines 中对 iOS 应用程序进行代码签名时出现问题

来自分类Dev

使用Apache POI在Java中读取/写入Excel文件时出现问题

来自分类Dev

结合使用Azure AD App权限时,将永远运行到'serviceUnavailable'SharePoint图查询中

来自分类Dev

使用 Powershell 查询 Azure AD 以查找哪些用户可以访问 Azure 中的不同资源

来自分类Dev

使用Python在用户输入中制作数组时出现问题

来自分类Dev

使用Azure AD时将用户重定向到自定义登录页面

来自分类Dev

使用awk读取系统文件时出现问题

来自分类Dev

使用扫描仪读取文件时出现问题

来自分类Dev

使用Magik.net读取图像时出现问题。

来自分类Dev

使用nfs rootfs读取tty时出现问题

Related 相关文章

  1. 1

    Groups.ReadBasic.All的替代方法-未经管理员同意即可访问组

  2. 2

    资源“00000003-0000-0000-c000-000000000000”上不存在的范围“Mail.ReadBasic.All”

  3. 3

    使用Azure AD Graph客户端API更改用户密码的权限问题

  4. 4

    使用fscanf读取C中的坐标时出现问题

  5. 5

    在管道中使用脚本时如何读取用户输入

  6. 6

    尝试使用外部域中的用户名更改本地 Azure AD B2C 用户的密码时出现错误 AADSTS50034

  7. 7

    通过GRAPH更新Azure AD中的用户时出现Json序列化错误

  8. 8

    默认情况下,使用 azure AD 会向所有用户授予权限。

  9. 9

    想要从用户读取用户名时,已经设置了$ USER

  10. 10

    获取Azure AD用户的组时遇到问题

  11. 11

    Apache Shiro-使用数据库读取用户,角色和权限

  12. 12

    使用SQL ALL运算符时出现问题

  13. 13

    在尝试使用Firebase创建帐户时创建用户文档时出现“无法读取未定义的属性'user'”

  14. 14

    通过访问令牌,使用Azure DevOps中的REST API获取用户详细信息

  15. 15

    Office 365 Exchange Online的Azure AD门户中新的“读取用户和共享邮件”委托作用域的目的是什么

  16. 16

    C:使用fget读取用户输入时出现细分错误

  17. 17

    在Mac上使用apache2时出现权限问题

  18. 18

    仅使用Azure AD身份时如何将用户添加到新Azure API Management开发人员门户的Administrators组中?

  19. 19

    在角度应用程序中添加Azure AD身份验证(带有MSAL)时,CORS出现问题

  20. 20

    使用 Xcode 和 Fastlane 在 Azure DevOps Pipelines 中对 iOS 应用程序进行代码签名时出现问题

  21. 21

    使用Apache POI在Java中读取/写入Excel文件时出现问题

  22. 22

    结合使用Azure AD App权限时,将永远运行到'serviceUnavailable'SharePoint图查询中

  23. 23

    使用 Powershell 查询 Azure AD 以查找哪些用户可以访问 Azure 中的不同资源

  24. 24

    使用Python在用户输入中制作数组时出现问题

  25. 25

    使用Azure AD时将用户重定向到自定义登录页面

  26. 26

    使用awk读取系统文件时出现问题

  27. 27

    使用扫描仪读取文件时出现问题

  28. 28

    使用Magik.net读取图像时出现问题。

  29. 29

    使用nfs rootfs读取tty时出现问题

热门标签

归档