使用Postman访问OAuth2保护的WebAPI
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