共計 2365 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要講解了“ABAP Netweaver 服務器的登錄方式是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“ABAP Netweaver 服務器的登錄方式是什么”吧!
我們在事務碼 SICF 里隨便打開一個節點,在標簽頁 Logon Data 里發現 Procedure 這個字段,設置的默認值為 Standard,按 F1 可以查看幫助文檔。
文檔提到,當 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 內容。然而我還觀察到了一些有趣的現象:地址欄里的 http 自動被轉換成了 https,同時工具 HTTP Watch 里觀察到了一個 HTTP 307 重定向。
這個從 HTTP 協議端口 50078 自動重定向到 HTTPS 端口 44378 的行為,定義在事務碼 SMICM 的參數里:
也可以通過事務碼 RZ11, 查看參數 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 開發者工具也行) 觀察我訪問 WSDL 發起的 HTTP 請求,果然發現了一個名為 MYSAPSSO2 的 cookie,這是我之前成功登錄服務器之后,服務器頒發給客戶端的 logon ticket. 登錄成功之后,接下來每次再訪問同一服務器時,瀏覽器都會自動將該 cookie 設置到 HTTP 請求里,達到無需用戶顯式提供登錄信息,也能成功訪問服務器資源的目的。
當我將這個 MYSAPSSO2 cookie 清除之后,再次訪問同一資源,又看到了久違的讓我輸入用戶名和密碼的彈出對話框。
這次輸入用戶名和密碼之后,再次看到了 WSDL 內容,然而此次成功登錄,采用的方式不是之前的 MYSAPSSO2 Logon Ticket,而是基于用戶名和密碼的 Basic Authentication 方式 (下圖藍色高亮區域)。
注意到下圖綠色高亮區域的 set-cookie:用戶成功登錄后,服務器頒發的 MYSAPSSO2 cookie,通過 HTTP 響應的 set-cookie 字段, 返回給瀏覽器。下一次瀏覽器再訪問該資源時,會自動在 HTTP 請求里帶上該 cookie 字段,又重新使用 MYSAPSSO2 Logon Ticket 的方式進行登錄認證了。
下面是幾種通過 ABAP 代碼來訪問 Netweaver 服務器資源時,如何指定登錄認證信息的例子。
例 1:ABAP 代碼里未提供任何登錄認證信息
SAPGUI 里執行上圖的 ABAP 代碼,會遇到一個彈出對話框,只有手動輸入用戶名和密碼,該代碼才能順利取回資源。
如果添加一行代碼:
lo_http_client- propertytype_logon_popup = if_http_client= co_disabled.
可以阻止用戶名和密碼輸入的對話框彈出,但此時服務器會直接返回 HTTP 401 Unauthorized Error:
例 2:在 ABAP 程序里提供用戶名和密碼的幾種方式
可以通過如下方式提供明文的用戶名和密碼:
也可以在事務碼 SM59 里創建一個類型為 H:HTTP Connection to ABAP System 的 Destination:
將用戶名和密碼維護到這個 Destination 的 Logon Security 頁面的對應字段去:
然后基于這個 Destination 創建 cl_http_client 的實例。這種方式安全性比在代碼里直接明文指定用戶名和密碼要好一些。
當然我也試過,將 MYSAPSSO2 的 cookie 值拷貝出來:
直接通過 set_cookie 方法設置給 cl_http_client 的實例,一樣可以成功訪問系統里的資源。
感謝各位的閱讀,以上就是“ABAP Netweaver 服務器的登錄方式是什么”的內容了,經過本文的學習后,相信大家對 ABAP Netweaver 服務器的登錄方式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!