OAuth 2.0協議在SAP產品中的應用

i042416發表於2018-02-11

阮一峰老師曾經在他的博文理解OAuth 2.0裡對這個概念有了深入淺出的闡述。

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

本文會結合我在SAP做過的專案,來給大家介紹這個協議是如何應用到SAP產品中去的。

我做過的最早的一個和OAuth 2.0相關的專案,是2013年時作為SAP成都研究院CRM開發團隊的一員,參與設計和開發了SAP CRM和社交媒體整合解決方案。該方案實現了Twitter, Facebook和新浪微博等社交媒體和SAP CRM On Premise(以下簡稱SAP CRM)的呼叫中心(Interaction Center)的整合。

通過在SAP CRM後臺配置一個社交媒體賬號,比如某Twitter賬號,使得SAP CRM的後臺作業能夠定期把Twitter網站上@了該Twitter賬號的所有tweets抓取到CRM呼叫中心的收件箱裡供坐席處理。

例如客戶在Twitter官網上發一條@AndrewPang6的tweet, 文字內容如下:

OAuth 2.0協議在SAP產品中的應用

在SAP CRM完成必需的配置之後,該tweet能夠被SAP CRM的後臺作業抓取到CRM呼叫中心。坐席通過在Inbox(收件箱)裡指定相應的搜尋條件,如下圖所示,即可檢索出對應儲存在CRM的tweet。

OAuth 2.0協議在SAP產品中的應用

更多細節參考我的blog: Twitter(also Facebook) is official integrated into CRM 7.0 EHP3

https://blogs.sap.com/2013/11/08/twitteralso-facebook-is-official-integrated-into-crm-70-ehp3/


作為SAP的另一款基於雲的CRM解決方案,SAP Hybris Cloud for Customer(以下簡稱C4C), 毫無疑問也包含了社交媒體的解決方案。

我們還是用上文介紹的SAP CRM呼叫中心的社交媒體使用場景為例。

在C4C系統裡建立一個新的型別為Twitter的Social Medial Channel(社交媒體渠道)。該渠道的型別為Twitter,渠道ID可以由建立者指定:

OAuth 2.0協議在SAP產品中的應用

然後把建立的渠道同某個Twitter賬號繫結。在這個例子裡,我建立的ID為I042416的渠道繫結到了我的Twitter賬號JerryWang_SAP上。完成之後,該Twitter賬號釋出的tweets就能夠被抓取到C4C系統中。

下圖左邊是我建立好的ID為I042416的社交媒體渠道,紅色區域是我的Twitter賬號。右邊的IMPORT RUN包含了一個表格,顯示了三次後臺作業的執行情況。這些後臺作業完成的邏輯就是把JerryWang_SAP這個賬號在Twitter網站上釋出的tweets抓取到C4C去。

OAuth 2.0協議在SAP產品中的應用

以這三條tweets為例:

OAuth 2.0協議在SAP產品中的應用

這三條tweets都成功地被抓取到C4C系統的Service(服務)工作中心,生成對應的Ticket:

OAuth 2.0協議在SAP產品中的應用

點選超連結,能看到Ticket明細。下圖紅色區域的內容來自我在Twitter網站上釋出的其中一條tweet。

OAuth 2.0協議在SAP產品中的應用

等等,到目前為止好像OAuth2.0在這兩個產品裡沒有露面?下面以SAP CRM為例,通過模擬Andrew和一個SAP CRM客戶的對話來介紹OAuth2.0到底是怎麼在社交媒體整合方案中發揮作用的。

背景介紹:這篇文章第一張截圖裡的Pang Andrew,就是SAP CRM社交媒體整合專案裡實現了Twitter渠道同CRM呼叫中心雙向互動的SAP成都研究院的開發人員之一。所以下面和客戶的對話請他出來客串。該對話純屬Jerry虛構,如有雷同純屬巧合。

客戶:SAP您好, 我有一個Twitter賬號,我想把Twitter網站上@了這個賬號的相關tweets同步到SAP CRM的呼叫中心裡。

Andrew: 好的。請提供您的Twitter賬號和密碼。

客戶:賬號我可以提供,為什麼還要提供密碼?

