NW RFC SDK:使用用户名从非SAP到ABAP(信任关系)

2020-08-18 16:37发布

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

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


你好

我有一个具有挑战性的具有信任关系的非SAP到ABAP RFC场景

Hereu2019的场景是:/p>

Oracle数据库服务器充当RFC客户端,并在ABAP服务器中调用RFC功能模块。 (我假设Oracle程序员将在Oracle服务器上使用NW RFC SDK 7.1或JCo 3.0,并从基于PL/SQL的数据库应用程序中调用它。)

挑战是我不想使用 ABAP端只有一个u201C技术用户u201D,因为这意味着Oracle端的所有用户都将映射到一个ABAP用户。 另外,我不想在Oracle端存储单个ABAP密码。

相反,我希望 ABAP服务器信任RFC客户端,其方式与

a)安装Java后信任NetWeaver AS Java服务器的方式相同 事务STRUSTSSO2或

b中的serveru2019的证书b)配置信任关系后(交易SMT1?)它可能信任另一个ABAP服务器的方式

ABAP服务器应接受传入的RFC 从Oracle RFC客户端连接,仅提供用户名而未给出密码,并在RFC调用中提供的用户ID下在ABAP系统中运行生成的进程。

< p>我以某种方式想象出理想的解决方案(基于PC的原型的简化方案):

-我下载运行一个程序,该程序创建一个证书文件(公钥?),然后导入该文件 ABAP系统。

-同一程序为RFC客户端创建一个匹配文件(私钥?)。

-为简单起见,让我们将RFC客户端想象为在PC上运行的独立Java SE应用程序。

-Java SE应用程序使用JCo库进行连接 到ABAP系统。

-打开连接时,它传递的是用户名,但没有密码。 相反,它传递由我们的密钥/证书生成器程序生成的Base64编码的字符串。

-在ABAP端,功能模块在建立Java SE应用程序所使用的用户名下运行。 RFC连接。

这完全可能吗? 您将如何解决这个问题?

非常感谢您,并谨向您致以诚挚的问候,

敬请谅解

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

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


你好

我有一个具有挑战性的具有信任关系的非SAP到ABAP RFC场景

Hereu2019的场景是:/p>

Oracle数据库服务器充当RFC客户端,并在ABAP服务器中调用RFC功能模块。 (我假设Oracle程序员将在Oracle服务器上使用NW RFC SDK 7.1或JCo 3.0,并从基于PL/SQL的数据库应用程序中调用它。)

挑战是我不想使用 ABAP端只有一个u201C技术用户u201D,因为这意味着Oracle端的所有用户都将映射到一个ABAP用户。 另外,我不想在Oracle端存储单个ABAP密码。

相反,我希望 ABAP服务器信任RFC客户端,其方式与

a)安装Java后信任NetWeaver AS Java服务器的方式相同 事务STRUSTSSO2或

b中的serveru2019的证书b)配置信任关系后(交易SMT1?)它可能信任另一个ABAP服务器的方式

ABAP服务器应接受传入的RFC 从Oracle RFC客户端连接,仅提供用户名而未给出密码,并在RFC调用中提供的用户ID下在ABAP系统中运行生成的进程。

< p>我以某种方式想象出理想的解决方案(基于PC的原型的简化方案):

-我下载运行一个程序,该程序创建一个证书文件(公钥?),然后导入该文件 ABAP系统。

-同一程序为RFC客户端创建一个匹配文件(私钥?)。

-为简单起见,让我们将RFC客户端想象为在PC上运行的独立Java SE应用程序。

-Java SE应用程序使用JCo库进行连接 到ABAP系统。

-打开连接时,它传递的是用户名,但没有密码。 相反,它传递由我们的密钥/证书生成器程序生成的Base64编码的字符串。

-在ABAP端,功能模块在建立Java SE应用程序所使用的用户名下运行。 RFC连接。

这完全可能吗? 您将如何解决这个问题?

非常感谢您,并谨向您致以诚挚的问候,

敬请谅解

付费偷看设置
发送
6条回答
CJones
1楼 · 2020-08-18 17:10.采纳回答

你好

我有一个非常具有挑战性的,具有信任关系的非SAP到ABAP RFC方案。

情况如下:

Oracle数据库服务器充当RFC客户端,并在ABAP 服务器中调用RFC功能模块。 (我假设Oracle程序员将在Oracle服务器上使用NW RFC SDK 7.1或JCo 3.0,并从基于PL/SQL的数据库应用程序中调用它。)

因此,RFC客户端不是 user 代理(即代表一个人),而是 server 组件(即为多个用户提供服务)。 在这种服务器到服务器的通信方案中,您不能出于单一登录目的而使用用于标识通信伙伴的任何机制(此处:任何SNC产品)(此处:RFC客户端=服务器组件)。

>相反,我希望ABAP服务器以可能的方式信任RFC客户端

> a)在事务STRUSTSSO2或

中安装Java服务器证书后,信任NetWeaver AS Java服务器。

> b)配置信任关系(事务SMT1?)后,它可能信任另一个ABAP服务器的方式

