문제

소켓을 열고 애플릿이 다운로드 한 로컬 호스트 (최종 사용자 시스템)의 서버와 통신하려면 애플릿이 필요합니다.

애플릿 보안에 대해 읽은 내용과는 달리, 서명 된 애플릿조차도 다운로드 된 다른 호스트에 소켓을 열 수없는 것 같습니다 (동일한 기계에서 완벽하게 작동 함).

나는 -selfcert를 사용하여 애플릿을 인증하고 Jarsigner를 사용하여 서명했지만 여전히 다른 호스트에 소켓을 열려고 할 때마다 다음을 얻습니다.

Java.lang.Exception: java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:9999 connect,resolve)

서명 된 애플릿을 사용하면 그렇게 할 필요는 없지만 Java 정책 파일을 변경하려고 시도했습니다.

grant codeBase "http://applethost:8080/socket" { permission java.security.AllPermission; permission java.lang.RuntimePermission "usePolicy"; };

Sigend Applets와의 거래는 무엇입니까? 그들은 다른 호스트에게 연결할 수 있습니까?

도움이 되었습니까?

해결책

예, 애플릿을로드 할 때 인증서를 수락하여 신뢰하기로 선택하면 SocketPermission을 포함하여 AllPermission이 부여됩니다. 로드 된 호스트 이외의 호스트와 연결되기 전에 서명 된 애플릿을 작성했습니다. Java 정책 파일을 일시적으로 변경하려고 시도 할 수 있습니다.

grant {
  permission java.security.AllPermission;
};
  • 정책 파일을보고 다른 정책을 정의하는지 확인하십시오.
  • JavaScript의 브라우저 설정을 확인하십시오.
  • 애플릿에 대한 인증서를 수락하고 사이트 인증서 목록에 설치되어 있는지 확인하십시오.
  • 보유한 보조금 코드베이스 라인이 애플릿 매니페스트의 코드베이스와 동일해야합니다.
  • 연결을 시도하기 전에 애플릿이 가지고있는 권한 목록을 인쇄 할 수 있습니다.
  • 애플릿 내에서 프로그래밍 방식으로 AllPermission을 부여하려고 시도 할 수 있습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top