2016-06-13 12 views
0

Für meine Java Web Start App möchte ich einschränken, dass sie nur von der angegebenen Domäne ausgeführt werden kann. Wie kann ich die URL abrufen, von der meine App ausgeführt wurde? Ich habe versucht, auf diese Weise:Wie bekomme ich die URL, von der jnlp ausgeführt wurde?

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

Es funktioniert gut und zeigt mir den Ursprung aber nur, wenn die Code-Basis-Parameter in meiner jnlp Datei ist leer. Wenn es gesetzt ist, dann zeigt es die URL für die Codebasis, die falsch ist (wenn ich libs auf einem anderen Server hosste), weil ich die URL von wo mein jnlp ausgeführt werden soll. Zum Beispiel laufe ich meine jnlp von "www.jnlpdomain.com", aber die Codebasis ist "www.libdomain.com" - in diesem Fall würde ich gerne die erste URL wissen. Wenn ich Java-Konsolenprotokolle überprüfen kann ich sehen, folgende:

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()) 

So kann ich sehen, dass der Hostname korrekt in der ersten Zeile in Protokollen gedruckt wird, beginnend mit:

JNLP Ref (absolute): .... 

Wie kann ich dies in meiner App, damit ich die Domain validieren kann?

Antwort

1

Blick auf JAR File Manifest Attributes for Security: Codebase Attribute:

Das Codebase Attribut wird verwendet, um die Code-Basis der JAR-Datei auf bestimmte Domänen zu beschränken. Verwenden Sie dieses Attribut , um zu verhindern, dass jemand Ihre Anwendung auf einer anderen Website für böswillige Zwecke erneut bereitstellt.

+0

Ich weiß, aber das bedeutet, dass ich brauchen eine benutzerdefinierte bauen für jeden Kunden vorzubereiten. Ich möchte das vermeiden und habe nur einen allgemeinen Build, der für jeden Client funktioniert, aber immer noch überprüfen, ob sie ihn richtig benutzen (unter einer bestimmten Domain). –

+0

* "Dies bedeutet, dass ich einen benutzerdefinierten Build für jeden Client vorbereiten muss." * Es kommt auf eine einzelne Zeile in der Build-Datei! Du machst es schwer ... –

+0

Es ist eine Art Lösung für mich, aber ich würde trotzdem gerne wissen, woher dieser Hostname in "JNLP Ref (absolut) ..." kommt und ob er für mich im Java zugreifbar ist Code. –

Verwandte Themen