현재 로그인된 사용자가 요청한 특정 레코드에 대한 액세스 권한이 있는지 확인

올바르게 링크된 UA 계정에 로그인된 악의적인 사용자가 시스템에 요청을 보내 다른 사용자와 관련된 데이터를 요청합니다. 이러한 상황이 발생하지 않게 하려면 모든 페이지 매개변수의 유효성을 검증하여 현재 로그인된 사용자를 역으로 추적할 수 있도록 해야 합니다. 판별 방법은 각 유형의 레코드마다 다릅니다. 예를 들어, 지급금이 지급된 케이스를 통해 역으로 지급금을 받은 참여자를 추적해 갈 수 있습니다.

curam.citizenaccount.security.impl.CitizenAccountSecurity API는 OOTB 페이지가 시민에게 제공하는 레코드 유형에 대해 이러한 검사를 수행하는 메소드를 제공합니다. 특정 정보는 이 API의 javadoc을 검토하십시오. 서로 다른 유형의 데이터를 제공하는 사용자 정의 페이지의 경우 페이지 매개변수의 유효성을 검증하도록 추가 검사를 구현해야 합니다. 이 검사는 사용자 정의 보안 API에 추가되며 문제의 façade 메소드가 호출합니다. 이 메소드는 요청된 레코드를 역으로 추적하여 현재 로그인된 사용자를 찾을 수 있는지 확인해야 합니다. 그렇지 않은 경우 사용자 이름, 메소드 이름 및 기타 데이터를 로그하고 즉시 트랜잭션을 실패로 처리해야 합니다(유효성 검증 헬퍼에 문제를 추가하고 트랜잭션을 계속 처리할 수 있도록 허용하는 경우와 반대).

if (paymentInstrument.getConcernRole().getID() 
   != citizenWorkspaceAccountManager
     .getLoggedInUserConcernRoleID().getID()) {
 
 /**
 * 전달된 지급 도구가 로그인된 사용자 로그,
 * 현재 사용자의 사용자 이름, 호출된 메소드 및
 * 기타 관련 데이터와 연관되지
 * 않음
 */
 
 // 일반 메시지 예외 처리(throw)
 throw PUBLICUSERSECURITYExceptionCreator
   .ERR_CITIZEN_WORKSPACE_UNAUTHORISED_METHOD_INVOKATION();
 }

위반에 관한 정보가 가능한 많이 로그되어야 하지만 예외 처리(throw)된 예외가 악의적인 사용자에게 유용할 수 있는 정보를 노출하지 않아야 합니다. 잘못된 사항과 관련된 정보가 포함되지 않은 일반 예외는 발생시켜야 합니다. curam.citizenaccount.security.impl.CitizenAccountSecurity API가 "이 페이지에 대한 액세스 권한이 없습니다"라는 일반 메시지를 표시합니다.