• 【Azure Developer】使用 Microsoft Graph API 获取 AAD User 操作示例


    问题描述

    查看官方文档“ Get a user ” , 产生了一个操作示例的想法,在中国区Azure环境中,演示如何获取AAD User信息。

     

    问题解答

    使用Microsoft Graph API,演示如何获取AAD User信息,因参考文档是针对Global Azure,所以文档种的URL为:

    // Global Azure Microsoft Graph API Host
    GET https://graph.microsoft.com/v1.0/me

     需要修改为

    // 中国区Azure的Microsoft Graph API Host
    GET https://microsoftgraph.chinacloudapi.cn/v1.0//me 

     

    第一步:使用 https://microsoftgraph.chinacloudapi.cn/v1.0/me 来查询自己的用户信息,失败!提示需要Access Token

    那么:如何来获取Access Token呢? 

     

    第二步:使用az login 和az account access-token命令来获取正确的Authentication (Bearer .....) 

    1) 设置登录环境为中国区 Azure

    2) az login 登录,在弹出框种输入Azure用户名及密码

    3) 使用 az account access-token 生成 Access Token

    复制代码
    ##设置Azure 环境为 Azure China Cloud
    az cloud set --name AzureChinaCloud
    
    ##登录
    az login
    
    ## 生成 Access Token
    az account get-access-token
    复制代码

    当使用以上指令生成的 Access Token 放入 https://microsoftgraph.chinacloudapi.cn/v1.0/me 请求,继续错误。错误消息提示 Audience不对 [Access token validation failure. Invalid audience.] 

    jwt.ms 上去解析Access Token后,发现aud使用的是 "https://management.core.chinacloudapi.cn/", 而我们请求的URL 是 https://microsoftgraph.chinacloudapi.cn/

    所以,需要在生成Access Token时,指定 aud, 正确命令为: az account get-access-token --resource 'https://microsoftgraph.chinacloudapi.cn/'

    复制代码
    ## 设置Azure 环境为 Azure China Cloud
    az cloud set --name AzureChinaCloud
    
    ## 登录
    az login
    
    #### 生成 Access Token, 使用默认resource (https://management.core.chinacloudapi.cn/) 作为 aud,
    ##az account get-access-token
    
    ## 修改resource为microsoft graph api
    az account get-access-token --resource 'https://microsoftgraph.chinacloudapi.cn/'
    复制代码

     

    第三步:生成正确的Access Token,访问 Microsoft Graph API 获取me信息,成功

     

     

    第四步:接下来,通过User ID或者UserPrincipalName获取其他用户的信息,一个失误引发的400 Bad Request错误

    思考中。。。 。。。

    明明只是修改请求中的me为User ID,而且这个User ID就是一个真实用户的ID啊!

    400 Bad Request, 是URL 不对吗? 

    仔细,仔细查看Get User接口文档,原来真是没有注意细节啊。

    通过UserID或者User Principal Name的API URL是 https://microsoftgraph.chinacloudapi.cn/v1.0/users/,  因为粗心,丢失了/users。

    复制代码
    # 正确的
    https://microsoftgraph.chinacloudapi.cn/v1.0/users/68b844af-***************************
    
    VS
    
    # 错误的
    https://microsoftgraph.chinacloudapi.cn/v1.0/68b844af-***************************
    复制代码

    终于,大功告成。

     

    附录:其他Graph API获取用户信息示例

    1:获取全部用户信息

    GET https://microsoftgraph.chinacloudapi.cn/v1.0/users

    2:根据mail查找用户

    GET https://microsoftgraph.chinacloudapi.cn/v1.0/users?count=true&filter=startswith(mail,'yourmailaddress')

     

     

    参考资料

     Microsoft Graph API Get a User :https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http

    az account get-access-token : https://learn.microsoft.com/en-us/cli/azure/account?view=azure-cli-latest

    JWT 解析: https://jwt.ms/

     

     

  • 相关阅读:
    web网页设计期末课程大作业——HTML+CSS+JavaScript美食餐饮文化主题网站设计与实现
    天锐绿盾企业内网安全管理软件
    75 寻找旋转排序数组中的最小值
    PageHelper基础知识
    数字时代,商业智能BI的落地意味着什么
    C Primer Plus(6) 中文版 第14章 结构和其他数据形式 14.6 指向结构的指针
    ARM mkv210_image.c 文件详解
    2023NOIP A层联测19 多边形
    什么GAN生成对抗网络?生成对抗网络可以干什么?
    【北亚数据恢复】硬盘出现坏道的数据恢复方案
  • 原文地址:https://www.cnblogs.com/lulight/p/17316254.html