324.3. 인증


권한 부여에 사용되는 보안 인증 정보를 가져오는 프로세스는 이 구성 요소에서 지정하지 않습니다. 필요에 따라 교환에서 인증 정보를 가져오는 자체 프로세서 또는 구성 요소를 작성할 수 있습니다. 예를 들어 HTTP 요청 헤더에서 인증 정보를 가져오는 프로세서를 만들 수 있습니다. 자격 증명을 수집하는 방법에 관계없이 In 메시지 또는 SecurityContextHolder 에 배치하여 Camel Spring Security 구성 요소가 액세스할 수 있도록 해야 합니다.

import javax.security.auth.Subject;
import org.apache.camel.*;
import org.apache.commons.codec.binary.Base64;
import org.springframework.security.authentication.*;


public class MyAuthService implements Processor {
    public void process(Exchange exchange) throws Exception {
        // get the username and password from the HTTP header
        // http://en.wikipedia.org/wiki/Basic_access_authentication
        String userpass = new String(Base64.decodeBase64(exchange.getIn().getHeader("Authorization", String.class)));
        String[] tokens = userpass.split(":");

        // create an Authentication object
        UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken(tokens[0], tokens[1]);

        // wrap it in a Subject
        Subject subject = new Subject();
        subject.getPrincipals().add(authToken);

        // place the Subject in the In message
        exchange.getIn().setHeader(Exchange.AUTHENTICATION, subject);

        // you could also do this if useThreadSecurityContext is set to true
        // SecurityContextHolder.getContext().setAuthentication(authToken);
    }
}

SpringSecurityAuthorizationPolicy 는 필요한 경우 Authentication 오브젝트를 자동으로 인증합니다.

Exchange.AUTHENTICATION 헤더 대신 SecurityContextHolder 를 사용할 때 알아야 할 두 가지 문제가 있습니다. 먼저 컨텍스트 소유자는 스레드 로컬 변수를 사용하여 Authentication 개체를 유지합니다. seda 또는 jms 와 같이 스레드 경계를 통과하는 모든 경로는 Authentication 개체를 손실됩니다. 두 번째, Spring Security 시스템은 컨텍스트의 Authentication 개체가 이미 인증되고 역할이 있을 것으로 예상되는 것으로 보입니다(자세한 내용은 기술 개요 섹션 5.3.1 참조).

camel-spring-security 의 기본 동작은 Exchange.AUTHENTICATION 헤더에서 주체 를 찾는 것입니다. 이 주체에는 org.springframework.security.core.Authentication 의 하위 클래스여야 하는 주체 가 하나 이상 포함되어야 합니다. org.apache.camel.component.spring.security. Authentication Adapter 의 구현을 < authorizationPolicy >에 제공하여 Authentication 오브젝트에 대한 주체 매핑을 사용자 지정할 수 있습니다. 이 기능은 Spring Security를 사용하지 않지만 주체 를 제공하는 구성 요소로 작업하는 경우에 유용할 수 있습니다. 현재 CXF 구성 요소만 Exchange.AUTHENTICATION 헤더를 채웁니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.