• 【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/

     

     

  • 相关阅读:
    抖音超火的JavaScript和Canvas外太空表盘两款网页制作
    基于Java的汽车票网上预订系统设计与实现(源码+lw+部署文档+讲解等)
    【Redis】Redis最佳实践:键值设计
    【Tailwind CSS】当页面内容过少,怎样让footer保持在屏幕底部?
    java毕业生设计紫陶文化传播与学习交流网站计算机源码+系统+mysql+调试部署+lw
    后端面试---分布式&&微服务
    Maven-快速入门教程
    vue中自定义指令
    RK3399交叉编译问题
    达人评测r9 5900hx和i5 12500h选哪个好
  • 原文地址:https://www.cnblogs.com/lulight/p/17316254.html