[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-2450) OWASP / New Session after Login
by ahus1 (JIRA)
OWASP / New Session after Login
-------------------------------
Key: JBSEAM-2450
URL: http://jira.jboss.com/jira/browse/JBSEAM-2450
Project: JBoss Seam
Issue Type: Feature Request
Affects Versions: 2.0.0.GA
Environment: Linux 2.6, jetty 6.1.5, java 6
Reporter: ahus1
Hello,
OWASP has compiled a "top 10" vulnerablilities for web applications.
One suggestion against session hijacking was the following: Start a new HTTP-Session after a successful login:
"Consider regenerating a new session upon successful authentication or privilege level change."
http://www.owasp.org/index.php/Top_10_2007-A7
Therefore there should be a (configurable?) switch to choose "continue with new session ID after successful log on"
I have thought of invalidating the current HTTP session, creating a new one and copying all elements from the old session to the new session in my Authenticator. But Seam 2.0.0 doesn't allow this: When I use the lowlevel functions this is blocked by IllegalStateException("Please end the HttpSession via Seam.invalidateSession()") in Lifecyle. When I use Seam.invalidateSession(), the session is only destroyed at the end of the request and I am unable to copy any objects in my Authenticator as the new session doesn't exist yet.
The workaround I have come up with is a filter, that destroys the complete session before the log in.
This is not very elegant, but it works for me as I don't have i.e. a shoping basket that I'd like to preserve.
A "nice" implementation in seam shouldn't have this limitation.
shane.bryzak(a)jboss.com asked for this ticket to be assigned to her.
The Java Class:
Code:
/**
* This filter enforces a new session whenever there is a POST, should be mapped
* to the URL of the login page in your web.xml
* @author Alexander Schwartz 2007
*/
public class NewSessionFilter implements Filter {
private Log log = LogFactory.getLog(NewSessionFilter.class);
private String url;
public void destroy() {
// empty.
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request instanceof HttpServletRequest) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
if (httpRequest.getMethod().equals("POST")
&& httpRequest.getSession() != null
&& !httpRequest.getSession().isNew()
&& httpRequest.getRequestURI().endsWith(url)) {
httpRequest.getSession().invalidate();
httpRequest.getSession(true);
log.info("new Session:" + httpRequest.getSession().getId());
}
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
url = filterConfig.getInitParameter("url");
if (url == null) {
throw new ServletException(
"please specify parameter 'url' with login URL");
}
}
}
The web.xml:
Code:
<filter>
<display-name>NewSessionFilter</display-name>
<filter-name>NewSessionFilter</filter-name>
<filter-class>
NewSessionFilter
</filter-class>
<init-param>
<param-name>url</param-name>
<param-value>/iss/login.jsf</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NewSessionFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/iss/login.jsf</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 11 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3493) The EntityHome should not preserve the value of its instance property after entering a nested transaction when having the @PerNestedConversation annotation
by Francisco Jose Peredo Noguez (JIRA)
The EntityHome should not preserve the value of its instance property after entering a nested transaction when having the @PerNestedConversation annotation
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Key: JBSEAM-3493
URL: https://jira.jboss.org/jira/browse/JBSEAM-3493
Project: Seam
Issue Type: Bug
Components: Core
Affects Versions: 2.0.2.SP1
Reporter: Francisco Jose Peredo Noguez
I have a reflective 1-n associations like
Person childof Person.
I would like to create a child from the PersonEdit.xhtml created by seam-gen then adapted by hands...
When I put @PerNestedConversation annotation to my PersonHome the behavior seems to be ok: Each conversation has it's own instance of PersonHome BUT: all of those instances is wired to the same instance of Person (the Entity)...
I've tried to trace modifications on the "instance" field of Home but it's never setted so it should stay to null and then call my createInstance() overrided method....but this never happen because (as I said) Person instance is the same as the parent conversation one....
Did I miss something?
Or is this a limitation of the CRUD framework?
nowhere on the code the field "instance" is setted so I believe this is due to javassist proxying that my eclipse debugger can't see...
If this feature isn't working how would you implement my "Create child" button to create a new Person has a child of the current conversation "personHome.instance" ?...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 12 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-4267) Token-based Remember-me is not working
by Johnny Ren (JIRA)
Token-based Remember-me is not working
--------------------------------------
Key: JBSEAM-4267
URL: https://jira.jboss.org/jira/browse/JBSEAM-4267
Project: Seam
Issue Type: Bug
Components: Security
Affects Versions: 2.1.2.GA, 2.1.1.GA
Environment: JBOSS 4.2.3
Reporter: Johnny Ren
Steps to reproduce the problem:
Step1: create an AuthenticationToken class as described in 15.3.5.1.
Stpe2: Modify the components.xml as described in 15.3.5.1.
<security:jpa-token-stor token-class="org.jboss.seam.example.jpa.AuthenticationToken"/>
<security:remember-me mode="autoLogin"/>
<event type="org.jboss.seam.security.notLoggedIn">
<action execute="#{redirect.captureCurrentView}"/>
<action execute="#{identity.tryLogin()}"/>
</event>
<event type="org.jboss.seam.security.loginSuccessful">
<action execute="#{redirect.returnToCapturedView}"/>
</event>
Step 3: Modify the home.xhtml under examples\jpa\view as described in 15.3.5
<div>
<h:outputLabel for="rememberMe" value="Remember me"/>
<h:selectBooleanCheckbox id="rememberMe" value="#{rememberMe.enabled}"/>
</div>
Step 4: execute ant jboss
Step 5: deploy the jboss-seam-jpa.war
Step 6: go to http://localhost:8080/jboss-seam-jpa/home.seam
Step 7: Select Remember me and use "demo/demo" to login.
Result:
javax.servlet.ServletException: #{identity.login}: org.jboss.seam.security.management.IdentityManagementException: Could not create account
package org.jboss.seam.example.jpa;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.jboss.seam.annotations.security.TokenUsername;
import org.jboss.seam.annotations.security.TokenValue;
/**
*
*/
@Entity
public class AuthenticationToken implements Serializable {
private Integer tokenId;
private String username;
private String value;
@Id @GeneratedValue
public Integer getTokenId() {
return tokenId;
}
public void setTokenId(Integer tokenId) {
this.tokenId = tokenId;
}
@TokenUsername
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@TokenValue
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 12 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-4436) No Conversation Context Error
by mike jones (JIRA)
No Conversation Context Error
-----------------------------
Key: JBSEAM-4436
URL: https://jira.jboss.org/jira/browse/JBSEAM-4436
Project: Seam
Issue Type: Bug
Components: Core
Affects Versions: 2.2.0.GA
Environment: WebSphere 7.0.5
Reporter: mike jones
Hello,
I have 3 simple pages with back and next buttons.
Here is the button in the atbc_search page
<s:button id="next" alt="Next button" value="#{messages['button.next']}" action="#{atSearchSFSB.next}" </s:button> value="#{messages['button.next']}" action="#{atbcSearchSFSB.find}" </s:button>
<s:button id="previous" alt="Previous button" value="#{messages['button.previous']}" action="#{atSearchSFSB.previous}" </s:button> value="#{messages['button.next']}" action="#{atbcSearchSFSB.previous}" </s:button>
When I navigate back and forth it works for a while then all of the sudden I get
10/7/09 9:41:13:616 EDT] 0000002b viewhandler E Error Rendering View[/view/atbc_change.xhtml]
java.lang.IllegalStateException: No active conversation context
at org.jboss.seam.core.Conversation.instance(Conversation.java:122)
at org.jboss.seam.ui.component.UIConversationId.getName(UIConversationId.java:44)
at org.jboss.seam.ui.util.ViewUrlBuilder.addParameter(ViewUrlBuilder.java:42)
at org.jboss.seam.ui.component.UISeamCommandBase.getUrl(UISeamCommandBase.java:85)
at org.jboss.seam.ui.renderkit.ButtonRendererBase.getOnClick(ButtonRendererBase.java:37)
at org.jboss.seam.ui.renderkit.ButtonRendererBase.doEncodeBegin(ButtonRendererBase.java:66)
at org.jboss.seam.ui.util.cdk.RendererBase.encodeBegin(RendererBase.java:79)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:802)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:232)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:118)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:826)
at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:220)
Its very consistent. It works for a while I can click the back and next buttons then I just get this error.
I really need help with this.
I am not getting this error when I use a regular JSF button. It only happens when I use
a Seam button.
Pages.xml
<page view-id="/view/atbc_search.xhtml">
<navigation from-action="#{atbcSearchSFSB.find}">
<rule if-outcome="find">
<redirect view-id="/view/atbc_change.xhtml" />
</rule>
</navigation>
</page>
<page view-id="/view/atbc_change.xhtml">
<navigation from-action="#{atbcChangeSFSB.back}">
<rule if-outcome="back">
<redirect view-id="/view/atbc_search.xhtml" />
</rule>
<rule if-outcome="next">
<redirect view-id="/view/home.xhtml" />
</rule>
</navigation>
<navigation from-action="#{atbcChangeSFSB.next}">
<rule if-outcome="next">
<redirect view-id="/view/home.xhtml" />
</rule>
</navigation>
</page>
I am also using the Seam Redirect Servlet
I am using WebSphere 7.0. Seam 2.2.0 GA
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
15 years, 12 months