2013-01-03 4 views
1

애플리케이션의 특정 중요한 기능에 매개 변수를 사인해야한다는 요구 사항이 있습니다. 메소드 호출은 RMI로 수행됩니다. 내 첫 번째 생각은 매개 변수에 대한 래퍼 클래스를 작성하고 SignedObject를 사용하여 서명하는 것이 었습니다. 그러나 이로 인해 많은 래퍼 객체가 생성됩니다.Java에서 메소드 호출을 서명하고 확인하십시오.

좀 더 일반적인 방법으로이 작업을 수행하는 방법에 대한 아이디어가 있습니까? 은 RMI의 발신 및 수신 기능을 무시하고 광고 서명 및 확인을 할 수 있습니까?

+0

경영진에게 이것이 * 전혀 * 지정되어 있지 않음을 잊지 마십시오. 좋은 키 관리 체계가 필요하고, 자신의 프로토콜을 설계하고, 암호 기술을 탐구하고, 그것이 작동하고 공격에 취약하지 않다는 것을 어떻게 든 증명할 수 있습니다. 다행히도 성능 제약이 너무 많지 않거나 문제가 발생할 수 있습니다. –

답변

0

메서드를 호출하고 관련 권한을 부여하는 사용자를 인증하는 것으로 충분하지 않습니까? 이 방법을 사용하면 원하는 매개 변수를 전달할 수 있으며 한 번만 확인하면됩니다. 사용자를 가장 할 수 있으면 코드를 사용하여 매개 변수에 서명 할 수 있다고 가정 할 수 있어야합니다.

매개 변수가 문자열 인 경우 매개 변수 값을 만드는 모든 사용자가 개인 키를 사용하여 암호화 할 수 있으며 공개 키를 사용하여 암호를 해독 할 수 있습니다. 매개 변수 값을 실제로 노래 한 사람들임을 의미합니다. 서명 된 랩퍼로 모든 매개 변수를 랩핑하면 높은 오버 헤드가 발생할 수 있습니다.

1

SSL을 통한 RMI를 실행할 수 있습니다. Sun에서 JSR을 몇 개 만들었지 만 전문가위원회에서이를 거부했습니다. 이제는 비표준 방식을 선택해야합니다. 대부분의 앱 서버는 그렇게 믿습니다.

+0

문제는 SSL이 애플리케이션 외부에 있고 우리가 그 애플리케이션에만 의존 할 수 없기 때문에 SSL을 수동으로 서명해야한다는 것입니다. 여기에 수많은 레이어가 있습니다. –

0

물론 여러 가지 방법이 있습니다. 하나는 참으로 데이터 스트림에 서명하는 것입니다. 또 하나는 인수 객체 인스턴스와 바이트 배열로 인코딩 된 기본 유형에 서명하는 것입니다. 두 가지 방법 모두 어느 시점에서 RMI에 연결해야합니다.

아마도 RMI 서비스를 SOAP 서비스 뒤에 배치하는 것이 더 좋을 것입니다. here을 참조하십시오. 그런 다음 웹 서비스를 만들 수 있습니다. 웹 서비스가 있으면 WS-Security을 배포 할 수 있습니다. 이 경우 전송 계층 보안을 위해 미리 정의되고 조사 된 메시지 형식을 사용할 수 있습니다.

+0

Tom Hawtins 외에도 SSL을 사용하는 답변이 있습니다. 이는 아마도 대부분의 독자를위한 방법이며, 추가 제약이있는 원래의 질문자를 제외하고는 분명히 있습니다. –

+0

이 방법은 아마도 좋은 해결책 일 수 있습니다.하지만 이것이 쉬운 해결책이라는 것을 의미하지는 않습니다. 많은 작업을 준비하십시오. 컨설턴트에게 구현 및/또는 테스트를 맡길 수도 있습니다. –

+0

RMI 호출간에 SOAP 레이어를 배치 할 수있는 옵션이 없다고 생각합니다. RMI에 연결하는 방법에 대해 이야기합니다. 어떻게하는지에 대해 알 수 있습니까? –

관련 문제