<i id='42BP4'><tr id='42BP4'><dt id='42BP4'><q id='42BP4'><span id='42BP4'><b id='42BP4'><form id='42BP4'><ins id='42BP4'></ins><ul id='42BP4'></ul><sub id='42BP4'></sub></form><legend id='42BP4'></legend><bdo id='42BP4'><pre id='42BP4'><center id='42BP4'></center></pre></bdo></b><th id='42BP4'></th></span></q></dt></tr></i><div id='42BP4'><tfoot id='42BP4'></tfoot><dl id='42BP4'><fieldset id='42BP4'></fieldset></dl></div>
<tfoot id='42BP4'></tfoot>

    • <bdo id='42BP4'></bdo><ul id='42BP4'></ul>
  • <small id='42BP4'></small><noframes id='42BP4'>

        <legend id='42BP4'><style id='42BP4'><dir id='42BP4'><q id='42BP4'></q></dir></style></legend>

        Embedded Jetty - 以编程方式添加基于表单的身份验证

        时间:2024-05-10

            <i id='7Xf1r'><tr id='7Xf1r'><dt id='7Xf1r'><q id='7Xf1r'><span id='7Xf1r'><b id='7Xf1r'><form id='7Xf1r'><ins id='7Xf1r'></ins><ul id='7Xf1r'></ul><sub id='7Xf1r'></sub></form><legend id='7Xf1r'></legend><bdo id='7Xf1r'><pre id='7Xf1r'><center id='7Xf1r'></center></pre></bdo></b><th id='7Xf1r'></th></span></q></dt></tr></i><div id='7Xf1r'><tfoot id='7Xf1r'></tfoot><dl id='7Xf1r'><fieldset id='7Xf1r'></fieldset></dl></div>
              <tbody id='7Xf1r'></tbody>
            • <small id='7Xf1r'></small><noframes id='7Xf1r'>

                  <bdo id='7Xf1r'></bdo><ul id='7Xf1r'></ul>
                  <legend id='7Xf1r'><style id='7Xf1r'><dir id='7Xf1r'><q id='7Xf1r'></q></dir></style></legend>

                  <tfoot id='7Xf1r'></tfoot>
                  本文介绍了Embedded Jetty - 以编程方式添加基于表单的身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  有没有一种方法可以按照以下方式以编程方式添加基于表单的身份验证?我正在使用我自己的 LdapLoginModule.最初我使用基本身份验证,它工作正常,但现在我想在登录页面上进行更多控制(如显示徽标等)

                  Is there a way to programmatically add Form based Authentication as per below? I am using my own LdapLoginModule. Initially I use Basic Authentication and it worked OK, but now I want more control on the Login page (like display logo, etc)

                  有什么好的样品吗?

                  我正在使用嵌入式码头 v8.1.7 .我不为嵌入式码头使用任何 web.xml.码头服务器以编程方式启动.

                  I am using embedded jetty v8.1.7 . I don't use any web.xml for embedded jetty. The jetty server is started programmatically.

                  <login-config>
                      <auth-method>FORM</auth-method>
                      <realm-name>Test JAAS Realm</realm-name>
                      <form-login-config>
                          <form-login-page>/login.html</form-login-page>
                          <form-error-page>/error.jsp</form-error-page>
                      </form-login-config>
                  </login-config>
                  

                  推荐答案

                  创建一个 FormAuthenticator 并在 ServletContextHandlerSecurityHandler 上设置它.这段代码创建了一个带有 2 个 servlet 的普通服务器.第一个 servlet 以 hello 消息响应已验证的用户名.第二个 servlet 实现了一个简单的登录表单.

                  Create a FormAuthenticator and set this on your SecurityHandler for the ServletContextHandler. This code creates a trivial server with 2 servlets. The first servlet responds with a hello messsage to the authenticated user name. The second servlet implements a trivial login form.

                  您应该能够将代码粘贴到 main[] 中并运行(您的类路径中需要以下 jar;jetty-serverjetty-servletjetty-security).要进行测试,请将浏览器指向 http://localhost:8080,在看到 hello username 的响应之前,系统会提示您输入凭据(用户名/密码).p>

                  You should be able to paste the code into a main[] and run (you will need the following jars in your classpath; jetty-server, jetty-servlet and jetty-security). To test, point a browser at http://localhost:8080, you should be prompted for credentials (username / password) before seeing a response of hello username.

                  Server server = new Server(8080);
                  ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS | ServletContextHandler.SECURITY);
                  
                  context.addServlet(new ServletHolder(new DefaultServlet() {
                    @Override
                    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                      response.getWriter().append("hello " + request.getUserPrincipal().getName());
                    }
                  }), "/*");
                  
                  context.addServlet(new ServletHolder(new DefaultServlet() {
                    @Override
                    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                      response.getWriter().append("<html><form method='POST' action='/j_security_check'>"
                        + "<input type='text' name='j_username'/>"
                        + "<input type='password' name='j_password'/>"
                        + "<input type='submit' value='Login'/></form></html>");
                      }
                  }), "/login");
                  
                  Constraint constraint = new Constraint();
                  constraint.setName(Constraint.__FORM_AUTH);
                  constraint.setRoles(new String[]{"user","admin","moderator"});
                  constraint.setAuthenticate(true);
                  
                  ConstraintMapping constraintMapping = new ConstraintMapping();
                  constraintMapping.setConstraint(constraint);
                  constraintMapping.setPathSpec("/*");
                  
                  ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler();
                  securityHandler.addConstraintMapping(constraintMapping);
                  HashLoginService loginService = new HashLoginService();
                  loginService.putUser("username", new Password("password"), new String[] {"user"});
                  securityHandler.setLoginService(loginService);
                  
                  FormAuthenticator authenticator = new FormAuthenticator("/login", "/login", false);
                  securityHandler.setAuthenticator(authenticator);
                  
                  context.setSecurityHandler(securityHandler);
                  
                  server.start();
                  server.join();
                  

                  这篇关于Embedded Jetty - 以编程方式添加基于表单的身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何使用 JNDI 将参数传递给 LDAP 自定义套接字工厂? 下一篇:如何使用 jndi 显示 ldap 目录的所有对象类描述

                  相关文章

                  <legend id='GylB3'><style id='GylB3'><dir id='GylB3'><q id='GylB3'></q></dir></style></legend>
                  <i id='GylB3'><tr id='GylB3'><dt id='GylB3'><q id='GylB3'><span id='GylB3'><b id='GylB3'><form id='GylB3'><ins id='GylB3'></ins><ul id='GylB3'></ul><sub id='GylB3'></sub></form><legend id='GylB3'></legend><bdo id='GylB3'><pre id='GylB3'><center id='GylB3'></center></pre></bdo></b><th id='GylB3'></th></span></q></dt></tr></i><div id='GylB3'><tfoot id='GylB3'></tfoot><dl id='GylB3'><fieldset id='GylB3'></fieldset></dl></div>

                      <bdo id='GylB3'></bdo><ul id='GylB3'></ul>
                  1. <tfoot id='GylB3'></tfoot>

                    <small id='GylB3'></small><noframes id='GylB3'>