问题描述

在通过REST API的方式来管理APIM资源,需要调用Azure提供的management接口。而这所有的接口,都是需要有Token并且还需要正确的Token。如若不然,就会获取到如下的错误:

{
"error": {
"code": "AuthenticationFailed",
"message": "Authentication failed. The 'Authorization' header is missing."
}
}

OR 

{
"error": {
"code": "AuthenticationFailed",
"message": "Authentication failed."
}
}

如在官方对API调用的介绍中,都是需要设置 Authorization 。

缺少Token和Token错误的截图(使用Postman测试调用Get APIM API List的接口:GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2019-12-01)

本文就从 快速获取Token通过AAD Authorization URL获取Token 两种方式进行介绍。

问题解决

方式一: 快速的从Azure APIM门户中获取Token

PS: 这个方式适用于验证Azure Management的调用方式,或一次性调用等场景。使用的Token权限能力由当前登录Azure门户的用户的权限所决定

1)登录Azure门户,打开API Management服务并选中其中需要操作的APIM对象。

2)点击F12,打开浏览器的开发者模式,进入Networking选项卡

3)刷新页面,在所有请求列表中搜索“ management.chinacloudapi.cn ”,筛选目标请求

4)在请求的 Request Body 中发现 Authorization 值。

演示动画:

方式二: 通过AAD Authorization URL获取Token

PS:此种方式为正确的调用方式,通过发送POST请求获取Token。可以在Coding中长期使用。由在AAD:Azure Active Directory中所使用的服务主体权限所决定。

1)登录Azure 门户,进入AAD页面,选中“ App Registrations ”,然后点击“ + New registration ”按钮

2)输入新注册应用的名称 “ apimDevOpsUser ”,点击“ Register ”按钮。注册成功后,保存下“Tenant”和“Application”值。

3)设置应用客户端密码。选择 “ Certificates & secrets ” 目录,点击“ + New client secret ”按钮,根据提示生产新密钥,然后复制出来保存(PS: 此处的密钥只有第一次创建时可见,此后全是*号代替,所以务必保存下来)

4)回到APIM资源的权限设定页面(IAM), 为新的注册应用赋予 Contributor 权限。(可根据具体需要赋予权限)

6)在Postman中使用POST方式调用接口:https://login.chinacloudapi.cn/{{TENANT}}/oauth2/v2.0/token

Request Type:
POST Request URL:
https://login.chinacloudapi.cn/{{TENANT}}/oauth2/v2.0/token Request Body:
tenant:{{TENANT}}
client_id:{{CLIENT}}
scope:https://management.chinacloudapi.cn/.default
grant_type:client_credentials
client_secret:{{SECRETS}}

PS: scope是非常重要的一个参数,如APIM资源的API的URL为"https://management.chinacloudapi.cn/subscriptions/{...",所以正确的SCOPE是“ https://management.chinacloudapi.cn/.default 

7) 发送请求,获取正确的Token。

演示动画:

获取Token后的正确调用截图:

GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2019-12-01

Authorization: Bearer ....................

参考资料

APIM REST API Document : Apis - Get -- https://docs.microsoft.com/en-us/rest/api/apimanagement/2019-12-01/apis/get

