【问题标题】:How to get a list of users from azure graph API如何从 azure graph API 获取用户列表
【发布时间】:2019-06-04 03:23:52
【问题描述】:

我正在尝试使用图形 api 从 azure ad 获取用户列表。我通过使用以下查询获得了访问令牌:

https://login.microsoftonline.com/<tenant-Id>/oauth2/token

我收到以下回复:

{
    "token_type": "Bearer",
    "expires_in": "3600",
    "ext_expires_in": "3600",
    "expires_on": "1559555742",
    "not_before": "1559551842",
    "resource": "https://graph.microsoft.com",
    "access_token": "eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFEQ29NcGpKWHJ4VHE5Vkc5dGUtN0ZYUy1XcWZRa2RmUmVnSVJfWE4yLXdYSFZwLXJKdlltcWVzTzAwSmd1V2dJOVVQUVBWbldScjhtZjM1SHhXblhFcWhIMVlWY1Y2NlYS00ZTE1LTQ0NWEtOTM0Ni02YTBhOGQxN2UxOTYvIiwib2lkIjoiYzE0YzFlYmEtYzExMS00ZmMxLTllYjAtYTJmNGMwNjg4MDEyIiwic3ViIjoiYzE0YzFlYmEtYzExMS00ZmMxLTllYjAtYTJkKgCbMg5jElY2I83cKpRos6Jti3SUYIVTYiyF__gMsKzCQWgRZFUWnTi7syaypCrPEExPw_OMRJMNMOrYixTBZjwUi0H6ThGNxQOMt5mXhzvlVYRMdyChdmv4r2-JK-LX9yjBN8BWG78e3FYhWQCRERh5H3zNpdX1ln79QY38mhn-XJViA2vX-VCYqZhoUo-c_iR-_HZ3CLCHxRxgRHtT_oGXuX1Kegxo3F6FsuQ2Vj1WT5VjCRGCi71pY_lU_EROzkLdefS84fur4jBawvd1ccCf8u9U0kYy3xu0m02wNxKPe2Weg"
}

获得令牌后,我指的是link 并使用以下网址获取用户列表:

https://graph.microsoft.com/v1.0/users

并且还在标头中传递令牌但出现以下错误:

{
    "error": {
        "code": "InvalidAuthenticationToken",
        "message": "CompactToken parsing failed with error code: 80049217",
        "innerError": {
            "request-id": "f03e6cc4-1888-406d-9ee4-2558b96e7fb4",
            "date": "2019-06-03T09:22:30"
        }
    }
}

我现在是从邮递员那里做的,但后来必须从 python 脚本中做。谁能建议这里有什么问题。谢谢

【问题讨论】:

    标签: azure api azure-active-directory


    【解决方案1】:

    您似乎正在尝试使用 Microsoft Graph 获取 user list。为此,请参阅以下步骤:

    Azure 门户权限:

    转到您的 azure 门户租户并在 API permissions 菜单上设置以下权限。请参阅下面的屏幕截图:

    查看应用权限如下:

    对专用权限执行相同操作。请参阅下面的专用权限

    您的权限应如下所示:

    请求令牌:

    使用您的凭据向您的令牌端点发送请求。如下:

    解码令牌并检查权限:

    一旦您获得令牌,请确保在 https://jwt.io/ 上您的令牌包含所需的权限,如下所示:

    请求用户列表

    在此阶段将您的令牌添加到Typebearer token 将您的令牌粘贴到令牌文本框并点击发送。

    获取用户列表:

    您将获得如下屏幕截图中指定的用户列表。

    如果您仍有任何问题,请随时分享。谢谢,编码愉快!

    【讨论】:

    • 当我点击Add a permission 并选择Microsoft Graph 时,它要求我输入Delegated PermissionsApplication Permissions。我应该选择什么?
    • 应用程序权限
    • 您好,我已经更新了答案,请查看屏幕截图
    • 我使用的令牌现在已经过期了。我正在提交再次生成令牌的请求,但它给了我相同的令牌。很奇怪。您对如何再次生成新令牌有任何想法
    • 谢谢我让它工作了。只是想检查我是否要创建用户,我需要在广告应用中设置 User.ReadWrite.All 权限。?
    【解决方案2】:

    您可以按照以下步骤操作。

    1.在您的AD应用程序中->API permissions->Add a permission->选择Microsoft Graph->Application permissions->User.Read.All->点击Add permissions->点击Grant admin consent for xxx

    2.使用客户端凭据流获取访问令牌。

    3.然后你可以使用步骤2返回的token调用MS graph api,它应该可以工作。

    【讨论】:

    • 我还使用客户端凭据流获取令牌。我在问题中附上了它的屏幕截图。请让我知道如何使用该令牌进一步调用 MS 图形 API。?
    • @SAndrew 请参阅我的回复中的step 1,您是否为您的广告应用授予了User.Read.All 权限?
    • 您能解释一下第 3 步吗?您在哪里添加了该令牌。我对这个软件 Postman 有点陌生
    • @SAndrew 看第三步的截图,点击Authorization -> 选择Bearer Token -> 粘贴你的token -> Send,不需要在标题中手动写Authorization .
    • 当我点击Add a permission 并选择Microsoft Graph 时,它要求我输入Delegated PermissionsApplication Permissions。我应该选择什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    相关资源
    最近更新 更多