ABAP Netweaver服務器的標準登錄方式講解

      網(wǎng)友投稿 826 2022-05-29

      本文繼續(xù)介紹ABAP里的一個知識點:ABAP Netweaver服務器的登錄方式(Standard Logon Procedure).

      ABAP Netweaver服務器的標準登錄方式講解

      本文的英文版最先發(fā)布于SAP社區(qū)博客,我當時負責處理客戶報過來的關于SAP CRM Web Service的incident,遇到一個HTTP 401錯誤消息的知識點,發(fā)現(xiàn)我理解得不夠清楚,因此把SAP幫助文檔找來研究了一番,寫下了這篇博客:

      Learn more detail about Standard logon procedure

      我們在事務碼SICF里隨便打開一個節(jié)點,在標簽頁Logon Data里發(fā)現(xiàn)Procedure這個字段,設置的默認值為Standard,按F1可以查看幫助文檔。

      如果對于SICF節(jié)點在ABAP Netweaver服務器里扮演的角色感興趣,可以參考Jerry的文章:一個13年ABAP老兵的建議:了解這些基礎知識,對ABAP開發(fā)有百利而無一害。

      Logon Procedure幫助文檔鏈接:

      https://help.sap.com/saphelp_me60/helpdata/en/a9/c8b14025a5c54ee10000000a1550b0/content.htm?no_cache=true

      文檔提到,當Procedure設置為Standard時,登錄驗證將會通過下面的順序進行:

      (1) Logon using HTTP fields

      (2) Logon with SSL certificates

      (3) Logon using SAP Logon Ticket (SSO)

      (4) HTTP Basic Authentication

      (5) Logon using SAP user password (SAP RFC logon)

      (6) Logon using SAML

      (7) Logon using user data stored in the service

      下面我們就通過一些具體的例子,來理解這些不同的登錄方式是如何進行的。

      例如直接在瀏覽器里打開某Web Service的WSDL url:

      http://:50078/sap/bc/srt/wsdl/flv_10002A111AD1/bndg_url/sap/bc/srt/rfc/sap/zws_add/506/zjerry1/jerry1?sap-client=506

      輸入url敲回車,我能看到期望中的WSDL內(nèi)容。然而我還觀察到了一些有趣的現(xiàn)象:地址欄里的http自動被轉(zhuǎn)換成了https,同時工具HTTP Watch里觀察到了一個HTTP 307重定向。

      這個從HTTP協(xié)議端口50078自動重定向到HTTPS端口44378的行為,定義在事務碼SMICM的參數(shù)里:

      也可以通過事務碼RZ11,查看參數(shù)icm/HTTP/redirect_0的值。

      然而,此時我根本沒有指定任何用戶名和密碼,為什么我可以成功看到部署在ABAP Netweaver服務器上,需要通過登錄認證后才能訪問的資源?

      這就是標準登錄方式之一的Logon using SAP Logon Ticket (SSO-單點登錄)在起作用。

      摘錄一段SAP幫助文檔里對Logon using SAP Logon Ticket (SSO)的說明:

      Logon using SAP Logon Ticket (MYSAPSSO2 cookie field). If no logon data is transferred as form fields or header fields, the system then tries to log on using a logon ticket. To enable this, the cookie field MYSAPSSO2 must be set.

      用HTTP Watch(Chrome開發(fā)者工具也行)觀察我訪問WSDL發(fā)起的HTTP請求,果然發(fā)現(xiàn)了一個名為MYSAPSSO2的cookie,這是我之前成功登錄服務器之后,服務器頒發(fā)給客戶端的logon ticket. 登錄成功之后,接下來每次再訪問同一服務器時,瀏覽器都會自動將該cookie設置到HTTP請求里,達到無需用戶顯式提供登錄信息,也能成功訪問服務器資源的目的。

      當我將這個MYSAPSSO2 cookie清除之后,再次訪問同一資源,又看到了久違的讓我輸入用戶名和密碼的彈出對話框。

      這次輸入用戶名和密碼之后,再次看到了WSDL內(nèi)容,然而此次成功登錄,采用的方式不是之前的MYSAPSSO2 Logon Ticket,而是基于用戶名和密碼的Basic Authentication方式(下圖藍色高亮區(qū)域)。

      注意到下圖綠色高亮區(qū)域的set-cookie:用戶成功登錄后,服務器頒發(fā)的MYSAPSSO2 cookie,通過HTTP響應的set-cookie字段, 返回給瀏覽器。下一次瀏覽器再訪問該資源時,會自動在HTTP請求里帶上該cookie字段,又重新使用MYSAPSSO2 Logon Ticket的方式進行登錄認證了。

      下面是幾種通過ABAP代碼來訪問Netweaver服務器資源時,如何指定登錄認證信息的例子。

      例1:ABAP代碼里未提供任何登錄認證信息

      SAPGUI里執(zhí)行上圖的ABAP代碼,會遇到一個彈出對話框,只有手動輸入用戶名和密碼,該代碼才能順利取回資源。

      如果添加一行代碼:

      lo_http_client->propertytype_logon_popup = if_http_client=>co_disabled.

      可以阻止用戶名和密碼輸入的對話框彈出,但此時服務器會直接返回HTTP 401 Unauthorized Error:

      例2:在ABAP程序里提供用戶名和密碼的幾種方式

      可以通過如下方式提供明文的用戶名和密碼:

      也可以在事務碼SM59里創(chuàng)建一個類型為H:HTTP Connection to ABAP System的Destination:

      將用戶名和密碼維護到這個Destination的Logon & Security頁面的對應字段去:

      然后基于這個Destination創(chuàng)建cl_http_client的實例。這種方式安全性比在代碼里直接明文指定用戶名和密碼要好一些。

      當然我也試過,將MYSAPSSO2的cookie值拷貝出來:

      直接通過set_cookie方法設置給cl_http_client的實例,一樣可以成功訪問系統(tǒng)里的資源。

      只是cookie有時效性,會過期,因此在生產(chǎn)場景的代碼中,需要現(xiàn)用現(xiàn)取。關于ABAP CL_HTTP_CLIENT有關cookie的詳細使用方式,請參考我的博客:

      Regarding cookie manipulation in CL_HTTP_CLIENT to avoid CSRF token validation failure issue

      大家下次如果遇到有關HTTP請求和服務器登錄認證的相關問題,不妨按照Jerry本文介紹的方法,通過使用HTTP Watch和Chrome開發(fā)者工具,以及查閱SAP幫助文檔的方式自行研究,感謝閱讀。

      ABAP ERP

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      上一篇:Python爬蟲利器之Beautiful Soup入門詳解,實戰(zhàn)總結(jié)!!!
      下一篇:Google Earth Engine(GEE)——geemap介紹(PYTHON API)
      相關文章
      天天综合亚洲色在线精品| 国产精品久久久久久亚洲影视 | 亚洲视频人成在线播放| 亚洲欧美中文日韩视频| 亚洲AV无码国产丝袜在线观看| 精品国产亚洲男女在线线电影| 天天综合亚洲色在线精品| 亚洲AV色欲色欲WWW| 亚洲人成电影网站色www| 亚洲熟妇AV日韩熟妇在线| 在线观看亚洲AV日韩AV| 亚洲最大av资源站无码av网址| 亚洲人成图片网站| 精品亚洲成A人无码成A在线观看| 亚洲欧洲中文日产| 久久精品国产亚洲AV久| 久久精品国产亚洲AV久| 亚洲依依成人亚洲社区| 亚洲国产午夜精品理论片在线播放| 亚洲一区二区三区成人网站 | 国产综合亚洲专区在线| 中文字幕久久亚洲一区| 亚洲午夜福利在线观看| 亚洲成A人片在线观看WWW| 亚洲国产精品乱码一区二区| 久久精品国产精品亚洲艾草网| 亚洲国产精品乱码一区二区 | 国产AV旡码专区亚洲AV苍井空| 亚洲综合精品成人| 亚洲AV无码一区二区一二区| 国内成人精品亚洲日本语音| 亚洲国产婷婷香蕉久久久久久| 亚洲精品综合久久| 亚洲乱码日产一区三区| 久久亚洲精品成人综合| 亚洲精品免费在线视频| 亚洲天堂免费在线| 日韩色视频一区二区三区亚洲| 亚洲精品国精品久久99热| 亚洲色大成网站WWW久久九九| 久久精品亚洲一区二区|