2012-03-06 148 views
1

我開始使用SAP's SAPUI5 framework,我嘗試使用登錄令牌(MYSAPSSO2)進行單點登錄,但是我沒有看到任何可以獲取令牌或將令牌附加到OData HTTP請求的位置。在博客文章中,我掛上面的例子中使用的用戶名/密碼,但不使用令牌:當我看到在SDK提供的ODataModel.js文件SAPUI5和登錄令牌/ SSO?

// 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) 

甚至,構造不採取登錄標記:

/** 
* 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登錄標記任何經驗。

回答

5

我是你引用的博客的作者。讓我試着回答你的問題。

您的評論來自Mar 15描述了一種代理方法。你應該嘗試做的是,一旦你的代理已經收到SSO令牌,你應該使用SET-COOKIE頭將其傳遞給客戶端。

因此,當您成功向SAP進行身份驗證時,您將獲得SSO令牌的響應的HTTP標頭。

E.g.

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

您的代理應該簡單地將它傳遞給客戶端的瀏覽器,並將域名更改爲代理的域名,否則客戶端將不會使用它。

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

下一次的瀏覽器向代理的請求它會自動在請求頭這個會話cookie,像這樣:

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

您的代理可以從HTTP請求標頭中讀取該cookie並使用它進行呼叫。

我希望這會有所幫助。

+0

我想這也是我們必須要做的,儘管我希望得到一些有關SAPUI5的SAP身份驗證提供程序的指導。但是,對於SAP Portal中託管的SAPUI5應用程序,可能不需要擔心,因爲瀏覽器已經具有MYSAPSSO2令牌,並且很可能會將其傳遞到SAP NetWeaver網關,前提是它位於相同的域中。 – 2012-03-27 19:46:00

0

不確定SAPUI5和oData,我已經將MYSAPSSO2令牌與基於Java EE Web應用程序/ sencha touch的應用程序連接起來,這些應用程序將SAP後端系統與SSO連接起來。您只需在http請求中將令牌作爲cookie傳遞。

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

+0

我打得四處在SAPUI5中的OData請求對象了一下,它不會讓這一切是很容易添加餅乾,因爲它並沒有提供一個公共接口。我必須在幕後跳水才能將其附加到我的要求中。我也不完全確定SAP NetWeaver Gateway中的OData端點與MYSAPSSO2 cookie一起工作。我會假設他們這樣做;如果SAP讓他們以不同的方式工作,我會感到驚訝。 – 2012-03-09 15:04:23

+0

與新的SAP技術合作始終充滿挑戰。我們使用開源代碼而不是使用Gateway將SAP數據轉換爲JSON Restful Apis。詳情如下:http://code.google.com/p/zjson。一旦你設置好了,你就可以使用標準的Java方式來傳遞Cookie,而不是依靠SAP。網關是絕對有希望的,但我寧願等待它在遷移之前變得更成熟。 – Dhananjay 2012-03-09 18:20:38

+0

我們甚至沒有使用網關,實際上使用的是將代理轉換爲OData模型的.NET代理:)但是我們仍然需要一種通過網絡獲取該令牌的方式,所以我很好奇如果有人曾經修改過SAPUI5請求對象包括cookie。 – 2012-03-15 14:45:53

2

我對SAPUI5負責 - 雖然我不是100%確定自己是否完全理解該問題,但我會盡力回答。 SAPUI5調用讀取數據使用XMLHttpRequests,因此所有證書或cookie都會自動與請求一起發送。此外,Gateway期望接受這些(有效)證書。 因此,遵循Istak的答案並使用具有適當域的cookie,它應該可以在UI5中不需要API的情況下工作。

無論如何,如果我遺漏了一些東西,請詳細解釋一下。

問候 斯特凡

+0

我對使用SAPUI5進行Intranet應用程序(特別是那些託管在SAP Portal之外的應用程序)的長期身份驗證方向感興趣。 – 2012-03-27 19:46:29