這篇文章主要講解了“ABAP Netweaver服務(wù)器的登錄方式是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“ABAP Netweaver服務(wù)器的登錄方式是什么”吧!
10年積累的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有旺蒼免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。我們?cè)谑聞?wù)碼SICF里隨便打開(kāi)一個(gè)節(jié)點(diǎn),在標(biāo)簽頁(yè)Logon Data里發(fā)現(xiàn)Procedure這個(gè)字段,設(shè)置的默認(rèn)值為Standard,按F1可以查看幫助文檔。
文檔提到,當(dāng)Procedure設(shè)置為Standard時(shí),登錄驗(yàn)證將會(huì)通過(guò)下面的順序進(jìn)行:
(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
下面我們就通過(guò)一些具體的例子,來(lái)理解這些不同的登錄方式是如何進(jìn)行的。
例如直接在瀏覽器里打開(kāi)某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自動(dòng)被轉(zhuǎn)換成了https,同時(shí)工具HTTP Watch里觀察到了一個(gè)HTTP 307重定向。
這個(gè)從HTTP協(xié)議端口50078自動(dòng)重定向到HTTPS端口44378的行為,定義在事務(wù)碼SMICM的參數(shù)里:
也可以通過(guò)事務(wù)碼RZ11,查看參數(shù)icm/HTTP/redirect_0的值。
然而,此時(shí)我根本沒(méi)有指定任何用戶名和密碼,為什么我可以成功看到部署在ABAP Netweaver服務(wù)器上,需要通過(guò)登錄認(rèn)證后才能訪問(wèn)的資源?
這就是標(biāo)準(zhǔn)登錄方式之一的Logon using SAP Logon Ticket (SSO-單點(diǎn)登錄)在起作用。
摘錄一段SAP幫助文檔里對(duì)Logon using SAP Logon Ticket (SSO)的說(shuō)明:
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開(kāi)發(fā)者工具也行)觀察我訪問(wèn)WSDL發(fā)起的HTTP請(qǐng)求,果然發(fā)現(xiàn)了一個(gè)名為MYSAPSSO2的cookie,這是我之前成功登錄服務(wù)器之后,服務(wù)器頒發(fā)給客戶端的logon ticket. 登錄成功之后,接下來(lái)每次再訪問(wèn)同一服務(wù)器時(shí),瀏覽器都會(huì)自動(dòng)將該cookie設(shè)置到HTTP請(qǐng)求里,達(dá)到無(wú)需用戶顯式提供登錄信息,也能成功訪問(wèn)服務(wù)器資源的目的。
當(dāng)我將這個(gè)MYSAPSSO2 cookie清除之后,再次訪問(wèn)同一資源,又看到了久違的讓我輸入用戶名和密碼的彈出對(duì)話框。
這次輸入用戶名和密碼之后,再次看到了WSDL內(nèi)容,然而此次成功登錄,采用的方式不是之前的MYSAPSSO2 Logon Ticket,而是基于用戶名和密碼的Basic Authentication方式(下圖藍(lán)色高亮區(qū)域)。
注意到下圖綠色高亮區(qū)域的set-cookie:用戶成功登錄后,服務(wù)器頒發(fā)的MYSAPSSO2 cookie,通過(guò)HTTP響應(yīng)的set-cookie字段, 返回給瀏覽器。下一次瀏覽器再訪問(wèn)該資源時(shí),會(huì)自動(dòng)在HTTP請(qǐng)求里帶上該cookie字段,又重新使用MYSAPSSO2 Logon Ticket的方式進(jìn)行登錄認(rèn)證了。
下面是幾種通過(guò)ABAP代碼來(lái)訪問(wèn)Netweaver服務(wù)器資源時(shí),如何指定登錄認(rèn)證信息的例子。
SAPGUI里執(zhí)行上圖的ABAP代碼,會(huì)遇到一個(gè)彈出對(duì)話框,只有手動(dòng)輸入用戶名和密碼,該代碼才能順利取回資源。
如果添加一行代碼:
lo_http_client->propertytype_logon_popup = if_http_client=>co_disabled.
可以阻止用戶名和密碼輸入的對(duì)話框彈出,但此時(shí)服務(wù)器會(huì)直接返回HTTP 401 Unauthorized Error:
可以通過(guò)如下方式提供明文的用戶名和密碼:
也可以在事務(wù)碼SM59里創(chuàng)建一個(gè)類型為H:HTTP Connection to ABAP System的Destination:
將用戶名和密碼維護(hù)到這個(gè)Destination的Logon & Security頁(yè)面的對(duì)應(yīng)字段去:
然后基于這個(gè)Destination創(chuàng)建cl_http_client的實(shí)例。這種方式安全性比在代碼里直接明文指定用戶名和密碼要好一些。
當(dāng)然我也試過(guò),將MYSAPSSO2的cookie值拷貝出來(lái):
直接通過(guò)set_cookie方法設(shè)置給cl_http_client的實(shí)例,一樣可以成功訪問(wèn)系統(tǒng)里的資源。
感謝各位的閱讀,以上就是“ABAP Netweaver服務(wù)器的登錄方式是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)ABAP Netweaver服務(wù)器的登錄方式是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!