问题描述

如何用Microsoft Graph API给应用添加Microsoft Graph Application Permission

解决方法

一:首先获取Microsoft Graph Application Permission对应的唯一标识GUID

接口:https://microsoftgraph.chinacloudapi.cn/v1.0/servicePrincipals?$search="appId:00000003-0000-0000-c000-000000000000"

  • 00000003-0000-0000-c000-000000000000是Microsoft Graph API对应的AppId。
  • 以Directory.Read.All权限为例,在appRoles中查找权限Directory.Read.All的这项,其中id则是Directory.Read.All的唯一标识。

二:调用Microsoft Graph Update Application接口更新requiredResourceAccess参数

{

"requiredResourceAccess": [

{

"resourceAppId": "00000003-0000-0000-c000-000000000000",

"resourceAccess": [

{

"id": "e1fe6dd8-xxxx-xxxx-xxxx-xxxxxxxxxxxx",

"type": "Scope"

},{

"id": "7ab1d382-xxxx-xxxx-xxxx-xxxxxxxxxxxx",

"type": "Role"

}

]

}

]

}

注:给应用添加Microsoft Graph Delegated Permission,需要在第一步中查找oauth2PermissionScopes中对应的权限Directory.Read.All并且找到对应的id,把第二步中的标黄的type的值修改为Scope,并且把id的值替换掉。

三:如果在第一步获取的权限需要管理员同意,则需要管理员在门户中授予同意,可以通过第一步中获取的权限中的type来区分,如果type是Admin则代表需要管理员同意。

参考内容

  • 给应用添加APIs My organization uses的权限,在第一步执行查询唯一标识时需要根据该应用id来查询,参考如下,查找的结果中oauth2PermissionScopes里的权限对应Scope( Delegated Permission),appRoles里的权限对应Role(Application Permission)

https://microsoftgraph.chinacloudapi.cn/v1.0/servicePrincipals?$search="appId:yourclientid"

Update Application:https://docs.microsoft.com/zh-cn/graph/api/application-update?view=graph-rest-1.0&tabs=http

List servicePrincipals:https://docs.microsoft.com/zh-cn/graph/api/serviceprincipal-list?view=graph-rest-1.0&tabs=http

requiredResourceAccess:https://docs.microsoft.com/zh-cn/graph/api/resources/requiredresourceaccess?view=graph-rest-1.0

 

  • 对于Azure Service Management API和Microsoft Graph API的App Id都是可以从List servicePrincipals中查找到的,建议从接口中查找,以免发生变更时影响使用。比如:

https://microsoftgraph.chinacloudapi.cn/v1.0/servicePrincipals?$search="displayName:Microsoft Graph"&$count=true

https://microsoftgraph.chinacloudapi.cn/v1.0/servicePrincipals?$search="displayName:Azure Service Management"&$count=true

  • user_impersonation的id首先通过上述接口获取到的结果中找到Azure Service Management,也可以在这里找到它对应的user_impersonation的id。

List servicePrincipals:https://docs.microsoft.com/zh-cn/graph/api/serviceprincipal-list?view=graph-rest-1.0&tabs=http

