클라이언트 측
당신이 HTTP Authorization
헤더를 사용하는 API에 대한 자격 증명을 보내려면, 자격 증명을 지정 Basic username:password
의 형식입니다. username : password 문자열은 Base64 인코딩 스키마를 사용하여 인코딩되어야합니다. 그래서 예를 들어 헤더 같은 것을 볼 수 있었다 : 나머지 사양은 클라이언트 - 서버 통신에 상태가되어야한다는 주장으로
Authorization: Basic d2lraTpwZWRpYQ==
을, 당신은 모든 요청에 자격 증명을 사용하여 헤더를 포함해야합니다. 일반적으로 클라이언트 측에서 세션 쿠키를 사용하여 사용자를 식별하므로 모든 요청에 대해 자격 증명을 입력 할 필요가 없습니다.
서버 측이 저지 REST 서비스 내부의 자격 증명을 확인하려면, 당신은 잡아 들어오는 모든 요청을 차단해야합니다. Jersey는 ContainerRequestFilters
이라는 개념을 제공합니다. 이처럼의 web.xml에 서블릿 정의 내에서 이러한 유형의 필터를 추가 할 수 Tomcat을 사용하는 경우 예를 들어
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>your.package.BasicAuthFilter</param-value>
</init-param>
참조 된 클래스 BasicAuthFilter
요구 유니폼 ContainerRequestFilter
인터페이스를 구현하고 public ContainerRequest filter(ContainerRequest request)
메소드를 오버라이드 (override)합니다. 방법 내부 당신은 기본적으로 다음을 수행합니다 :
- 을
- 그들을 디코딩 요청의 인증 헤더에서 Base64로 인코딩 된 자격 증명을 가져 오기 (즉, 사용
javax.xml.bind.DatatypeConverter.parseBase64Binary()
)
- 이 UserDao (또는 다른 데이터 소스 제공)를 사용 자격 증명이 유효한지 확인하려면
- 유효성 확인에 실패하면
401 Unauthorized
반환 상태 코드 (예 :자격 증명이 유효한지 throw new WebApplicationException(Status.UNAUTHORIZED)
)
- 는 단순히
당신은 this 블로그 게시물에 아주 좋은 예를 찾을 수 처리에 대한 책임이 저지 자원에 위임하기 위해 요청을 반환합니다.
더 많은 피드백이 필요합니까? 그렇지 않고 내 대답이 도움이 되었다면이 질문에 대한 내 게시물을 수락 할 수 있습니다. Greetz :) – benjiman