【Azure API 管理】解决调用REST API操作APIM(API Management)需要认证问题(Authentication failed, The 'Authorization' header is missing)的更多相关文章

  1. 【Azure API 管理】API Management如何有效且快速更新呢?如对APIs/Policy等设置内容

    问题描述 APIM中的内容(API, Policy)等内容,如果有需要更新时候,通常可以在Azure APIM门户上操作,通过一个接口一个设置的修改,也可以针对一个接口导入/导出的方式修改.当APIM ...

  2. API管理之YApi实现前后端高度分离

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/11972789.html,多谢,=.=~ 背景描述   前后端分离已成为互联网项目开发的业界标准使 ...

  3. API管理平台XXL-API

    <API管理平台XXL-API> 一.简介 1.1 概述 XXL-API是一个简洁易用API管理平台,提供API的"管理"."文档"."M ...

  4. 【API管理 APIM】APIM中对后端API服务的DNS域名缓存问题

    问题描述 在使用API Management来进行API管理时,当我们后端的API DNS IP地址发生改变或者是API的域名发生改变后,通过APIM请求访问的还是是旧的域名或者IP地址,这是因API ...

  5. API 管理在云原生场景下的机遇与挑战

    作者 | 张添翼 来源 | 尔达Erda公众号 ​ 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...

  6. 【Azure API 管理】为调用APIM的请求启用Trace -- 调试APIM Policy的利器

    问题描述 在APIM中,通过门户上的 Test 功能,可以非常容易的查看请求的Trace信息,帮助调试 API 对各种Policy,在Inbound,Backend, Outbound部分的耗时问题, ...

  7. 【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误

    问题描述 为APIM添加AAD Group时候,等待很长很长的时间,结果添加失败.错误消息为: Write Groups ValidationError :Failed to query Azure ...

  8. 如何通过Azure Service Management REST API管理Azure服务

    通过本文你将了解: 什么是Azure Service Management REST API 如何获取微软Azure 订阅号 如何获取Azure管理证书 如何调用Azure Service Manag ...

  9. 【Azure API 管理】从微信小程序访问APIM出现200的空响应的问题中发现CORS的属性[terminate-unmatched-request]功能

    问题描述 使用微信小程序调用APIM(API Management)中的接口,发现POST和PUT请求被拦截,返回的状态码为200,但是无消息内容. 在小程序中的调用JS代码如: 通过浏览器测试得到的 ...

随机推荐

  1. CSS中常用的函数

    一.CSS函数的用法 设置css的属性值时可以使用css函数,如果color:rgba(20,30,50,0.5),css中有很多这样的函数. 二.常用的CSS函数 a.calc()函数   这个函数 ...

  2. 联想ThinkServer服务器安装CentOS7 Redhat7系统 驱动R110i RAID卡

    1.下载对应版本的驱动(因为联想没有CentOS的驱动用redhat的驱动就可以). 2.进入BIOS里,在高级设置里找到SATA设置,把SATA模式改成RAID(重启后配置raid),sSATA模式 ...

  3. 11.2 uptime:显示系统的运行时间及负载

    uptime命令可以输出当前系统时间.系统开机到现在的运行时间.目前有多少用户在线和系统平均负载等信息. [root@cs6 ~]# uptime   17:02:25 up 1:48, 3 user ...

  4. 11.11 ntsysv:管理开机服务

    ntsysv命令提供了一种基于文本界面的菜单操作方式,以设置不同运行级别下的系统服务启动状态.   -back    在交互界面里,显示Back按钮,而非Cancel按钮 -level    指定运行 ...

  5. 9.1 ps:查看进程

    ps命令 用于列出执行ps命令的那个时刻的进程快照,就像用手机给进程照了一张照片.如果想要动态地显示进程的信息,就需要使用top命令,该命令类似于把手机切换成录像模式.因为ps命令的功能实在是太多了, ...

  6. GO学习-(26) Go语言操作mongoDB

    Go语言操作mongoDB mongoDB是目前比较流行的一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库(NoSQL)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. ...

  7. K8s - Kubernetes重要概念介绍(Cluster、Master、Node、Pod、Controller、Service、Namespace)

    K8s - Kubernetes重要概念介绍(Cluster.Master.Node.Pod.Controller.Service.Namespace)       Kubernetes 是目前发展最 ...

  8. ResNet网络的训练和预测

    ResNet网络的训练和预测 简介 Introduction 图像分类与CNN 图像分类 是指将图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法,是计算机视觉中其他任务,比如目标检测 ...

  9. 实时双频Wi-Fi如何实现下一代车内连接

    实时双频Wi-Fi如何实现下一代车内连接 How real simultaneous dual band Wi-Fi enables next-generation in-vehicle connec ...

  10. Java算法面试题(史上最强、持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...