Worklight Adapter を使用して DP MPGW を呼び出す場合、次のようなシーケンスになります。
要求:
WL クライアント アプリ --> WL サーバー (アダプター) --> DP MPGW
応答:
DP MPGW --> WL サーバー (アダプター) --> WLクライアント アプリ
注: WL サーバー (アダプター) の前後のセッション ID は同じではありません。SSO を実行する場合は、LTPA トークンをアダプターでバックエンド DP に渡す必要があります。これがあなたのためのサンプルコードです。
ステップ1。LTPA トークン メソッドを取得します (ChallengeHandler.js ファイル内)。
sampleAppRealmChallengeHandler.isCustomResponse = function(response) {
if (!response || response.responseText === null) {
return false;
}
var indicatorIdx = response.responseText.search('j_security_check');
if (indicatorIdx >= 0){
return true;
}else if(response && (response.responseJSON) && (response.responseJSON['WL-Authentication-Success']) && (response.responseJSON['WL-Authentication-Success']['WASLTPARealm'])){
// set ltpaToken when login success
var realm = response.responseJSON['WL-Authentication-Success']['WASLTPARealm'];
ltpaToken = realm.attributes.LtpaToken;
console.log('Get ltpa token success: '+ltpaToken);
}
return false;
};
ステップ2。プロシージャ メソッドの呼び出し (クライアント アプリの js ファイル内)
// define global LTPA token variable
var ltpaToken = null;
function getAccountInfo(){
// check ltpa token is not null, or get the ltap token from login user in WASLTPARealm
if(!ltpaToken){
if(WL.Client.isUserAuthenticated('WASLTPARealm')){
var attrs = WL.Client.getUserInfo('WASLTPARealm', 'attributes');
if(attrs){
ltpaToken = attrs.LtpaToken;
console.log('Set ltpaToken again: '+ltpaToken);
}
}
}
// Pass LTPA token from client App to WL server(adapter)
var token = {'LtpaToken2' : ltpaToken};
var invocationData = {
adapter: "DummyAdapter",
procedure: "getAccountInfo",
parameters: [token]
};
WL.Client.invokeProcedure(invocationData, {
onSuccess: getSecretData_Callback,
onFailure: getSecretData_Callback
});
}
Step3. アダプターで LTPA トークンをバックエンド DP に渡す
function getServices( token) {
path = getPath("path/to/services");
var input = {
method : 'post',
returnedContentType : 'json',
path : path,
cookies: token
};
return WL.Server.invokeHttp(input);
}