2016-06-13 2 views
0

내 Java Web Start 앱의 경우 지정된 도메인에서만 실행할 수 있도록 제한하려고합니다. 내 앱이 실행 된 URL을 어떻게 얻을 수 있습니까? 그것은 잘 작동하고 나에게 출처를 표시하지만 내 JNLP 파일의 코드베이스 매개 변수가 비어있는 경우에만jnlp가 실행 된 URL을 얻는 방법은 무엇입니까?

final BasicService bs = (BasicService) ServiceManager.lookup("javax.jnlp.BasicService"); 
final URL codeBase = bs.getCodeBase(); 

:이 방법을 시도했다. 그것이 설정되면, 코드베이스에 대한 URL을 보여 주며, 이는 내 jnlp가 실행 된 곳의 URL을 원하기 때문에 (다른 서버에서 libs를 호스팅 할 때) 잘못된 것입니다. 예를 들어 "www.jnlpdomain.com"에서 jnlp를 실행하지만 코드베이스는 "www.libdomain.com"입니다.이 경우 첫 번째 URL을 알고 싶습니다. 나는 자바 콘솔 로그를 확인하면 내가 다음 볼 수 있습니다

JNLP Ref (absolute): .... 

는 어떻게 얻을 수 있습니다 :

JNLP Ref (absolute): www.jnlpdomain.com/my_jnlp_file.jnlp 
.... (some few lines) 
=====CODEBASE=====: www.libdomain.com (this line is printed by me with the bs.getCodeBase()) 

그래서 내가 호스트 이름이 로그의 첫 번째 줄에 제대로 인쇄되는 것을 볼 수 있습니다로 시작 내 응용 프로그램에서, 그래서 도메인을 확인할 수 있습니까? JAR File Manifest Attributes for Security: Codebase Attribute에서

답변

1

봐는 :

Codebase 속성은 특정 도메인에 대한 JAR 파일의 코드베이스를 제한하는 데 사용됩니다. 다른 사람이 다른 웹 사이트에 악의적 인 목적으로 응용 프로그램을 재배포하는 것을 방지하려면이 속성 을 사용하십시오.

+0

나는 알고있다. 그러나 이것은 각 클라이언트에 대한 맞춤 빌드를 준비해야한다는 것을 의미한다. 나는 이것을 피하고 각각의 클라이언트에 대해 작동 할 수있는 하나의 일반 빌드를 갖고 싶지만 여전히 (특정 도메인에서) 제대로 사용하는지 확인하십시오. –

+0

* "이것은 각 클라이언트에 대한 사용자 정의 빌드를 준비해야 함을 의미합니다."* 빌드 파일의 한 줄로 나타납니다! 당신은 소리가 어렵게 .. –

+0

그것은 나를위한 솔루션의 일종이지만, 여전히 "JNLP 참조 (절대) 에서이 호스트 이름을 알고 싶습니다 ..."에서 온 그리고 그것은 자바에서 나를 위해 액세스 할 수 있다면 암호. –

관련 문제