1

IBM System i (AS/400)를 통해 DB2에서 백업 한 스프링 (IoC/MVC/Security)/JTOpen 프로젝트에서 작업 중입니다. 여기서는 논의 할 수없는 이유로 응용 프로그램의 모든 사용자에게 IBM i (i5/OS) 운영 체제에 대한 계정이 주어지기 때문에 그의 트랜잭션은 저널 (DB2 로그 파일)의 ID에 대해 기록됩니다. 이를 성취하기 위해 누군가가 자신의 자격 증명을 사용하여 시스템에 로그인하고 이에 따라 저널에서 자신의 이름과 거래를하게되면 연결을 설정했습니다.연결 풀링 + 쿼리 사칭

문제점 : 최근에 우리는 세션 당 연결 상태 대신 연결 풀을 얻는 방법에 대해 조사해 왔습니다. 애플리케이션이 일반 i5/OS 계정 (예 : SystemAccount)을 사용하여 시작되면 풀이 연결을 설정하면 사용자는 이러한 연결 중 하나에 요청을 로깅합니다. 사용자의 ID로 트랜잭션을 실행할 수있는 방법이 있습니까? 일반 시스템 계정을 사용하여 설정 했습니까?

답변

1

패키지는 AS400 연결 클래스를 사용할 때 IBM i 프로파일 토큰 및 권한 정보 클래스를 사용하여 사용자 프로파일 교환을 허용하는 클래스를 제공합니다.

JDBC을 사용하는 경우 Security-related APIs으로 전화를 걸어 연결 프로파일을 채택 할 수 있습니다.

  • Get Profile Handle (QSYGETPH)은 사용자 ID와 암호의 유효성을 검사하고 해당 사용자 프로파일에 대한 프로파일 핸들이라는 암호화 된 약어를 ​​작성합니다.
  • Set Profile Handle (QWTSETP)은 작업이 새 프로파일로 실행되도록 전환합니다.
  • Generate Profile Token (QSYGENPT)은 호출자에게 요청 된 프로파일에 대한 프로파일 토큰을 생성 할 권한이 있는지 검증 한 후 프로파일 토큰을 생성합니다.
  • Set To Profile Token (QSYSETPT)은 프로파일 토큰의 유효성을 검증하고 프로파일 토큰이 나타내는 사용자 및 그룹 프로파일에서 실행되도록 현재 스레드를 변경합니다.
+0

은' 하도록되어 com.ibm.as400.security.auth.AS400Credential' 클래스 '스왑()를 사용하여 시도'> 그것은 함께 다시 예외를 발생이 자격 에 기초하여 상기 현재 스레드 ID를 교환 "swap()은 IBM i에서 네이티브로 실행될 때만 지원됩니다." 동일한 메시지가 [스왑 기능의 JavaDoc] (http://javadoc.midrange.com/jtopen/index.html?com/ibm/as400/security/auth/AS400Credential.html)의 메모로 사용됩니다. 그렇다면 swap 명령은 AS/400에서 호스팅되는 프로그램에서 가져 오거나 내 전체 응용 프로그램을 AS/400에서 로컬로 호스팅해야합니까? – Eyad

+0

@Eyad 이는 인증 클래스의 제한 사항 일 수 있습니다. API 메서드를 사용하여 원격 연결을 통해 프로필을 채택했습니다. – jamesallman

+0

그 것처럼 보입니다. API 메소드는 매력처럼 작동했습니다. 그래서 남은 유일한 옵션은 신원을 전환하고 내 애플리케이션에서 호출하는 프로그램을 작성하는 것입니다 (보안 관점에서 볼 때 실제로 옳지 않다고 생각합니다). – Eyad

0

거래가 실제로 부적절하게 기록되었는지 확인 했습니까? 나는 그 (것)들이이기 위하여 예기하지 않을 것입니다.