Andrew:有了您的Twitter賬號和密碼,SAP可以使用在RFC 7617裡定義的Basic Authentication方式,呼叫Twitter提供的Read API拿到您希望同步到CRM去的tweets資料。您可以參考下面的wiki定義:

https://en.wikipedia.org/wiki/Basic_access_authentication

客戶: 等等,您提供的這些資訊太過技術化了。這樣吧,我讓我們IT人員來和您溝通。

客戶IT:這個密碼是我們的私人資訊啊,能不能不提供給你們啊?

Andrew: 這個密碼我們可以通過ABAP Security Storage這個技術來儲存在ABAP Netweaver上。這樣,無論SAP的支援人員,還是您企業裡的工作人員都是不可能通過技術手段來竊取到這個密碼的。SAP的安全技術您就放心吧,下面是ABAP Security Storage的官方說明:

https://help.sap.com/saphelp_nw74/helpdata/en/4e/eb2dce10f2398de10000000a42189b/frameset.htm

客戶IT認真閱讀幫助文件中...

客戶IT:除了這個把密碼提供給你們的方式,你們有其他的方式來呼叫Twitter的API麼?

Andrew:早期的Twitter API只支援Basic Authentication, 但是後來Twitter也支援了其他的認證方式。

Twitter允許第三方開發者在官網上建立第三方應用,比如我建立了下圖名為i042416的Twitter應用:

OAuth 2.0協議在SAP產品中的應用

Twitter官網會給這個應用頒發一對Key和Secret作為其唯一標識。

OAuth 2.0協議在SAP產品中的應用

通過這對key和Secret, 我可以構造一個oauth_token,這個oauth_token能向Twitter表明我作為i042416這個應用的身份。我把構造好的oauth_token,作為url的一部分發給您。

完整的url如下圖所示。

這個url是屬於Twitter官網的,因此您可以放心使用。該url對應的網頁會詢問您是否願意讓該Twitter第三方應用取得讀取您tweets的許可權。如果您願意,點選Authorize app按鈕即可。同時Twitter官網也強調了這個應用並不具有窺探您密碼,郵箱地址或者訪問您私信的許可權。

OAuth 2.0協議在SAP產品中的應用

您點選了button之後,Twitter就會返回給我一個access token。利用這個access token,我就可以開工了,在CRM ABAP程式碼裡呼叫Twitter API,讀取您的tweets。

OAuth 2.0協議在SAP產品中的應用

Jerry注: 這是阮一峰老師文章裡提到的OAuth2.0中的認證模式之一: 簡化模式(implicit grant type)

客戶IT: 聽起來不錯!這樣我就不需要把我們公司的Twitter使用者的密碼提供給您了。

但是,這個access token是通過明文的形式被瀏覽器返回的。如果這個access token洩漏了怎麼辦?別有用心者一樣可以用它來幹壞事。

Andrew: 您真專業!那這樣吧,我們換一種方式。這種方式Twitter不會直接把access token通過瀏覽器返回給我,而僅僅返回一個oauth_verifier token。

OAuth 2.0協議在SAP產品中的應用

我拿到這個token之後,會在我的ABAP程式碼裡使用這個verifier token向Twitter伺服器發起請求。Twitter收到我的請求,會給我的應用返回access token。這個access token的獲取過程是發生在ABAP會話期裡的,其他人不可能竊取到。我會使用這個access token來呼叫Twitter API。

另一方面,即使其他人竊取到了瀏覽器返回的oauth_verifier token, 他們也無法通過同樣的方式獲取到access token, 因為他們不知道我Twitter應用的Key和Secret。這下您放心了吧?

OAuth 2.0協議在SAP產品中的應用

Jerry注: 這種方式即阮一峰文章裡介紹的授權碼模式(authorization code)。

客戶IT:恩,放心了,感謝您詳細的講解。那麼我想要在SAP CRM的呼叫中心裡使用這個解決方案,具體該如何開始呢?

Andrew:請閱讀這個SAP note獲得實施的具體步驟: 1832462 - Master Note: How to Implement Social Media Channel API to Integrate with CRM Interaction Center。

擴充套件閱讀

要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

OAuth 2.0協議在SAP產品中的應用
OAuth 2.0協議在SAP產品中的應用

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2151030/,如需轉載,請註明出處,否則將追究法律責任。

相關文章