oh... Supposing i did use j_security_check to authenticate. how do i check if the user is authenticated at a later stage and is it possible to programmitically remove his permission.
thnx On 3/14/06, David Delbecq <[EMAIL PROTECTED]> wrote: > > Am sorry but that's not how form based authentification works in j2ee. > We you are not authenticated, the container redirects your to > form-login-page > This page must contain a form with 2 fields : j_username and > j_password. The form action MUST be of type POST and the target MUST be > "j_security_check" (this is a special url that will be handled by > container, you can not map any servlet there). > > example: > <form method="POST" action="j_security_check"> > <table> > <tr> > <td>Login :</td> > <td><input type="text" name="j_username"></td> > </tr> > <tr> > <td>Mot de passe :</td> > <td><input type="password" name="j_password"></td> > </tr> > <tr> > <td><input type="submit" value="Entrer !"></td> > <td><input type="reset" value="Annuler"></td> > </tr> > </table> > </form> > > if you use any action other than j_security_check, this will be handled > like any other url query, and no authentification will take place. > > The reason you are having father -> login form -> father apparently > working, is simply because struts does a forward after action, which > take place internally and so is not concerned about the security > constraints. > > Jubin Kuriakose a écrit : > > >Hi David > >I did do that ... > > > > > > > >> <security-constraint> > >> <web-resource-collection> > >> <web-resource-name>father</web-resource-name> > >> <description>Security</description> > >> <url-pattern>/father/*</url-pattern> > >> <http-method>GET</http-method> > >> <http-method>POST</http-method> > >> </web-resource-collection> > >> > >> <auth-constraint> > >> <role-name>admin</role-name> > >> </auth-constraint> > >> > >> <user-data-constraint> > >> <transport-guarantee>NONE</transport-guarantee> > >> </user-data-constraint> > >> > >> </security-constraint> > >> > >> <login-config> > >> <auth-method>FORM</auth-method> > >> <form-login-config> > >> <form-login-page>/auth.do</form-login-page> > >> <form-error-page>/admin/error.jsp</form-error-page> > >> </form-login-config> > >> </login-config> > >> > >> <security-role> > >> <role-name>admin</role-name> > >> </security-role> > >> > >> > >>and my authentication is diverted to an action class which carries out > the > >> > >> > >actual checking. > > > >Here is auth.jsp that calls the AuthAction > > > > > > <html:form action="authAction"> > > > > > >> <TABLE width="100%" border="0" cellspacing="0" cellpadding="5"> > >> <TR align="center"> > >> <TD align="right" class="Prompt"></TD> > >> <TD align="left"> > >> <html:text property="j_username" > >>maxlength="20"></html:text> > >> </TD> > >> </TR> > >> <TR align="center"> > >> <TD align="right" class="Prompt">Username</TD> > >> <TD align="left"> > >> <html:text property="j_password" > >>maxlength="20"></html:text><BR> > >> </TD> > >> </TR> > >> <TR align="center"> > >> <TD align="right" class="Prompt">Password</TD> > >> <TD align="left"> > >> <html:submit value="Login"></html:submit> > >> </TD> > >> </TR> > >> </TABLE> > >> </html:form> > >> > >> > >> > > > >the action class is here > > > >public ActionForward execute(ActionMapping mapping, ActionForm form, > > > > > >>HttpServletRequest request, HttpServletResponse response) throws > Exception { > >> > >> String username = > ((DynaActionForm)form).getString("j_username"); > >> String password = > ((DynaActionForm)form).getString("j_password"); > >> System.out.println("Authentication execute called"); > >> try { > >> > >> SecurityAssociationHandler handler = new > >>SecurityAssociationHandler(); > >> SimplePrincipal user = new SimplePrincipal(username); > >> handler.setSecurityInfo(user, password.toCharArray()); > >> LoginContext loginContext = new LoginContext("example", > >> (CallbackHandler) handler); > >> loginContext.login(); > >> Subject subject = loginContext.getSubject(); > >> System.out.println("Subject--> " + subject.toString()); > >> Set<Principal> principals = subject.getPrincipals(); > >> principals.add(user); > >> > >> request.getSession(false).setAttribute("login",subject); > >> } catch (LoginException e) { > >> // TODO: handle exception > >> System.out.println("LoginException"); > >> return mapping.findForward("error"); > >> } > >> return mapping.findForward("father"); > >> } > >> > >> > >> > >> > > > >and it works fine. Each time a request comes to url /father/* the > >auth.jspis called, even if I was authorised the first time. > >Meaning I have to authenticate myself every time I acess anything in > >/father/ . how do i get over this behaviour and only authenticate my self > >only once... > > > >thnks for any help > > > > > > > >On 3/14/06, David Delbecq <[EMAIL PROTECTED]> wrote: > > > > > >>Do it like you would for any servlet. Either apply a security constraint > >>to struts servlet itself or apply security constraints to url path > >>(applying a security constraint to /admin/* applies also to > >>/admin/someStrutsAction.do) > >> > >>Jubin Kuriakose a écrit : > >> > >> > >> > >>>Hi all > >>>Can ayone give me links related to implemnting security-contraints(from > >>>web.xml) and struts together. I googled without any success. > >>> > >>>thnx jubs > >>> > >>> > >>> > >>> > >>> > >>--------------------------------------------------------------------- > >>To unsubscribe, e-mail: [EMAIL PROTECTED] > >>For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> > >> > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >