`
JerryWang_SAP
  • 浏览: 1031142 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

SAP ABAP Netweaver服务器的标准登录方式讲解

阅读更多

最近Jerry把这个公众号之前发布的总共230篇文章按照类别整理了一系列合集出来,比如所有的ABAP文章,放在了这个合集里:汪子熙的ABAP合集

 

 

本文继续介绍ABAP里的一个知识点:ABAP Netweaver服务器的登录方式(Standard Logon Procedure).

本文的英文版最先发布于SAP社区博客,我当时负责处理客户报过来的关于SAP CRM Web Service的incident,遇到一个HTTP 401错误消息的知识点,发现我理解得不够清楚,因此把SAP帮助文档找来研究了一番,写下了这篇博客:

Learn more detail about Standard logon procedure

我们在事务码SICF里随便打开一个节点,在标签页Logon Data里发现Procedure这个字段,设置的默认值为Standard,按F1可以查看帮助文档。

 

 

如果对于SICF节点在ABAP Netweaver服务器里扮演的角色感兴趣,可以参考Jerry的文章:一个13年ABAP老兵的建议:了解这些基础知识,对ABAP开发有百利而无一害

Logon Procedure帮助文档链接: help.sap.com/saphelp_me

文档提到,当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的实例,一样可以成功访问系统里的资源。

 

 

只是cookie有时效性,会过期,因此在生产场景的代码中,需要现用现取。关于ABAP CL_HTTP_CLIENT有关cookie的详细使用方式,请参考我的博客:

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

大家下次如果遇到有关HTTP请求和服务器登录认证的相关问题,不妨按照Jerry本文介绍的方法,通过使用HTTP Watch和Chrome开发者工具,以及查阅SAP帮助文档的方式自行研究,感谢阅读。

ABAP专题

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

0
0
分享到:
评论

相关推荐

    SAP NetWeaver.zip_SAP_zip

    6. **开发和测试环境**:SAP NetWeaver提供了一个完整的开发工具集,包括ABAP Workbench、Java Development Kit(JDK),以及Web Dynpro等,用于创建、测试和部署应用程序。 在《SAP NetWeaver For Dummies (2004)....

    SAP-ABAP.pdf

    - **最新发展**:2001年后,随着SAP NetWeaver的出现,ABAP与Java并行支持,进一步扩大了其应用场景。 - **特性与用途**: - **易学性**:对于IT专业人员而言,ABAP相对容易掌握。 - **应用领域**:主要用于定制...

    SAP程序设计_黄佳.pdf

    这些代码不仅能够帮助读者理解ABAP的语法结构,也能够了解SAP系统中各种业务流程的实现方式。 作为入门教材,该书还可能会涉及SAP的报表开发,报表是SAP系统中极为重要的一部分,ABAP程序经常用于创建报表来展示...

    BC400_EN_Col63

    ABAP工作台是SAP NetWeaver的一部分,为开发人员提供了集成的开发环境(IDE),用以创建、调试和维护ABAP程序。 ### SAP NetWeaver SAP NetWeaver是一个技术平台,提供了一套完整的基础设施服务,支持SAP和非SAP...

    ABAP 三月通

    ABAP是一种高级业务应用编程语言,主要用于开发SAP R/3和SAP NetWeaver平台上的应用程序。它支持事务处理、报表生成、用户界面设计以及与其他系统的接口集成。 2. **ABAP开发环境的建立** 开始学习ABAP之前,需要...

    SAP adm100中文版

    SAP adm100中文版 SAP.system的体系结构 ...本章节对SAP系统的体系结构、SAP登录过程、配置SAP登录、基于ABAP的登录组等知识点进行了详细的讲解,为读者提供了一个了解SAP adm100中文版的基础知识。

    sap wda实例与讲解

    2. **ABAP版本**: WDA是Web Dynpro的一个特定变体,专为SAP NetWeaver ABAP堆栈设计。这意味着所有开发工作都在ABAP环境中进行,利用ABAP的语法和工具。 3. **移动优化**: SAP WDA特别强调移动设备的用户体验,支持...

    building web services with abap and sap web application server

    《构建Web服务与ABAP和SAP Web应用服务器》是一本深入探讨如何在SAP环境中开发Web服务的技术专著。本书旨在引导读者逐步了解并掌握使用ABAP(Advanced Business Application Programming)开发Web服务的全过程。 ...

    SAP 入门帮助指导(实用)

    首先,我们需要了解SAP系统的架构,包括客户端/服务器模型,以及如何登录和导航在SAP GUI中。这章节会解释SAP的各个组件,如Business Suite、NetWeaver平台和HANA数据库。 第2章:ABAP基础 ABAP是SAP的核心编程语言...

    SAP R3 联机事务码速查手册

    SAP下载网,abap,SAP资源下载,SAP学习,SAP资料下载,SAP问答,SAP帮助,SAP在线,SAP论坛,ABAP学习,SAP新闻,ORECAL新闻,ORECAL技术,SAP指导 另提供海量SAP资料(视频,资料)+ecc6,ides 4.71 +安装指导(学习必备的高质量...

    Installation Guide for SAP SRM 7.0 EHP2 -

    ### 标题:SAP Supplier Relationship Management 7.0 Including Enhancement Package 2 Java and ABAP 该标题明确指出文档是关于SAP SRM 7.0与增强包2(Enhancement Package 2,简称EHP2)的安装指南,特别涵盖了...

    SAP AMD100 (SAP Web AS Administration)

    SAP Web AS,全称Application Server for ABAP (Advanced Business Application Programming),是SAP R/3和后来的SAP NetWeaver平台的基础,负责处理业务逻辑、数据存储和用户界面交互。AMD100课程的内容可能包括...

    BC400_EN_Col52_FV_Part_Ltr.pdf

    - **SAP NetWeaver 架构与组件**:深入讲解 SAP NetWeaver 的核心组件和技术栈,如 J2EE 引擎、集成服务器等。 - **高级功能**:可能涵盖事务处理、消息传递、安全机制等内容。 ### 版权声明与商标声明 #### 1. ...

    Enterprise_Java_for_SAP.zip_java programming

    - **Web AS Java**:作为SAP NetWeaver的一部分,提供Java应用程序服务器的功能。 - **Java Gateway**:允许Java和ABAP应用程序之间的通信。 - **Enterprise Services Repository (ESR)**:存储业务服务和接口,...

    SAP_RFC ,远程调用SAP

    SAP_RFC是一个开放的标准接口,基于网络通信协议,提供了一种安全、可靠的通信方式。通过SAP_RFC,外部系统可以像本地调用函数一样调用SAP系统中的功能,这极大地简化了不同系统间的集成工作。SAP_RFC支持多种编程...

    sap java 的安装手册,基于linux平台,oracle数据库

    本手册提供了在基于Linux平台的UNIX系统上安装SAP应用服务器Java,基于SAP NetWeaver 7.1到7.5版本,并以Oracle数据库为后端的详细指导。这份文档的目的是为了支持客户安装SAP系统,内容覆盖了从规划到实际安装的每...

    SD销售组织与单别对应关系设置

    DVD12 SAP培训讲解录音,SBO DVD13 SAP培训资料(实施案例,流程资料,PA教材,项目管理资料,使用手册, 培训PPT的等各类资料,非常齐全) DVD14 SAP培训资料 DVD15 sap培训视频PP,BW,ABAP,BASIS DVD16 sap SD...

    SAP Performance Optimization Guide

    - **服务级别管理(SLM):** SLM是一种管理方法,用于确保SAP系统的服务质量达到预定标准。通过SLM可以实现性能目标的设定和跟踪,以及问题的早期检测与解决。 - **持续性能优化计划:** 为保持SAP系统的长期高效运行...

    100小时学会SAP_V2.pdf

    3. **基础架构与技术**:掌握SAP的运行环境,包括ABAP编程语言、NetWeaver平台、HANA数据库以及SAP GUI等。理解SAP系统是如何在服务器端和客户端之间进行数据交换的。 4. **用户界面与导航**:学习SAP的用户界面,...

    ADM100_Col52..pdf

    该文档名为“SAP Web AS Administration II”,属于SAP NetWeaver系列的一部分。这份文档的发布时间为2005年第三季度,时长为期三天的培训手册。文档编号为50073068,明确指出这是一个仅供学习与参考使用的SAP课程...

Global site tag (gtag.js) - Google Analytics