使用Postman访问OAuth2保护的WebAPI

时间:2024-03-10 14:44:01

Instantnoodle现时的WebAPI已经受Azure AD保护,平时直接输入URL的方式已经不能够正常访问到WebAPI

所有API都可以Swagger页面找到

http://getazdevnt002.chinacloudapp.cn/sprint9/swagger/ui/index

 

例如请求:http://getazdevnt002.chinacloudapp.cn/sprint9/api/v1/masterdata,请求后会直接提示没有权限

http://getazdevnt002.chinacloudapp.cn/sprint9/api/v1/masterdata

因为受保护的WebAPI需要有授权才能够进入

首先打开一个新的Chrome浏览器窗口,并打开F12高度工具,并在浏览地址栏中输入以下URL

以下是完整的URL地址

https://login.microsoftonline.com/29abf16e-95a2-4d13-8d51-6db1b775d45b/oauth2/authorize?
client_id=c7dab103-ce04-42cd-b199-e510e95334c5
&response_type=token+id_token
&redirect_uri=https://designer-workbench.azurewebsites.net
&response_mode=form_post
&scope=openid
&state=12345
&nonce=7362CAEA-9CA5-4B43-9BA3-34D7C303EBA7
&resource=https://esquel.onmicrosoft.com/705cadd7-d8b2-44f7-9c28-3841c112f04b

从调试工具中Newwork选项卡,Headers中,可以看到Request Headers可以看到返回的参数

 

重新打开Postman,并输入后台WebAPI地址,例如http://getazdevnt002.chinacloudapp.cn/sprint9/api/v1/masterdata,并在Headers中加入Authorization参数,参数的值是请求返回的"Bearer"+空格+AccessToken,再次点击Send已经能够正常返回数据了。

http://getazdevnt002.chinacloudapp.cn/sprint9/api/v1/masterdata

Post方式也是没有问题的

http://getazdevnt002.chinacloudapp.cn/Sprint9/api/v1/stylelibrary/search/1/1

以上即是使用Postman访问受保护的WebAPI的方式

 

或者直接请求的方式

https://login.microsoftonline.com/29abf16e-95a2-4d13-8d51-6db1b775d45b/oauth2/token
grant_type:client_credentials
client_id:741a869c-ce4c-46c0-8794-60a6391293ca
client_secret:QQjwdZJN+ZYK58o7EMZJhzNpxOABTGa1mxttkYhHuZo=
resource:https://esquel.onmicrosoft.com/705cadd7-d8b2-44f7-9c28-3841c112f04b

 

如果做到此步都还是无法获取数据,并且提示401,请联系Wes Chen /GET/IT