Forums

Home » Liferay Portal » Deutsch

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Moritz Reyer
Anzeigen von Portlets in einem bestimmten IP-Range
July 1, 2011 2:15 AM
Answer

Moritz Reyer

Rank: New Member

Posts: 2

Join Date: July 1, 2011

Recent Posts

Hallo liebe Liferay-Gemeinde,
da ich auf die schnelle nichts gefunden habe und absoluter Java Neuling bin kommt folgende Frage:

Kann ich über Java-Skipt sagen, dass ein Portlet nur angezeigt wird,
wenn der Anfragende Client eine bestimmte IP-Adresse hat.

Beispiel:
Rechner A (192.168.xxx.xxx), der in der Firmendomäne hängt darf Portlet XY angezeigt bekommen
Rechner B (217.145:xxx.xxx), der übers Internet auf das Portal zugreift darf Portlet XY nicht angezeigt bekommen.

Klar könnte ich es auch über Benutzergruppen steuern.
Es gibt aber Nutzer, die zum einen teilweise in der Domäne arbeiten und an einem anderen Tag wieder unterwegs ist.
Dadurch müsste ich für einen Benutzer mehrere Userprofile anlegen, dadurch habe ich aber dass Problem immer noch nicht
gelöst, da der Benutzer dann extern trotzdem mit dem internen Profil auf das Portal zugreifen könnte.

Vielen Dank für die Antworten
Kolja Köster
RE: Anzeigen von Portlets in einem bestimmten IP-Range
July 1, 2011 2:35 AM
Answer

Kolja Köster

Rank: Regular Member

Posts: 164

Join Date: May 11, 2009

Recent Posts

Hallo erstmal,
Moritz Reyer:
Hallo liebe Liferay-Gemeinde,
da ich auf die schnelle nichts gefunden habe und absoluter Java Neuling bin kommt folgende Frage:

Kann ich über Java-Skipt sagen, dass ein Portlet nur angezeigt wird,
wenn der Anfragende Client eine bestimmte IP-Adresse hat.

Schätze nein. Java Skript hast Du vermutich im Portlet eingesperrt, folglich ist das Portlet schon geladen angezeigt worden, wenn das Skript ausgeführt wird. Außerdem läuft das ganze auf der Maschine des Anwenders, das ist also vom Sicherheitsaspekt ein bedenktlicher Ansatz.

Moritz Reyer:

Beispiel:
Rechner A (192.168.xxx.xxx), der in der Firmendomäne hängt darf Portlet XY angezeigt bekommen
Rechner B (217.145:xxx.xxx), der übers Internet auf das Portal zugreift darf Portlet XY nicht angezeigt bekommen.

Klar könnte ich es auch über Benutzergruppen steuern.
Es gibt aber Nutzer, die zum einen teilweise in der Domäne arbeiten und an einem anderen Tag wieder unterwegs ist.
Dadurch müsste ich für einen Benutzer mehrere Userprofile anlegen, dadurch habe ich aber dass Problem immer noch nicht
gelöst, da der Benutzer dann extern trotzdem mit dem internen Profil auf das Portal zugreifen könnte.

Bleep? Jetzt hast Du mich abhängt. Die Zugriffsregelung über eine Benutzergruppe bleibt doch konsistent, völlig egal von wo sich jemand einloggt. Außerdem hast Du doch in Deinem Beispiel genau das geliche Problem. Mitarbeiter Bob kann ganz toll aus dem Firmennetz arbeiten (Rechner A aus Deinem Beispiel) und geht dann nach Hause und versucht es von dort aus nochmal (Rechner B ) was dann fehlschlägt.
Wenn Du das unbedingt na IP filtern willst würde ich das Router / Tomcat / IPTables machen lassen und nicht Java Skript.
Aber vielleicht verstehe ich Dich auch nicht richtig.

Schönes Wochenende

Gruß
Kolja
Armin Cyrus Dahncke
RE: Anzeigen von Portlets in einem bestimmten IP-Range
July 13, 2011 1:26 PM
Answer

Armin Cyrus Dahncke

LIFERAY STAFF

Rank: Junior Member

Posts: 80

