码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【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&count=true&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/

    Check endpoints in Azure : https://learn.microsoft.com/en-us/azure/china/resources-developer-guide#check-endpoints-in-azuredevelop

     
     

     

  • 相关阅读:
    OC-手动引用计数内存管理
    企业如何寻找可替代serv-u的国产文件传输系统?
    张量-算术操作函数
    软件工程毕业设计课题(11)基于python的毕业设计python校园二手交易系统毕设作品源码
    计算机毕业设计 基于SpringBoot的“漫画之家”系统的设计与实现 Java实战项目 附源码+文档+视频讲解
    快速了解什么是跳跃表(skip list)
    Mysql字符串类型编码问题
    结合对称加密、非对称加密浅析HTTPS协议
    java计算机毕业设计在线招生系统源代码+系统+数据库+lw文档
    八、自定义映射resultMap
  • 原文地址:https://www.cnblogs.com/lulight/p/17316254.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号