
GraphQL API滲透測試指南
Open Connectors 是簡化和加速 SAP 和第三方解決方案之間集成的絕佳選擇,可用的預構建連接器列表很廣泛: Slack,LinkedIn,Twitter,Google Drive,Facebook,Paypal 等。
如果要查看可用連接器的完整列表,請訪問以下鏈接:https://help.openconnectors.ext.hana.ondemand.com/home/full-list
在閱讀了所提供的功能和優點之后,我有一個簡單的問題困擾著我,如果我的 API 在預構建的連接器列表中不可用怎么辦?是否還有辦法可以使用 Open Connectors 提供的功能?
為了找到答案,我訪問了我的試用帳戶,并開始使用可用的選項。
現有的150+連接器并沒有我的需要,為了實現一個有趣的場景,將 Spotify 與 UI5 應用程序集成,我采用了 Web API 的方法
注意:Spotify API 將在本文中用作示例,但真正的目的是解釋如何使用 Open Connectors,即使您的 API 在預構建連接器列表中不可用。
如果我們在「連接器」列表中搜索 Spotify,我們找不到任何可用的連接器,只有「構建新連接器」選項。
選擇此選項,然后在下一個屏幕中點擊「Import」。
目前,有四種可供選擇的選項:
△ Connector
△ Swagger
△ SOAP
△?OData V4
Connector 是 Open Connectors 本身提供的模式,您可以導出自定義連接器并在不同的租戶中重新導入,Swagger 是一個開源軟件框架,可幫助開發人員設計、構建、記錄和使用 RESTful Web 服務,SOAP 就是消息?Web 服務,用于交換 XML 數據的協議,OData V4 是開放式數據協議,現在主要由 SAP 采用,它提供了一組構建和使用 RESTful API 的最佳實踐,其中包含嵌入在內的元數據和查詢選項等額外功能。
現在我們已經了解了可用的選項,讓我們探索 [Spotify for Developers](https://developer.spotify.com/)?頁面,以了解訪問數據的最佳方式。檢查文檔,我們可以找到以下可選項:
我們來看一下 Web API 文檔。
Spotify Web API 基于簡單的 REST 規則,Spotify Web API 可直接從Spotify 數據目錄返回有關音樂、藝術家、專輯和曲目的 JSON 元數據,這是 UI5 應用程序的完美集成方案!
在 Developer Portal 中可以在 Spotify 的 GitHub 帳戶中,找到 Web API 的定義,您可以通過鏈接訪問 [GitHub Spotify Web API](https://github.com/spotify/web-api/) 。
目前只有一個問題,目前的定義是基于 RAML(RESTful API 建模語言),我們需要找到一種方法,在構建連接器之前將此規范轉換為 Swagger。
有不同的方法可以解決這個問題,但我找到了 [APIMATIC](https://www.apimatic.io/) 。此服務提供了一個 API Transformer,可以快速解決此問題。注冊該服務,然后按「Convert Now」按鈕。
插入 GitHub 項目中可用的 api.raml 文件的 URL,然后按 Convert Now。系統執行腳本,幾秒鐘后您就會收到新的 Swagger Web API 定義的下載。
* Spotify Web API RAML:
https://github.com/spotify/web-api/blob/master/specifications/raml/api.raml
讓我們回到 Open Connectors 并繼續前面的步驟。
導入 Swagger 文件并按 CONTINUE IMPORT。
選擇所有資源,輸入 Element Key,接著單擊 Import 以關閉引導。
連接器是根據 Swagger 文件中的規范生成的,您可以通過新連接器的配置查看以下界面。
注意:RAML 規范將 API 的版本存儲在參數中,但在轉換和上傳Swagger 期間,需要在連接器屬性中修復一個小錯誤,修改 Base URL,刪除 DefaultParameterValue 并替換為 v1。
* 預期的基本 URL:https://api.spotify.com/v1
點擊「Information」選項卡并更新連接器的文檔和徽標。您可以從 [品牌指南](https://developer.spotify.com/branding-guidelines/)?頁面下載其徽標。
現在我們的規范已成功加載,我們只需要調整 Authentication 的設置,并執行連接測試。
要了解可用的身份驗證方法,讓我們再一次探索 Spotify 開發人員文檔,我們可以在[授權指南]中(https://developer.spotify.com/documentation/general/guides/authorization-guide/)?找到我們需要的所有相關信息。
正如官方指南中所述,Spotify API 有兩種方法可以進行身份 驗證:
△ 應用授權
△ 用戶授權
在選擇選項之前,我們首先需要在 [開發人員儀表板中](https://developer.spotify.com/dashboard/applications)??[注冊應用程序](https://developer.spotify.com/documentation/general/guides/app-settings/#register-your-app) 。打開儀表板,然后選擇「創建應用程序」選項。
定義名稱,描述和應用類型。
在第二個屏幕中選擇一個非商業應用程序,移至第三個屏幕,確認協議并提交。現在已創建應用程序,您可以準備好使用客戶端 ID 和客戶端密鑰。
點擊「編輯設置」按鈕…
填寫選項「重定向 URL」,并在白名單使用 SAP 云平臺認證:https://auth.cloudelements.io/oauth。
配置應用程序后,就可以評估文檔,并了解我們如何對 API 進行身份驗證。在官方文檔中,我們可以看到三種不同的授權流程。
為了本文測試,我們將使用 Authorization Code 流程 ,在最復雜的場景中驗證應用程序。使用此選項,我們可以訪問「用戶資源」并在到期時間(通常為1小時)后自動「刷新令牌」。
讓我們檢查一下 Authorization Code 流程中涉及的所有步驟:
注意:應用程序(openconnectors)會觸發初始身份驗證請求,將用戶重定向到 Spotify Accounts Service,他需要確認訪問權限,確認后應用程序將重定向回具有新「訪問令牌」的「OAuth 重定向 URL」。使用此「令牌」,應用程序可以代表用戶執行所有 Web API 操作,如果令牌過期,則通過 Spotify Accounts Service 請求新令牌而無需用戶的交互。
現在是時候回到 Open Connectors,并結束這個新連接器的 Authentication 配置了。選擇 OAuth2 身份驗證方法,您將看到開箱即用的幾個參數。
注意:如果您從未聽說過 OAuth2 ,我建議您查看 [官方文檔](https://oauth.net/2/) 以了解此授權協議的工作原理。
上圖中的參數由 Open Connectors 自動提供,它們基于 OAuth2 規范。讓我們使用 [授權代碼流程中](https://developer.spotify.com/documentation/general/guides/authorization-guide/#authorization-code-flow) 提供的數據更新它們:
△ OAuth授權URL:https://accounts.spotify.com/authorize
△ OAuth API密鑰:<YOUR_CLIENT_ID>
△ OAuth API秘密:<YOUR_CLIENT_SECRET>
△ OAuth回調網址:https://auth.cloudelements.io/oauth
△ OAuth令牌網址:https://accounts.spotify.com/api/token
△ OAuth范圍:用戶讀取私有用戶讀取電子郵件
△ OAuth令牌刷新網址:https://accounts.spotify.com/api/token
△ OAuth刷新間隔:3600
△ OAuth令牌撤銷網址:https://accounts.spotify.com/api/token
△ OAuth基本標題:true
完成此配置后,按「保存」,再次打開「連接器」頁面,這次搜索 Spotify 時,您將看到可供使用的新連接器。
當您將鼠標移到卡片上時,可以看到一些額外的選項,單擊 Authenticate 以啟動該過程并創建一個新實例。
選擇實例的名稱(在我的示例中為 feliperodrigues),打開可選字段并確認「客戶端ID」和「客戶端密鑰」。最后按「創建實例」按鈕。
打開連接器會自動重定向到 Spotify 授權頁面并請求訪問確認。
按下按鈕同意和 Spotify 帳戶服務將重定向到 SAP Cloud Platform,在收到令牌后,SCP 會再次重定向回打開連接器,并顯示以下成功消息:
在用戶的帳戶的 Spotify,打開鏈接 [應用程序](https://www.spotify.com/au/account/apps/)?,并檢查 openconnectors 在授權的應用程序列表中的應用程序,通過該頁面,也可以撤銷訪問。
讓我們回到 Open Connectors 并訪問標題 Test in the API docs。
在此頁面中,您可以看到名為 feliperodrigues 的經過身份驗證的實例以及可用于測試的 API 操作。
向下滾動并打開方法 GET / browse / categories,按下試用按鈕。
現在這些字段可用于已經填充了授權令牌的版本,可以隨意更新過濾器,或者只是按下 Execute 按鈕以首次測試 Web API。
如果一切都按預期運行,您應該收到200作為響應代碼和響應正文中可用的 JSON 中的類別列表。檢查以下結果:
?到這里,已經完成了這個成功的測試。
如果你想繼續這一步,我建議你閱讀 Divya 的文章(第3、4部分)
希望你喜歡這些內容,下次再見。
文章轉自微信公眾號@SAP天天事
GraphQL API滲透測試指南
Python + BaiduTransAPI :快速檢索千篇英文文獻(附源碼)
掌握ChatGPT API集成的方便指南
node.js + express + docker + mysql + jwt 實現用戶管理restful api
nodejs + mongodb 編寫 restful 風格博客 api
表格插件wpDataTables-將 WordPress 表與 Google Sheets API 連接
手把手教你用Python和Flask創建REST API
使用 Django 和 Django REST 框架構建 RESTful API:實現 CRUD 操作
ASP.NET Web API快速入門介紹