利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API
微軟動態(tài)CRM專家羅勇 ,回復(fù)337或者20190521可方便獲取本文,同時可以在第一間得到我發(fā)布的最新博文信息,follow me.
配置Dynamics 365 & PowerApps 支持OAuth 2 Client Credentials認(rèn)證參考我前面的博文:Dynamics 365 Online通過OAuth 2 Client Credential授權(quán)(Server-to-Server Authentication)后調(diào)用Web API?。編程方法可以參考這篇博文,為了方便不同的編程語言明白如何通過這個認(rèn)證后調(diào)用調(diào)用Dynamics 365 & PowerApps的Web API,我這里用Fiddler來模擬。
首先是認(rèn)證,請參考?Client Credentials ,值得注意的是,請求body中需要增加傳遞參數(shù)resource,否則后續(xù)調(diào)用Web API會返回401(未認(rèn)證) .我這里直接上Fiddler請求截圖如下:
?
?
簡單解釋下上面請求。是發(fā)起POST請求,請求的URL是:?https://login.windows.net/{{tenantid}}/oauth2/token ,請求URL中的 {{tenantid}} 請?zhí)鎿Q為Azure Tenant的Id。
請求的Body是?grant_type=client_credentials&client_id={{clientid}}&client_secret={{clientsecret}}&resource={{resourceurl}} ,請將 {{clientid}} 替換為注冊App時候生成的Application (client) ID,{{clientsecret}}替換為注冊App時候生成的Client Secret,{{resourceurl}}請換成你要訪問的Dynamics 365 或者PowerApps的URL,比如?https://CRM244271.crm.dynamics.com/ ,注意用要urlencode一下,若用javascript的話,就用?encodeURIComponent 函數(shù)對這個URL進(jìn)行處理,如下圖所示。
?
可以看到截圖,請求成功,請求返回內(nèi)容如下:
?
我格式化一下返回內(nèi)容如下:
{????"token_type":"Bearer",
????"expires_in":"3600",
????"ext_expires_in":"3600",
????"expires_on":"1558408667",
????"not_before":"1558404767",
????"resource":"https://CRM244271.crm.dynamics.com/",
????"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkhCeGw5bUFlNmd4YXZDa2NvT1UyVEhzRE5hMCIsImtpZCI6IkhCeGw5bUFlNmd4YXZDa2NvT1UyVEhzRE5hMCJ9.eyJhdWQiOiJodHRwczovL0NSTTI0NDI3MS5jcm0uZHluYW1pY3MuY29tLyIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2IxOGQzYzZmLTM4YzYtNDkyZC1hMDcwLThiNzUyZjA5ZjBkZS8iLCJpYXQiOjE1NTg0MDQ3NjcsIm5iZiI6MTU1ODQwNDc2NywiZXhwIjoxNTU4NDA4NjY3LCJhaW8iOiI0MlpnWURDVHVDLzRKK1RvamJoOW04NVZILzd3R0FBPSIsImFwcGlkIjoiZjUwMTM0NmMtNGQzMi00MWI5LWIyOTAtMzNmN2JlYTRlYzZhIiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvYjE4ZDNjNmYtMzhjNi00OTJkLWEwNzAtOGI3NTJmMDlmMGRlLyIsIm9pZCI6IjU0YWNmNzczLWNhNDAtNGY0Zi04ZTBlLTc1ZjM3M2M5OTU3NiIsInN1YiI6IjU0YWNmNzczLWNhNDAtNGY0Zi04ZTBlLTc1ZjM3M2M5OTU3NiIsInRpZCI6ImIxOGQzYzZmLTM4YzYtNDkyZC1hMDcwLThiNzUyZjA5ZjBkZSIsInV0aSI6ImNaY25nRUJKbEUyYWV2X1pUUTBJQUEiLCJ2ZXIiOiIxLjAifQ.EGK7DMpm_L9TnTREdw5EVhB6WAPNxGmhhodHm7mJsVtmabrL4UXrupQV8Dy6bq6reCGU3v2uA3mtbJ6HXkSbdL7hbEXnDQ_Iw0TD5a-pnmqz7I27_5D40Ia0ctQJPioo7o5bDhtkn3ppC6a6fXssWglUOwtiu-rZH9Ui_CMkz5azq_SIb4o5rbMrApAbxSsv0F60MIKO3s5zUJS7HSYAk4p6LYtrVLDcAQXEHHGHr-7FjvOn-H42Olg1Ro_EudWgo1zLBLrBJ7lMxK2D48SYvQmPYeueJDmVOCpUWdBubF52oSL6y6rVaFzkegNOJSXPE6m2VGDCe3_gNrMke8_jSg"
}
重要的內(nèi)容是access_token的值,還有就是expires_in,可以知道這個access token獲取后3600秒也就是一個小時后過期。
拿到access token后就可以請求了,我發(fā)起一個GET請求如下:
請求的URL根據(jù)你的操作而定,一般是類似 https://CRM244271.crm.dynamics.com/api/data/v9.1/ 開頭
值得注意的是要在請求頭中添加認(rèn)證信息,這里是類似:Authorization: Bearer {{access token}} 。
?
?可以看到調(diào)用成功,返回了數(shù)據(jù):
?
轉(zhuǎn)載于:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_OAuth2_Client_Credentials_Fiddler_Simulate.html
總結(jié)
以上是生活随笔為你收集整理的利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Laravel模板事项
- 下一篇: 实验三——vlan间路由