对不起,但这是不可能的。

在两种情况下,专有令牌都与该专有协议(RFC)结合使用-外部各方无法创建这些令牌。

解决方案是:使用标准-此处是WS-Security(SAML令牌)。

NetWeaver应用服务器(NWAS)ABAP从7.0版开始支持WS-Security。

您可能想看看 https://wiki.sdn。 sap.com/wiki/display/Security/Single 在 Web +服务上的签名。

致谢,沃尔夫冈

愤怒的猪头君
2楼-- · 2020-08-18 17:17

好吧,我想您已经明白了-我相信您很快就会意识到,您需要投入很多精力来实现声音

会话(和资源)管理非常重要-在安全性(即确保不"混合"会话,分配错误的后端连接)和鲁棒性(即确保 未使用的会话将关闭,释放服务器资源-否则将发生"资源泄漏",从而导致系统停止。)

结论:涉及的组件越多,需要花费更多的精力才能实现 健全而健壮的系统化合物。

->端到端通信比中介通信(通过大量中间件组件)更受重视

别误会:我不是 促进单片(ABAP)系统。

我只想让人们意识到,(不均匀的)系统组件(分布式系统)的化合物带来了新的挑战。

-> 哟 您已经成功实现了SSO,您只需要走一半(甚至更少)

->,还必须跟踪使用SSO技术创建的会话

-> 您还必须提供SLO(单一注销)功能

干杯,沃尔夫冈

huskylover
3楼-- · 2020-08-18 16:57

嗨,

您可以通过以下方式使用模拟功能 SNC身份验证/安全性。 您可以使用任何喜欢的SNC机制,例如 Kerberos或x.509。 当使用PAS模块在ITS服务器上实现SSO时,使用的方法与外部ITS产品使用的方法相同-在这种情况下,ITS服务器通过SNC会话将用户ID(无密码)传递给ABAP服务器,并且由于ABAP服务器考虑 SNC为安全起见,它信任连接并能够为给定的用户ID发行SSO2票证。 签发SSO2票证后,可用于对RFC连接进行身份验证。

很抱歉,如果上述内容含糊不清-我现在没有时间搜索和提醒自己确切的信息 ,但我知道您可以使用上述方法来实现您的目标。 希望对您有所帮助。

谢谢

Tim

95年老男孩
4楼-- · 2020-08-18 17:05

>

>我的理解在这里正确吗?

是的,您的理解是正确的。 另外,如果您只需要为每个Oracle用户进行一次RFC调用,则可以避免"获取SSO2票证"部分,而只需使用SNC会话(使用单个Kerberos身份验证或x.509证书进行保护)即可在ABAP上运行RFC 服务器。

>

>另外,假设我完全信任我的RFC客户端。 这意味着我不希望任何外部权限检查来自RFC客户端的用户名/密码组合,甚至不需要针对任何其他数据库(例如Windows域)来验证各个用户名。 如果有SNC授权,我希望它尽可能"虚拟"。

我不太确定我了解您的要求,但是了解SNC是用于安全连接和身份验证的接口可能会有所帮助。 SNC接口需要一个GSS-API v2库,并且由于GSS-API是一种标准,因此您可以使用诸如Kerberos或x.509之类的标准安全机制。 GSS-API库使用的安全机制在客户端和服务器上必须相同。 还建议您使用SAP认证的库,以受益于可靠且受支持的解决方案。 有一些供应商提供了此类SNC库,它们在SAP EcoHub中进行了描述。

>

>我在这里沿着正确的方向思考吗?

>

>最好的问候,

>

> Thorsten

悠然的二货
5楼-- · 2020-08-18 16:57

嗨,Thorsten,

也许是我的博客:

使用X.509证书从PHP验证到Web服务

/people/gregor.wolf3/blog/2006/09/30/authenticate-from-php-to-a-web-service-using-x509-certificates

在RFC客户端和Web AS之间设置数据加密 带有SNC的ABAP

/people/gregor.wolf3/blog/2006/09/29/setup-data-encryption-rfc-client-and-web-as-abap-with-snc

可以作为正确方向的指南。

是否有人类用户正在使用Web应用程序? 然后,进行单点登录的另一种可能性是对门户进行Kerberos身份验证,然后对RFC连接使用SAP登录凭单(SSO2Ticket)。

最诚挚的问候

Gregor

一只江湖小虾
6楼-- · 2020-08-18 17:14

您好,Thorsten,

请查看我的其他博客:

在Ruby中实现带有外部ID的单点登录

我认为 将带您找到解决方案。 最后,它使用SNC建立第一个RFC连接,该连接用于调用功能模块SUSR_CHECK_LOGON_DATA。 外部用户名必须传递到此功能模块。 外部用户名到SAP用户的映射必须在VUSREXTID中维护。 然后功能模块将返回一个SSO2票证,该票证可用于建立另一个RFC连接,然后使用其他用户的凭据。

SAP RFC SNC客户端以获取外部ID的SAP登录票证,您还将找到使用JCo的示例实现。

最诚挚的问候

Gregor

一周热门 更多>