2

我开始使用SAP 的 SAPUI5 框架,我正在尝试单点登录以使用登录令牌 (MYSAPSSO2),但我看不到任何可以获取令牌或将令牌附加到 OData HTTP 请求的地方. 我在上面链接到的博客文章中的示例使用了用户名/密码,但不使用令牌:

// Specify the SAP Gateway SalesOrder service as an OData model
var salesOrderService =
    "https://gw.esworkplace.sap.com/sap/opu/sdata/IWFND/SALESORDER",

// The SalesOrder service requires authentication
// get the username/password from the SDN page.
username = "[username]",
password = "[password]",

// SAP Gateway only supports XML, so don't use JSON
asJson = false,
salesOrderModel = new ODataModel(salesOrderService, asJson, username, password)

即使我查看SDK中提供的 ODataModel.js 文件,构造函数也不会使用登录令牌:

/**
 * Constructor for a new ODataModel.
 *
 * @param {string} sServiceUrl required - base uri of the service to request data from
 * @param {string} [bJSON] (optional) true to request data as JSON
 * @param {string} [sUser] (optional) user
 * @param {string} [sPassword] (optional) password
 *
 * @class
 * Model implementation for oData format
 *
 * @extends sap.ui.model.Model
 *
 * @author SAP AG
 * @version 1.2.0
 *
 * @constructor
 * @public
 */

如果有人对 SAPUI5 的 SSO/MYSAPSSO2 登录令牌有任何经验,我很好奇(尽管它是新的,如果没有人听说过这个我不会感到惊讶)。

4

3 回答 3

5

我是您所指博客的作者。让我试着回答你的问题。

您在 3 月 15 日的评论描述了一种代理方法。您应该尝试做的是,一旦您的代理收到 SSO 令牌,您应该使用 SET-COOKIE 标头将其传递给客户端。

因此,当您成功向 SAP 进行身份验证时,您将获得一个 SSO 令牌和响应的 HTTP 标头。

例如

设置cookie:MYSAPSSO2=AjQxMDM.....BABhHAFcA%3d%3d;路径=/; 域=esworkplace.sap.com

您的代理应该简单地将其传递给客户端的浏览器并将域名更改为代理的域名,否则客户端将不会使用它。

设置cookie:MYSAPSSO2=AjQxMDM.....BABhHAFcA%3d%3d;路径=/; 域=您的代理域.com

下次浏览器向您的代理发出请求时,它将自动在请求标头中包含此会话 cookie,如下所示:

Cookie:MYSAPSSO2=AjQxMDMBABhH......%2fjmaRu5sSb28M6rEg%3d%3d

您的代理可以从 HTTP 请求标头中读取该 cookie 并使用它来进行调用。

我希望这有帮助。

于 2012-03-21T16:11:14.963 回答
2

我负责 SAPUI5 - 虽然我不能 100% 确定我是否完全理解这个问题,但我会尝试回答。读取数据的 SAPUI5 调用使用 XMLHttpRequests,因此所有证书或 cookie 都会与请求一起自动发送。此外,Gateway 应接受这些(有效)证书。因此,按照 Istak 的回答并使用具有适当域的 cookie,它应该可以在不需要 UI5 中的 API 的情况下工作。

无论如何,如果我遗漏了什么,请更详细地解释。

最好的问候斯特凡

于 2012-03-22T12:58:35.763 回答
0

不确定 SAPUI5 和 oData,我已将 MYSAPSSO2 令牌与 Java EE Web 应用程序/基于 sencha 触摸的应用程序一起使用,这些应用程序将 SAP 后端系统与 SSO 连接起来。您只需在 http 请求中将令牌作为 cookie 传递。

有很多方法可以做到这一点,我使用的一种是SimpleClientHttpRequestFactory,或者你可以在 UrlConnection 本身中做到这一点。

于 2012-03-09T03:58:36.550 回答