2009-09-21 3 views
6

나는 다른 로컬 호스트 서버에 연결하는 데 요구되는 GoogleAppEngine 응용 프로그램을 가지고,하지만 난 서버 코드에서이 작업을 수행하기 위해 노력하고있어 때, 내가 얻을 :GoogleAppEngine 보안 사용 권한을 올바르게 조작 할 수 있습니까?

java.security.AccessControlException: access denied (java.net.SocketPermission localhost resolve)

내가 내 지정할 수 있다는 것을 알고 java.policy 공동으로

java -Djava.security.manager -Djava.security.policy=WEB-INF/java.policy

: 자바 가상 머신의 인수를 사용하여 추가 보안 부여 (나는 웹 응용 프로그램 실행 구성에서 그들을 지정) ntents : AppEngine에 자체에 필요한

grant { 
     permission java.net.SocketPermission "localhost:8081", "connect, resolve"; 
}; 

하지만 com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager에 private 클래스에있는 GoogleAppEngine 내부 보안 관리자를 무시하기 때문에 특성은 그 방법으로 사용할 수 없습니다.

GoogleAppEngine 내부 보안 관리자 클래스가 내 정책 파일을 항아리에있는 스텁 (허용) 파일로 수동으로 바꾸는 대신 사용할 수 있습니까?

+1

http://dmitrygusev.blogspot.com/2009/08/turn-java-security-manager-off-in.html에서 더미 클래스 솔루션을 찾았지만, 여전히 하나만 재정의하는 다른 방법을 찾고 싶습니다. 권한 –

+1

AppEngine에서 로컬 서버를 어떻게 실행 하시겠습니까? 서버를 다른 곳으로 돌리려면 다른 문제가 발생합니까? (방화벽, Google 제한) – phsiao

+0

네,하지만 localhost는 테스트 하나/대체, 내가 다른 오픈 서버 (예를 들어 jabber)와 연결할 수 있기를 원했지만, 그래, 아마도 그것은 GAE에서 제한 될 것입니다 (나는 내가하고있는 일을 진정으로 이해한다면 이러한 설정을 무시할 수있는 가능성을 가지고 있지만 GAE에서는 ok이지만 localhost에서는 괜찮다는 것을 알게되었다.) –

답변

2

App Engine에서 소켓을 열 수 없습니다. java.net 또는 직접을 통해 URLFetch API을 사용해야합니다. App Engine에 앱이 업로드되면 어떻게 'localhost'에 액세스 할 수 있습니까?

+0

URLFetch가 실제로 나의 요구에 맞을 것이다. 제 생각에, 고마워요. –

+0

... 아뇨, 죄송합니다, 내 서버의 포트가 80/443이 아니며, 오픈 파이어 서버이며 특정 자바 라이브러리를 사용하여 응용 프로그램을 사용합니다.이 라이브러리는 연결하기 위해'SocketAddress'를 사용합니다. 나는 GAE를 사용하지 않을 것이다. 질문에 대답이 없으므로 '80/443 이외의 연결은 허용되지 않습니다.' –

0

특별히 jabber (xmpp)를 사용해야하는 경우 앱 엔진의 XMPP API을 사용할 수 있습니다.

관련 문제