여러 RESTful 클라이언트가 사용할 보안 라이브러리를 만드는 중입니다. Java EE 5, Jersey 1.17 및 Maven을 사용하고 있습니다. 클라이언트는 내 라이브러리를 사용하여 토큰을 사용하여 타사 앱을 호출합니다. 그런 다음 타사 앱이 만료, 범위 및 사용자 ID와 같은 해당 토큰에 대한 모든 정보를 반환합니다. 제 아이디어는 Authorization 헤더가 있는지 확인하는 필터를 만드는 것입니다. 그렇다면 타사 앱을 호출합니다. 타사 응용 프로그램에서 토큰의 유효성을 검사하고 토큰 정보를 반환하면 TokenInformation 개체에 저장된 정보를 다시 리소스에 반환해야합니다.Jersey와 Java EE를 사용하여 ServletRequest를 검색하는 방법
public class MyFilter implements Filter{
@Override
public void doFilter(final ServletRequest request,
final ServletResponse response,
final FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String header = req.getHeader("Authorization");
TokenInformation info = new TokenInformation();
info = buildInfo(info);
if (true) {
request.setAttribute("auth", info);
chain.doFilter(request, response);
} else {
handleError(response);
}
}
}
그래서, 추가 속성과 요청에 TokenInformation 객체를 전송하여, 나는 자원 클래스에 나중에 검색 할 수있을 것입니다 : 이전 포스트에서, 누군가가 내가이 작업을 수행 할 수 있다고 말했다. 문제는 Java EE 5를 사용하고 있으며 @Context 주석을 사용하여 ServletRequest 객체를 삽입 할 수 없다는 것을 인식하지 못했습니다. 리소스 클래스에서 ServletRequest 객체에 다시 액세스하여 어떻게 DAO와 같은 TokenInformation 객체에 액세스 할 수 있습니까?
내가 저지를 사용하고 방법은이 작업을 수행하여 내 web.xml
:
@Path("")
public class Security implements ISecurity{
@Override
public Response get(String upId) {
String test = "";
try{
TokenInformation tI = (TokenInformation) HttpServletRequestWrapper.
test = "test1";
}catch(Exception e){
System.out.println(e.getMessage());
}
return null;
}
}
:
이
public class SecurityResource extends Application{
public static final String SUPPORTED_REPRESENTATIONS = MediaType.APPLICATION_XML
+ "," + MediaType.APPLICATION_JSON;
@Override
public Set<Class<?>> getClasses() {
HashSet<Class<?>> set = new HashSet<Class<?>>();
set.add(Security.class);
return set;
}
}
Security
수업이 있습니다
<servlet>
<servlet-name>Security API</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.ni.apps.engineering.securitylibrary.resources.SecurityResource</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Security API</servlet-name>
<url-pattern>/1/*</url-pattern>
</servlet-mapping>
SecurityResource
클래스이있다
나는 서블릿 자체에 액세스 할 수있는 방법을 잘 모르겠어요, 그래서 당신이 올바른 경로에 날 지점 수 바라고 좀 더 정보를 추가하고있다. – Nacho321
MVC 패턴에서 어느 것을 사용합니까? JSF, Spring MVC, Struts, Servlet –
추가 정보를 추가했습니다. 도움이 되었기를 바랍니다! – Nacho321