来自非SAP环境的具有SAP凭证的用户身份验证

时间:2018-09-11 13:44:55

标签: authentication sap abap sap-connector saprfc

我正在开发一个用户必须登录的Web应用程序。

我可以使用RFC之类的方法通过SAP之外的SAP身份验证吗?

用户将输入其SAP用户名和密码,然后SAP控制该信息,并让我知道这些信息正确与否。

2 个答案:

答案 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中进行了注册。它不必包含有效的登录名,用户名和密码可以为空(因为无论如何您都将覆盖它们)。但是带有HostnameSystem NumberId的目的地必须在那儿(尽管您也可以覆盖这些目的地,所以从本质上讲,您可能只需要一个名称开头的空白目的地即可)

如果仅 要检查登录信息并且不想在用户上下文中执行功能模块,则仍然可以创建与SAP系统的第二个连接并检查是否可以连接。第三种选择是使用功能模块SUSR_CHECK_LOGON_DATA并仅检查提供的用户名和密码。

为所有RFC调用使用用户名和密码有一些优点:您可以控制SAP系统中的授权。 SAP Netweaver具有全面的授权模型,该模型允许您为用户分配非常具体的授权,从而可以为不同的使用场景(例如read-only用户,maintainersadmins(在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