我正在开发一个用户必须登录的Web应用程序。
我可以使用RFC之类的方法通过SAP之外的SAP身份验证吗?
用户将输入其SAP用户名和密码,然后SAP控制该信息,并让我知道这些信息正确与否。
答案 0 :(得分:2)
是的,这是可能的。每当您想从SAP系统外部执行具有远程功能的功能模块时,无论如何都需要登录该系统。从Web应用程序到SAP系统的连接可以使用用户提供的登录信息,而不必使用固定的用户名和密码。
请注意,要调用的功能模块将以分配给登录用户的授权来执行。因此,您的Web应用程序用户将需要授权才能调用功能模块。
实施很大程度上取决于您决定使用的RFC库。例如,在SAP .Net Connector 3.0中,您始终使用RfcDestinationManager
来预先注册目的地。但是您可以创建一个自定义目标,并在实际使用它之前覆盖该目标中的用户名和密码。
using SAP.Middleware.Connector;
public RfcDestination GetDestination(string destinationName, string username, string password)
{
dest = RfcDestinationManager.GetDestination(destinationName);
customDest = dest.CreateCustomDestination();
customDest.Client = dest.Client;
customDest.User = username;
customDest.Password = password;
return customDest;
}
此代码段假定目标已经通过代码或配置在RfcDestinationManager
中进行了注册。它不必包含有效的登录名,用户名和密码可以为空(因为无论如何您都将覆盖它们)。但是带有Hostname
,System Number
和Id
的目的地必须在那儿(尽管您也可以覆盖这些目的地,所以从本质上讲,您可能只需要一个名称开头的空白目的地即可)
如果仅 要检查登录信息并且不想在用户上下文中执行功能模块,则仍然可以创建与SAP系统的第二个连接并检查是否可以连接。第三种选择是使用功能模块SUSR_CHECK_LOGON_DATA
并仅检查提供的用户名和密码。
为所有RFC调用使用用户名和密码有一些优点:您可以控制SAP系统中的授权。 SAP Netweaver具有全面的授权模型,该模型允许您为用户分配非常具体的授权,从而可以为不同的使用场景(例如read-only
用户,maintainers
和admins
(在Web应用程序的上下文)。而且,当您使用标准功能模块更新SAP系统中的数据时,通过Web应用程序执行更改的实际用户将在以后显示为执行更改的用户,而不是普通的Web应用程序用户。
答案 1 :(得分:1)
您可以使用SAP Logon Ticket从SAP Netware登录用户。请检查以下文件。
常规内容: https://help.sap.com/saphelp_nw73/helpdata/en/d0/dc33c460a243929b7ec120f55af101/frameset.htm
配置SAP以创建登录票证: https://help.sap.com/saphelp_nw73/helpdata/en/4a/b6df333fec6d83e10000000a42189c/frameset.htm