如何通过SAPGUI触发对Web dynpro应用程序的SSO

2020-09-04 05:06发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

使用sapgui的用户在sapgui屏幕之一上按下一个按钮,从而触发本地开发的Web dynpro应用程序。 我们希望用户无需用户名或密码即可登录该应用程序。 我找不到有关如何实现此目标的任何文档。

为SSO配置了系统。

谢谢

Boaz

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

使用sapgui的用户在sapgui屏幕之一上按下一个按钮,从而触发本地开发的Web dynpro应用程序。 我们希望用户无需用户名或密码即可登录该应用程序。 我找不到有关如何实现此目标的任何文档。

为SSO配置了系统。

谢谢

Boaz

付费偷看设置
发送
8条回答
haha101010
1楼 · 2020-09-04 05:50.采纳回答

不同SAP服务器与第三方服务器之间的SSO,而不是客户端与服务器之间的SSO。

您正在从客户端运行WDA应用程序,它肯定会询问用户ID和密码。

如果您不需要登录页面,则可以在SICF中设置WDA应用程序的登录凭据。

Abhi

Tong__Ming
2楼-- · 2020-09-04 06:07

>

>不同SAP服务器与第三方服务器之间的SSO,而不是客户端与服务器之间的SSO。

>您正在从客户端运行WDA应用程序,它肯定会询问用户ID和密码。

> Abhi

那是完全不正确的。 今天是您第二次肯定地提供了错误的信息。 您是论坛的常客,但这只会使您的错误信息更加危险。 请保持警惕。

现在回答:

SSO通常是为客户端和服务器以及服务器到服务器而设计的。 SAPGUI还有一个特殊的SSO模式。 这样就可以从SE80启动Web Dynrpo或BSP应用程序而不会提示您进行身份验证。

所有这些都通过类cl_gui_html_viewer完成。有一个名为ENABLE_SAPSSO的方法。 这是一个特殊票证,仅在SAPGUI HTML容器的上下文中有用。 但是,还有一种gui html查看器也可以在新窗口中打开的方法。

 DATA:URL TYPE字符串,urlc(2048)TYPE c。
 *构建URL-但是您想这样做
 urlc =网址。  "将类型STRING转换为C
 数据:查看器类型参考cl_gui_html_viewer。
 数据:empty_container类型参考cl_gui_container。
 创建对象查看器EXPORTING parent = empty_container。
 调用方法查看器-> enable_sapsso
 启用导出='X'
 其他除外= 1。
 呼叫方法查看器-> DETACH_URL_IN_BROWSER
 导出网址=网址c。
 cl_gui_cfw => flush()。
Bunny_CDM
3楼-- · 2020-09-04 05:58

你好 Thomas Jung

我知道这个线程已经很老了,但是我在为从ABAP执行SICF服务而又不丢失连接会话的要求中苦苦挣扎。

我已经在尝试您提出的解决方案:

创建对象lo_gui_html_viewer
     出口
       父母= lo_gui_container
     例外情况
       其他= 0。

   调用方法lo_gui_html_viewer-> enable_sapsso
     出口
       已启用='X'
     例外情况
       其他= 0。

   呼叫方法lo_gui_html_viewer-> detach_url_in_browser
     出口
       网址= lv_url
     例外情况
       其他= 0。

   cl_gui_cfw => flush()。
 

但是最后,浏览器打开,尝试访问这种URL:

http://<服务器>:<端口>/sap/public/myssocntl?sap-client = <客户端>

我收到500个内部服务器错误

关于我的代码/系统中可能存在什么错误的任何想法?

我要执行的URL是为配置文件(/sap/bc/sec/oauth2/client/grant/authorization/?profile = )请求OAuth 2.0令牌。

谢谢!

最诚挚的问候,

Marco Silva

落灬小鱼
4楼-- · 2020-09-04 06:11

好吧,我想确保代码示例在其十多年的历史中仍能正常工作。 我在S/4 1809系统(7.53)上重新创建了测试程序:

 REPORT zbrowser_launch_test。


 数据:empty_container类型参考cl_gui_container。
 DATA(查看器)=新cl_gui_html_viewer(父= empty_container)。
 viewer-> enable_sapsso(enabled = abap_true)。
 查看器-> detach_url_in_browser(url =`http://hanapm.local.com:8000/sap/bc/webdynpro/sap/demo_value_help?sap-client = 000`)。
 cl_gui_cfw => flush()。
 

它运行良好:

因此,代码和概念仍然有效,因此我不得不猜测您的系统的系统配置中存在某些问题。 但是,我无法对您的系统一无所知。 我们上面的系统是非常漂亮的S/4,几乎没有后期安装配置。 我什至没有配置HTTPS。

Climb_Ma
5楼-- · 2020-09-04 06:06

在一个类似的主题中,SAP的Thomas Jung在这个论坛上写道。 我引用:

使用独立的ABAP SSO最好的办法是提示用户进行一次身份验证,然后从中生成票证。

唯一的例外是从SAPGUI独立启动WDA。 SAPGUI可以从SAP登录(SY-UNAME)生成SSO票证,仅可用于本地系统。 这样可以从SE80运行WD应用程序,而不会提示您进行身份验证。

有人可以向我解释如何使用此异常吗?

谢谢。

SAP小菜
6楼-- · 2020-09-04 06:09

您始终可以使用URL参数-依次将它们转换为窗口启动插件的输入参数。 但是,通过URL参数可以传递多少数据是有限制的。 因此,如果我要传递的密钥不止一两个,我想将数据序列化为XML,然后将其写入服务器Cookie(基本上只是将其存储在临时数据库表中-但是如果您不熟悉这些类, -因为它们是为BSP创建的-这样做会让我知道,我可以发布一个示例),然后只需通过URL参数将密钥传递给服务器cookie。 然后,启动插件可以从URL参数中提取密钥并反序列化服务器cookie-添加到其自己的上下文中。

haha101010
7楼-- · 2020-09-04 05:56

Thomas,

非常感谢您提供解决方案。

致谢

Boaz

一周热门 更多>