2017-10-06 19 views
1

OData 모델에서 CSRF 토큰을 재설정해야합니다. UI5 설명서를 기반으로 나는 refreshSecurityToken(fnSuccess?, fnError?, bAsync?) 함수를 사용하여이 작업을 수행하려고합니다.SAP GATEWAY & UI5 : CSRF 토큰을 재설정하는 방법 =

var oDataModel = this.getOwnerComponent().getModel("ZMDM_ODATA_FILE_SRV"); 
    oDataModel.setTokenHandlingEnabled(true); 
    oDataModel.refreshSecurityToken(function() { 
     var token = oDataModel.getSecurityToken(); 
     console.log(token); 
     // can upload the file if token reset 
    }); 

문제는이 토큰은 30 분 동안 재설정되지 않습니다 그리고 우리의 세션 시간 제한 때문이다 :

(click here for reference)

나는 다음과 같은 코드를 썼습니다. 사실 세션 수명 동안 유효합니다. 난 다음 링크를 확인 :

https://blogs.sap.com/2014/08/26/gateway-protection-against-cross-site-request-forgery-attacks/

실제로 많은 사람들이이 문제를 가지고,하지만 난 토큰을 재설정에 대한 명확한 해결책을 찾을 수 없습니다. 토큰을 놓기위한 헤드 요청을 보내기 위해 프론트 엔드에서 필요한 모든 단계를 수행했습니다. 백엔드 게이트웨이 설정이나 ABAP 코딩과 관련하여 뭔가 빠져 있다고 생각합니다.

무엇을해야합니까?

답변

0

트랜잭션 SM05를 통해 CSRF 토큰 (사용자/토큰별로)을 삭제할 수 있습니다.

+0

감사합니다. CSRF 토큰을 재설정하고 삭제하지 않는 다른 모든 함수 모듈? –

+0

재설정하는 것은 무엇을 의미합니까? 토큰을 정확히 재설정하려는 이유는 무엇입니까? – mash

+0

새 파일을 CMS로 보내려면 재설정해야합니다. –

-1

프론트 엔드 응용 프로그램에서 토큰을 더 자주 가져오고 업데이트하도록 간격을 설정해야하는 것처럼 보입니다. 그러나 그것은 역설입니다. 백엔드가 30 분 동안 제한 시간을 설정하면 왜 더 오랫동안 라이브 상태로 유지할 수 있습니까?

SecurityToken 시간 제한은 활성 세션이 사용되고 있는지 그리고 개인이 "잊어 버려"시스템을 열어두고 읽지 않았는지/사용하지 않았는지 확인하는 데 중요합니다.

하지만 당신이 정말로 항상 사용할 수 프런트 엔드 세션을 유지하고 너무로 백엔드를 강제해야하는 경우가에서는 setInterval()을 CSRF를 가져 응용 프로그램 업데이트 할 수 있습니다

var oDataModel = this.getOwnerComponent().getModel("ZMDM_ODATA_FILE_SRV"); 
oDataModel.setTokenHandlingEnabled(true); 
var fnRefreshToken = oDataModel.refreshSecurityToken(function() { 
    var token = oDataModel.getSecurityToken(); 
    console.log(token); 
    // can upload the file if token reset 
}); 
window.setInterval(function(){ 
    fnRefreshToken; 
}, 1800000); // where 1.800.000 miliseconds represents 30 minutes 

을 그리고 새 토큰을 토큰 변수에 저장하고 토큰이 재설정 된 경우 업로드를 허용해야합니다.

친절히, Henrique Mattos