【Azure Developer】如何用Microsoft Graph API管理AAD Application里面的Permissions的更多相关文章

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

    问题描述 查看官方文档" Get a user " , 产生了一个操作示例的想法,在中国区Azure环境中,演示如何获取AAD User信息. 问题解答 使用Microsoft G ...

  2. 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

    问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...

  3. 【Azure Developer】使用Microsoft Graph API 如何批量创建用户,用户属性中需要包含自定义字段(如:Store_code,Store_name等)

    Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关. 它提供统一的可编程模型,可用于访问 Microsoft 365.Windows 10 和企业移动性 + 安全性 ...

  4. 【Azure Developer】使用Microsoft Graph API创建用户时候遇见“401 : Unauthorized”“403 : Forbidden”

    问题描述 编写Java代码调用Mircrosoft Graph API创建用户时,分别遇见了"401 : Unauthorized"和"403 : Forbidden&q ...

  5. AAD Service Principal获取azure user list (Microsoft Graph API)

    本段代码是个通用性很强的sample code,不仅能够操作AAD本身,也能通过Azure Service Principal的授权来访问和控制Azure的订阅资源.(Azure某种程度上能看成是两个 ...

  6. Microsoft Graph API -----起题 Graph API

    最近因为工作需要,接触学习使用了Microsoft Graph API.在看完Microsoft的Graph官方文档之后,也做了一些简单的案例,在Stack Overflow上做过一些回答.整体来说, ...

  7. 【Azure Developer】使用 Microsoft Authentication Libraries (MSAL) 如何来获取Token呢 (通过用户名和密码方式获取Access Token)

    问题描述 在上一篇博文<[Azure Developer]使用 adal4j(Azure Active Directory authentication library for Java)如何来 ...

  8. 【Azure Developer】Python 获取Micrisoft Graph API资源的Access Token, 并调用Microsoft Graph API servicePrincipals接口获取应用ID

    问题描述 在Azure开发中,我们时常面临获取Authorization问题,需要使用代码获取到Access Token后,在调用对应的API,如servicePrincipals接口. 如果是直接调 ...

  9. 【Azure 环境】使用Microsoft Graph PS SDK 登录到中国区Azure, 命令Connect-MgGraph -Environment China xxxxxxxxx 遇见登录错误

    问题描述 通过PowerShell 连接到Microsoft Graph 中国区Azure,一直出现AADSTS700016错误, 消息显示 the specific application was ...

  10. 新版Azure Automation Account 浅析(三) --- 用Runbook管理AAD Application Key

    新版Azure Automation Account 浅析(三) --- 用Runbook管理AAD应用的Key 前篇讲过有一个面向公众的Runbook库,社区和微软一直往其中加入新的Runbook, ...

随机推荐

  1. SpringBoot中Bean的条件装配

    目录 概述 Profile Conditional ConditionalOn ConditionalOnProperty 概述 众所周知,SpringBoot最腻害的地方就是容器,开发人员的日常工作 ...

  2. echarts多条折线图hover的时候添加单位

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. typeScript类型别名

    类型别名 类型别名:是可以给一个类型起一个新的名字 采用关键字 type 例如 type Name=string|number type strType=string|number|boolean; ...

  4. mysql系列基础篇01---通用的语法及分类

    通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库.表.字段) DML: 数据操作语言,用来对数据库表中的数据进行增删改 DQL: 数据查询语言,用来查询数据库中表的记录 DCL: 数 ...

  5. word文档删除空白页

    记住两个快捷键 CTRL+Backspace Shift+Backspace 鼠标箭头放在空白的页面 按住键盘上的快捷键 就可以成功删除了不要天天看营销号设置什么磅值,全选删除啥的 效果如下

  6. svn忽略某个目录后update出现fetching

    忽略某个子目录 在svn udpate一个大目录时忽略特定的子目录,主要是子目录下内容已经单独拉取过,并且这个大目录对于程序来说,可以是只读的. 操作方法:选中要忽略的目录,右键 svn - Unve ...

  7. NLP文本匹配任务Text Matching 有监督训练:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

    NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔).DSSM(双塔).Sentence BERT(双塔)项目实践 0 背景介绍以及相关概念 本项目对3种常用的文本 ...

  8. Xcode常用环境变量与常见使用场景

    在Xcode的工程配置中,与路径相关的都是使用环境变量,这样可以避免使用决定路径时项目移植性差的问题. Xcode常用宏 __FILE__ 当前文件所在目录 __DATE__ 编译日期的字符串,格式为 ...

  9. 通过Demo学WPF—数据绑定(二)

    准备 今天学习的Demo是Data Binding中的Linq: 创建一个空白解决方案,然后添加现有项目,选择Linq,解决方案如下所示: 查看这个Demo的效果: 开始学习这个Demo xaml部分 ...

  10. Window Server+IIS配置实现一台服务器绑定多个HTTPS证书

    参考原文链接:https://blog.csdn.net/lengyiqiu/article/details/89182239 此处做个记录防止丢失: 直接上步骤: 1.选安装好SSL证书,供下面配置 ...