最近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帮助文档链接: 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内容。然而我还观察到了一些有趣的现象:地址栏里的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的ABAP, Java和JavaScript乱炖
- ABAP开发人员未来应该学些什么
- Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
- Jerry的ABAP原创技术文章合集
- 300行ABAP代码实现一个最简单的区块链原型
- 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数
- 在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务
- ABAP vs Java, 蛙泳 vs 自由泳
- 聊聊C语言和ABAP
- 动手使用ABAP Channel开发一些小工具,提升日常工作效率
- 我用ABAP做过的那些无聊的事情
- 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
- 使用Visual Studio Code编写和激活ABAP代码
- 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧
- 在SAP云平台ABAP编程环境上编写第一段ABAP程序
- SAP官方发布的ABAP编程规范
- ABAP Code Inspector那些隐藏的功能,您都知道吗?
- 还在用ABAP进行SAP产品的二次开发?来了解下这种全新的二次开发理念吧
- ABAP Netweaver体内的那些寄生式编程语言
- 从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀
- 云端的ABAP Restful服务开发
- 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务
- 使用abapGit在ABAP On-Premises系统和SAP云平台ABAP环境之间进行代码传输
- 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
- Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现
- Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试
- SAP云平台上的ABAP编程环境里如何消费第三方服务
- ABAP开发者上云的时候到了 - 现在大家可以免费使用SAP云平台ABAP环境的试用版了
- 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景
- SAP云平台里的三叉戟应用
- 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
- SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?
- 有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
- ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
- 利用ABAP 740的新关键字REDUCE完成一个实际工作任务
- 一段让人瑟瑟发抖的ABAP代码
- 昨日万圣节ABAP怪兽级代码谜团,公布答案啦
- 介绍一种在ABAP内核态进行内表高效拷贝的方法
- 使用SAP Cloud Application Programming模型开发OData的一个实际例子
- 当ABAP遇见普罗米修斯
- 使用ABAP绘制可伸缩矢量图
- ABAP开发环境语法高亮的那些事儿
- SAP错误消息调试之七种武器:让所有的错误消息都能被定位
- 使用ABAP操作Excel的几种方法
- SAP GUI里的收藏夹事务码管理工具
- SAP GUI和Windows注册表
- 有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中
- ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼
- 实现ABAP条件断点的三种方式
- 使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈
- 一个13年ABAP老兵的建议:了解这些基础知识,对ABAP开发有百利而无一害
- SAP ABAP Netweaver容器化, 不可能完成的任务吗?
- SAP产品增强技术回顾
- SAP API开发方法大全
- 浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试
- SAP ABAP应用服务器的HTTP响应状态码(Status Code)
- SAP ABAP里存在Java List这种集合工具类么?CL_OBJECT_COLLECTION了解一下
- ABAP面试题系列:写一组会出现死锁(Deadlock)的ABAP程序
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
6. **开发和测试环境**:SAP NetWeaver提供了一个完整的开发工具集,包括ABAP Workbench、Java Development Kit(JDK),以及Web Dynpro等,用于创建、测试和部署应用程序。 在《SAP NetWeaver For Dummies (2004)....
- **最新发展**:2001年后,随着SAP NetWeaver的出现,ABAP与Java并行支持,进一步扩大了其应用场景。 - **特性与用途**: - **易学性**:对于IT专业人员而言,ABAP相对容易掌握。 - **应用领域**:主要用于定制...
这些代码不仅能够帮助读者理解ABAP的语法结构,也能够了解SAP系统中各种业务流程的实现方式。 作为入门教材,该书还可能会涉及SAP的报表开发,报表是SAP系统中极为重要的一部分,ABAP程序经常用于创建报表来展示...
ABAP工作台是SAP NetWeaver的一部分,为开发人员提供了集成的开发环境(IDE),用以创建、调试和维护ABAP程序。 ### SAP NetWeaver SAP NetWeaver是一个技术平台,提供了一套完整的基础设施服务,支持SAP和非SAP...
ABAP是一种高级业务应用编程语言,主要用于开发SAP R/3和SAP NetWeaver平台上的应用程序。它支持事务处理、报表生成、用户界面设计以及与其他系统的接口集成。 2. **ABAP开发环境的建立** 开始学习ABAP之前,需要...
SAP adm100中文版 SAP.system的体系结构 ...本章节对SAP系统的体系结构、SAP登录过程、配置SAP登录、基于ABAP的登录组等知识点进行了详细的讲解,为读者提供了一个了解SAP adm100中文版的基础知识。
2. **ABAP版本**: WDA是Web Dynpro的一个特定变体,专为SAP NetWeaver ABAP堆栈设计。这意味着所有开发工作都在ABAP环境中进行,利用ABAP的语法和工具。 3. **移动优化**: SAP WDA特别强调移动设备的用户体验,支持...
《构建Web服务与ABAP和SAP Web应用服务器》是一本深入探讨如何在SAP环境中开发Web服务的技术专著。本书旨在引导读者逐步了解并掌握使用ABAP(Advanced Business Application Programming)开发Web服务的全过程。 ...
首先,我们需要了解SAP系统的架构,包括客户端/服务器模型,以及如何登录和导航在SAP GUI中。这章节会解释SAP的各个组件,如Business Suite、NetWeaver平台和HANA数据库。 第2章:ABAP基础 ABAP是SAP的核心编程语言...
SAP下载网,abap,SAP资源下载,SAP学习,SAP资料下载,SAP问答,SAP帮助,SAP在线,SAP论坛,ABAP学习,SAP新闻,ORECAL新闻,ORECAL技术,SAP指导 另提供海量SAP资料(视频,资料)+ecc6,ides 4.71 +安装指导(学习必备的高质量...
### 标题:SAP Supplier Relationship Management 7.0 Including Enhancement Package 2 Java and ABAP 该标题明确指出文档是关于SAP SRM 7.0与增强包2(Enhancement Package 2,简称EHP2)的安装指南,特别涵盖了...
SAP Web AS,全称Application Server for ABAP (Advanced Business Application Programming),是SAP R/3和后来的SAP NetWeaver平台的基础,负责处理业务逻辑、数据存储和用户界面交互。AMD100课程的内容可能包括...
- **SAP NetWeaver 架构与组件**:深入讲解 SAP NetWeaver 的核心组件和技术栈,如 J2EE 引擎、集成服务器等。 - **高级功能**:可能涵盖事务处理、消息传递、安全机制等内容。 ### 版权声明与商标声明 #### 1. ...
- **Web AS Java**:作为SAP NetWeaver的一部分,提供Java应用程序服务器的功能。 - **Java Gateway**:允许Java和ABAP应用程序之间的通信。 - **Enterprise Services Repository (ESR)**:存储业务服务和接口,...
SAP_RFC是一个开放的标准接口,基于网络通信协议,提供了一种安全、可靠的通信方式。通过SAP_RFC,外部系统可以像本地调用函数一样调用SAP系统中的功能,这极大地简化了不同系统间的集成工作。SAP_RFC支持多种编程...
本手册提供了在基于Linux平台的UNIX系统上安装SAP应用服务器Java,基于SAP NetWeaver 7.1到7.5版本,并以Oracle数据库为后端的详细指导。这份文档的目的是为了支持客户安装SAP系统,内容覆盖了从规划到实际安装的每...
DVD12 SAP培训讲解录音,SBO DVD13 SAP培训资料(实施案例,流程资料,PA教材,项目管理资料,使用手册, 培训PPT的等各类资料,非常齐全) DVD14 SAP培训资料 DVD15 sap培训视频PP,BW,ABAP,BASIS DVD16 sap SD...
- **服务级别管理(SLM):** SLM是一种管理方法,用于确保SAP系统的服务质量达到预定标准。通过SLM可以实现性能目标的设定和跟踪,以及问题的早期检测与解决。 - **持续性能优化计划:** 为保持SAP系统的长期高效运行...
3. **基础架构与技术**:掌握SAP的运行环境,包括ABAP编程语言、NetWeaver平台、HANA数据库以及SAP GUI等。理解SAP系统是如何在服务器端和客户端之间进行数据交换的。 4. **用户界面与导航**:学习SAP的用户界面,...
该文档名为“SAP Web AS Administration II”,属于SAP NetWeaver系列的一部分。这份文档的发布时间为2005年第三季度,时长为期三天的培训手册。文档编号为50073068,明确指出这是一个仅供学习与参考使用的SAP课程...