SAPUI5和登录令牌/ SSO?

Ped*_*ice 2 sap html5 sapui5

我正在开始使用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)
Run Code Online (Sandbox Code Playgroud)

即使我查看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
 */
Run Code Online (Sandbox Code Playgroud)

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

小智 5

我是您所引用的博客的作者.让我试着回答你的问题.

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

因此,当您成功通过SAP身份验证时,您会获得一个SSO令牌作为响应的HTTP标头.

例如

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

您的代理应该只是将其传递到客户端的浏览器并将域名更改为代理的域名,否则客户端将不会使用它.

set-cookie:MYSAPSSO2 = AjQxMDM ..... BABhHAFcA%3d%3d; 路径= /; 域= yourproxydomain.com

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

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

您的代理可以从HTTP请求标头中读取该cookie并使用它来拨打电话.

我希望这有帮助.