2014-05-09 5 views
1

이제 Java 서블릿에 인증을 추가하는 방법을 연구 중입니다. 서블릿에 인증을 사용하는 방법을 보여주는 예제가 this인데, 이는 Tomcat 구현을위한 것입니다. 우리의 프로덕션 환경은 제로니모를 사용합니다. 제로니모에서 어떻게 똑같은 일을 할 수 있습니까?Geronimo에서 실행중인 Java 서블릿에 대한 간단한 인증

Geronimo에서 실행되는 서블릿에 대한 인증을 요구하는 방법을 아직 많이 찾지 못한 채로 Geronimo에 대한 기본 지식을 배웠습니다.

+0

Geronimo에서 지원하는 J2EE 기반 인증을 찾고 있습니까? – Keerthivasan

+0

먼저 게시 한 예제에서 설명한대로 간단한 사용자 파일을 작성하고 싶습니다. 이 예에서 사용자는 tomcat-users.xml 파일에 사용자를 추가하는 것이 좋습니다. 이 첫 번째 단계는 (적어도이 프로토 타입에 대한 다른 인증 방법이 없어서) 내가 일하고 싶다는 것입니다. – WildBill

+0

설정 (tomcat 사용자 파일)을 제외하고 동일합니다. –

답변

0

사용 보안 필터, 그들은 서블릿에서 인증을 구현하는 가장 좋은 방법입니다, 모든 링크에 대한 로-간단한 인증은 규칙을 사용한 경우

<filter> 
<filter-name>loginFilter</filter-name> 
<filter-class>com.nawab.filters.LoginFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>loginFilter</filter-name> 
<url-pattern>/* </url-pattern> 
</filter-mapping> 

(web.xml 파일에) 이렇게 될 것입니다. 행동 (web.xml 파일에서) 작업 만 필터를 사용하기위한

<filter> 
<filter-name>loginFilter</filter-name> 
<filter-class>com.nawab.filters.LoginFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>loginFilter</filter-name> 
<url-pattern>*.do</url-pattern> 
</filter-mapping>  

당신이 코드에 기록됩니다 com.nawab.filters의 클래스 LoginFilter (web.xml에 매핑 주소)를해야 할 그것은 Lo로 doFilter() 메서드입니다. ginFilter.class

public class LoginFilter implements Filter { 
public void init(FilterConfig arg0) throws ServletException { 
} 

public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain chain) throws IOException, ServletException { 

    HttpServletResponse httpRes = (HttpServletResponse) response; 
    String ipAddress = request.getRemoteAddr(); 
    // your ipAddress 
    String yourIpAddress = "192.168.1.xxx"; 
    // name you want to authenticate 
    String name = "nawab"; 
    // ip address validation 
    if (!request.getParameter(ipAddress).equals(yourIpAddress)) { 
     httpRes.sendRedirect("wrongIp.jsp"); 
    } 
    if (!request.getParameter("fname").equals(name)) { 
     httpRes.sendRedirect("index.jsp"); 
    } 
    chain.doFilter(request, response); 
} 

public void destroy() { 
}} 

여기 chain.doFilter (request, response); 그대로 가자. 그렇지 않으면 사용자는 각각의 JSP로 리디렉션됩니다.

+0

암호는 어디에 저장되어 있습니까? 또한 이것은 사용자 이름을 일반 텍스트로 보냅니 까? 맞습니까? 그렇다면 트래픽을 보호하고 암호화하는 방법은 무엇입니까? Username Security- 에 대한 – WildBill

+0

1. POST 프로토콜을 사용하면 사용자 이름이 URL로 전송되지 않습니다. 2. 자바 스크립트로 보내기 전에 사용자 이름을 암호화하고 암호화 된 사용자 이름을 보내고 데이터베이스에서 암호화 된 버전을 가져 와서 비교하십시오. 비밀번호 - 1. 데이터베이스에 암호화 된 비밀번호를 저장해야합니다. 분명히 데이터베이스에서 비밀번호를 가져 와서 비교할 것입니다 (이 예는 흐름을 알려주는 예제였습니다. doFilter()는 자바 에서처럼 매일 개발자로서 이러한 작업을 수행합니다 :)) – bondkn

1

geronimo-web.xml 안에 구성해야합니다. web.xml은 제공 한 예와 비슷합니다. 여기

그것의 대부분을 보여 자원 다음 사용자비밀번호는 데이터베이스에있는이 예에서

http://geronimo.apache.org/GMOxDOC20/web-application-security-sample.html

.

하지만 그것은 geronimo-web.xml (http://geronimo.apache.org/xml/ns/security-1.1) 내부를 모두 구성하는 것이 가능

이 링크는 users/groups/realms 관리에 대한 정보를 제공하는 편집을 할


.

http://geronimo.apache.org/GMOxDOC20/administering-users-and-groups.html

+1

모든 서블릿 컨테이너는 BASIC 및 폼 기반 인증 구현을 제공합니다. @edubriguenti는 친절하게 geronimo에 대한 관련 문서 링크를 제공했습니다. 대부분이 코드는 0 행으로 목적을 잘 수행 할 것입니다. –

1

당신은 당신의 작업을 용이하게하기 위해 pac4j library를 사용할 수 있습니다. pac4j는 여러 인증 메커니즘 (양식, Facebook, CAS ...)을 지원합니다.

귀하의 질문은 양식 또는 http 기본 인증과 같은 간단한 메커니즘을 찾고 있음을 나타냅니다. 이 경우 UsernamePasswordAuthenticator 인터페이스를 구현하고 예를 들어 사용자 이름/비밀번호 쌍이 포함 된 파일에 의존해야합니다. 기밀성과 무결성을 모두 보존하기 위해 유선상의 자격 증명을 제출할 때는 항상 HTTPS을 사용해야합니다.

pac4j가 j2e 컨텍스트에서 어떻게 통합되는지 보려면 j2e demo webapp을보십시오.