Join Date: August 12, 2008

Recent Posts

Hi Moritz,

ich würde 2 org rollen erstellen, eine mit mehr und eine mit weniger berechtigungen auf die portlets die von der IP sperre versehen sind.

Dann nach dem Schema der Klasse DefaultLandingPageAction eigene Events erstellen und als Hook-plugin die portal.properties setzen:


#
# Login event
#
login.events.pre=
login.events.post=

#
# Logout event
#
logout.events.pre=
logout.events.post=


In deiner eigenen Action-Klasse setzt Du dann für den Benutzer die entsprechende Rolle.

gruss armin
Hiran Chaudhuri
RE: Anzeigen von Portlets in einem bestimmten IP-Range
August 29, 2011 2:52 PM
Answer

Hiran Chaudhuri

Rank: Regular Member

Posts: 188

Join Date: September 1, 2010

Recent Posts

Moritz Reyer:
Kann ich über Java-Skipt sagen, dass ein Portlet nur angezeigt wird,
wenn der Anfragende Client eine bestimmte IP-Adresse hat.

Keine gute Idee. Sowas muß auf der Serverseite abgefackelt werden, nicht auf dem Client. Also ist Java Deine Sprache der Wahl - oder der J2EE Standard.

Da ich glaube, daß Liferay keine solche Funktion bereitstellt, musst Du etwas selber bauen.
Ist das Portlet in einer eigenen War-Datei? Hast Du das Portlet selbst gebaut?

In dem Fall könntest Du sehr einfach den Java-Code des Portlet verändern, oder Du könntest in der web.xml Datei Veränderungen einführen. Ich gehe mal davon aus, daß Du damit weiterkommst...
Stefan Brötz
RE: Anzeigen von Portlets in einem bestimmten IP-Range
August 30, 2011 12:27 AM
Answer

Stefan Brötz

Rank: Junior Member

Posts: 78

Join Date: February 1, 2010

Recent Posts

Hmmm, aus irgendeinem Grund war mein gestriger Post für Gäste nicht sichtbar, obwohl ich eigentlich die Berechtigungen entsprechend gesetzt habe. Whatever.

Für alle die, die meinen gestrigen Post nicht gesehen haben, hier nochmal. Für alle anderen: Sorry for the noise.

Gruß, Stefan.

Stefan Brötz:
Hallo Moritz,

falls das fragliche Portlet eine Eigenentwicklung ist, dann könntest Du versuchen, in der render()-Methode abzufragen, von welcher IP-Adresse aus der Benutzer auf das Portal zugegriffen hat:
 1import javax.portlet.GenericPortlet;
 2import javax.portlet.RenderRequest;
 3import javax.portlet.RenderResponse;
 4import javax.servlet.http.HttpServletRequest;
 5import com.liferay.portal.util.PortalUtil;
 6
 7public class TestPortlet extends GenericPortlet {
 8  public void render(RenderRequest renderRequest, RenderResponse renderResponse) {
 9    HttpServletRequest servletRequest = PortalUtil.getHttpServletRequest(renderRequest);
10    String remoteAddr = servletRequest.getRemoteAddr();
11    if (isValidAddr(remoteAddr)) {
12      // do something
13    } else {
14      // do nothing or show error message
15    }
16  }
17
18  private boolean isValidAddr(String remoteAddr) {
19    // do some checks whether the address is within the company or not
20  }
21}

Gruß, Stefan.
Moritz Reyer
RE: Anzeigen von Portlets in einem bestimmten IP-Range
May 24, 2012 12:46 AM
Answer

Moritz Reyer

Rank: New Member

Posts: 2

Join Date: July 1, 2011

Recent Posts

Ist es den möglich, bei dem
1login.events.post

eine Rolle für den anzumeldenden Benutzer zu setzen und bei
1logout.events.pre

ihm diese Rolle diese Rolle wieder wegnehmen?

Stellt sich bei mir die Frage, ob die das logout event auch dann ausgeführt wird, obwohl der Benutzer nur das Fenster schließt und sich nicht ordnungsgerecht abmeldet.
Wird bei dem Auto auto logout dies auch greift.