Java / Spring:如何进入身份验证请求

时间:2013-10-22 01:39:53

标签: java spring authentication

我正在开发一个JAXRS Web服务,我需要实现身份验证和授权。授权部分很简单,但我试图了解如何进行身份验证。请注意,我知道身份验证是什么,但我正在寻找实现,或者创建自己的身份验证。我已经阅读了有关Spring安全性的文章,但是很多这些解决方案都涉及XML配置,而我正在进行Zero XML配置。我知道这是一个很高的要求。但到目前为止一直很好,直到认证。这是我的Jetty首发:

package com.example.app.web;

import com.example.app.context.Config;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

public class JettyStarter {

    public static void main( final String[] args ) throws Exception {
        Server server = new Server(8080);
        final ServletHolder servletHolder = new ServletHolder(new CXFServlet());
        final ServletContextHandler context = new ServletContextHandler();
        context.setContextPath("/");
        context.addServlet(servletHolder, "/app/*");
        context.addEventListener(new ContextLoaderListener());
        context.setInitParameter("contextClass", AnnotationConfigWebApplicationContext.class.getName());
        context.setInitParameter("contextConfigLocation", Config.class.getName());
        server.setHandler(context);
        server.start();
        server.join();
    }
}

我的Config类同样没有XML:

@Configuration
@ComponentScan("com.example.app")
public class Config { 

    @Bean(destroyMethod = "shutdown")
    public SpringBus cxf() {
        return new SpringBus();
    }

    @Bean
    public JaxRsApiApplication jaxRsApiApplication() {
        return new JaxRsApiApplication();
    }

// etc...

}

现在我想挂钩进入某种身份验证阶段,如果不是用XML编程,我不介意自己编写身份验证。但是如何通知Spring我想在api路由被命中之前检查身份验证?这个问题有意义吗?

作为一种额外的复杂性,像健康检查这样的路由不需要身份验证,而执行真实事务的路由(例如创建帐户,更新用户信息等)确实需要身份验证。在完美的场景中,我让nginx坐在我的Java应用服务器(Jetty)前面,并根据需要反向代理。我假设我可以让nginx告诉我有关请求的所有信息,包括cookie,所以这应该是可能的。非常感谢帮助!

0 个答案:

没有答案