Sun Java System Message Queue 4.1 릴리스 노트

JAAS 지원

Message Queue는 기본으로 제공된 파일 기반 및 LDAP 기반 인증 메커니즘 이외에도 다양한 서비스를 브로커로 플러그인하여 Message Queue 클라이언트를 인증할 수 있도록 해주는 JAAS(Java Authentication and Authorization Service)도 지원합니다. 이 절에서는 브로커를 통해 JAAS 호환 인증 서비스에 사용할 수 있는 정보와 브로커를 구성하여 이러한 서비스를 사용하는 방법에 대해 설명합니다.

JAAS API에 대한 설명은 이 문서에서 다루지 않습니다. 자세한 내용을 보려면 다음 소스를 참조하십시오.

JAAS API는 J2SE에서 코어 API이므로 이는 Message Queue 런타임 환경을 구성하는 일부분입니다. JAAS는 응용 프로그램과 인증 메커니즘 간의 추상화 계층을 정의하며 원하는 메커니즘을 응용 프로그램 코드 변경 없이 플러그인할 수 있도록 해줍니다. Message Queue 서비스의 경우 추상화 계층은 브로커(응용 프로그램)와 인증 공급자 사이에 놓입니다. 몇 가지 브로커 등록 정보를 설정하여 JAAS 호환 인증 서비스를 플러그인할 수 있으며 브로커 코드의 중단 또는 변경 없이 이 서비스를 업그레이드할 수 있습니다.

JAAS 기반 인증을 사용하고 있는 경우 JMX 클라이언트를 사용하여 브로커를 관리할 수 있지만 이 경우 브로커를 시작하기 전에 JAAS 지원을 수동으로 설정(JAAS 관련 브로커 등록 정보 설정)해야 합니다. JMX API를 사용하여 해당 등록 정보를 변경할 수 없습니다.

JAAS 요소

그림 1–1에서는 JAAS의 기본 요소를 보여 줍니다. JAAS의 기본 요소(JAAS 클라이언트, JAAS 호환 인증 서비스 및 JAAS 구성 파일)를 나타냅니다.

그림 1–1 JAAS 요소

이 그림은 JAAS 호환 인증에 필요한 요소를 나타냅니다. 그림에 삽입된 텍스트는 해당 내용을 설명합니다.

다음 절에서는 Message Queue 서비스에서 이 요소를 사용해 JAAS 호환 인증을 제공하는 방법에 대해 설명합니다.

JAAS 및 Message Queue

다음 그림은 Message Queue 브로커가 JAAS를 사용하는 방법을 나타냅니다. 이 그림은 이전 그림의 JAAS 모델에 비해 좀 더 복잡한 구현을 나타냅니다.

그림 1–2 Message Queue가 JAAS를 사용하는 방법

이 그림은 Message Queue에서 JAAS 호환 인증을 사용하는 방법을 나타냅니다. 그림에 삽입된 텍스트는 해당 내용을 설명합니다.

이전 그림의 단순한 경우에서 보았듯이 인증 서비스 계층은 브로커와 구분되어 있습니다. 인증 서비스는 하나 이상의 로그인 모듈(LoginModule) 및 추가 인증 모듈(필요 시)로 구성됩니다. 로그인 모듈은 브로커와 동일한 Java 가상 머신에서 실행됩니다. Message Queue 브로커는 로그인 모듈에 LogInContext로 표현되며 브로커 런타임 코드의 일부인 CallBackHandler를 통해 로그인 모듈과 통신합니다.

또한 인증 서비스는 로그인 모듈에 대한 항목이 포함된 JAAS 구성 파일을 제공합니다. 구성 파일은 모듈의 사용 순서와 일부 사용 조건을 지정합니다. 브로커가 시작되면 JAAS는 Java 시스템 등록 정보 java.security.auth.login.config 또는 Java 보안 등록 정보 파일로 구성 파일을 찾습니다. 그런 다음 JAAS 구성 파일에서 브로커 등록 정보 imq.user_repository.jaas.name 값에 따른 항목을 선택합니다. 이 항목에는 인증에 사용할 로그인 모듈이 지정되어 있습니다. 그림에서와 같이 브로커는 로그인 모듈을 두 개 이상 사용할 수 있습니다. 구성 파일, 로그인 모듈 및 브로커 간의 관계는 그림 1–3에서 볼 수 있습니다.

브로커에서 JAAS 플러그인 인증 서비스를 사용하면 이 내용이 Message Queue 클라이언트에도 완전히 공개됩니다. 클라이언트는 사용자 이름과 비밀번호를 전달하여 이전과 같이 브로커에 계속 연결됩니다. 한편 브로커는 콜백 처리기를 사용하여 이 정보를 인증 서비스에 전달하며 서비스는 이 정보를 사용하여 사용자를 인증하고 결과를 반환합니다. 인증에 성공하면 브로커에서 연결을 부여하며, 인증에 실패하면 클라이언트 런타임에서 클라이언트가 처리해야 할 JMS 보안 예외를 반환합니다.

Message Queue 클라이언트가 인증된 후 추가 권한 부여가 필요할 경우에는 브로커에서 액세스 제어 파일을 참조하여 인증된 클라이언트가 대상 액세스, 메시지 사용, 대기열 찾아보기 등의 작업을 수행할 수 있는 권한이 부여되어 있는지 여부를 결정합니다(브로커가 정상일 경우).

JAAS 호환 인증 설정

JAAS 호환 인증 설정에는 이 유형의 인증을 선택하고 구성 파일의 위치를 지정하며 사용할 로그인 모듈에 대한 항목을 지정할 수 있는 브로커 및 시스템 등록 정보의 설정이 포함됩니다.

이 절에서는 JAAS 클라이언트, 로그인 모듈 및 JAAS 구성 파일 간의 관계와 JAAS 호환 인증 설정에 필요한 프로세스에 대해 설명합니다. 다음 그림은 구성 파일, 로그인 모듈 및 브로커 간의 관계를 나타냅니다.

그림 1–3 JAAS 지원 설정

이 그림은 JAAS 관련 파일 간의 관계를 나타냅니다. 그림에 삽입된 텍스트는 해당 내용을 설명합니다.

그림에서와 같이 JAAS 구성 파일 MyJAASCFile.config에는 시작점에서 그룹화된 여러 로그인 모듈에 대한 참조 항목이 포함됩니다. 브로커에서는 Java 시스템 등록 정보 java.security.auth.login.config 또는 Java 보안 등록 정보 파일을 참조하여 구성 파일을 찾습니다. 사용할 로그인 모듈은 구성 파일에 원하는 항목을 지정할 수 있는 브로커 등록 정보 imq.user_repository.jaas.name을 참조하여 결정합니다. 이 모듈에 대한 클래스는 lib/ext 디렉토리에 있습니다.

Message Queue에 JAAS 지원을 설정하려면 다음 단계를 완료해야 합니다. (개발 환경에서는 개발자가 다음의 모든 단계를 수행할 수 있습니다. 프로덕션 환경에서는 관리자가 이 작업의 일부를 인계 받습니다.)

  1. 인증 서비스를 구현하는 로그인 모듈 클래스를 하나 이상 만듭니다. 브로커에서 지원하는 JAAS 콜백 유형은 다음과 같습니다.

    javax.security.auth.callback.LanguageCallback

    브로커에서 이 콜백을 사용하여 브로커가 실행될 로켈을 인증 서비스에 전달합니다. 이 값은 현지화에 사용할 수 있습니다.

    javax.security.auth.callback.NameCallback

    브로커에서 이 콜백을 사용하여 연결 요청 시 Message Queue 클라이언트가 지정한 사용자 이름을 인증 서비스에 전달합니다.

    javax.security.auth.callback.TextInputCallback

    TextInputCallback.getPrompt()imq.authentication.type일 때 브로커에서 이 콜백을 사용하여 imq.authentication.type 값을 인증 서비스에 지정합니다. 이때 이 필드에 지정할 수 있는 유일한 값은 basic입니다. 이는 Base 64 비밀번호 인코딩을 나타냅니다.

    javax.security.auth.callback.PasswordCallback

    브로커에서 이 콜백을 사용하여 연결 요청 시 Message Queue 클라이언트가 지정한 비밀번호를 인증 서비스에 전달합니다.

    javax.security.auth.callback.TextOutputCallback

    브로커에서 이 콜백을 사용하여 텍스트 출력을 브로커 로그 파일에 기록함으로써 인증 서비스에 로깅 서비스를 제공합니다. 콜백의 MessageType ERROR, INFORMATION, WARNING은 각각 브로커 로그 수준 ERROR, INFOWARNING에 매핑됩니다.

  2. 로그인 모듈 클래스를 참조하는 항목을 사용하여 JAAS 구성 파일을 만들고 이 파일의 위치를 Message Queue 관리자에 지정합니다. (이 파일은 원격으로 찾을 수 있으며 해당 위치를 URL로 지정할 수 있습니다.)

  3. 로그인 구현 클래스를 참조하는 항목 이름을 JAAS 구성 파일에 기록합니다.

  4. 로그인 모듈을 구현하는 클래스를 jar 파일로 아카이브하고 이 jar 파일을 Message Queue lib/ext 디렉토리에 둡니다.

  5. JAAS 지원과 관련된 브로커 등록 정보를 구성합니다. 이에 대해서는 표 1–2에서 설명합니다.

  6. 다음 시스템 등록 정보를 설정하여 JAAS 구성 파일의 위치를 지정합니다.

    java.security.auth.login.config= JAAS_Config_File_Location

    예를 들어, 브로커를 시작할 때 다음과 같이 구성 파일을 지정할 수 있습니다.

    imqbrokerd -Djava.security.auth.login.config=JAAS_Config_File_Location

    다른 방법을 사용하여 JAAS 구성 파일의 위치를 지정할 수도 있습니다. 추가 정보는 다음 사이트를 참조하십시오.

    http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/LoginConfigFile.html

다음 표는 JAAS 지원 설정에 필요한 브로커 등록 정보에 대해 설명합니다.

표 1–2 JAAS 지원을 위한 브로커 등록 정보

등록 정보 

설명 

imq.authentication.type

Base 64 비밀번호 인코딩을 지정하려면 basic으로 설정합니다. 이는 JAAS 인증에 지정할 수 있는 유일한 값입니다.

imq.authentication.basic.user_repository

JAAS 인증을 지정하려면 jaas로 설정합니다.

imq.accesscontrol.type

file로 설정합니다.

imq.user_repository.jaas.name

JAAS 구성 파일에서 인증 메커니즘으로 사용할 로그인 모듈이 참조된 항목 중 원하는 항목 이름으로 설정합니다. 이 이름은 단계 3에서 기록한 이름입니다.

imq.user_repository.jaas.userPrincipalClass

Message Queue 액세스 제어에서 사용하는 이 등록 정보는 Message Queue 액세스 제어 파일에서 사용자 엔티티를 나타내는 Principal 이름을 추출하기 위해 브로커가 사용하는 로그인 모듈에 java.security.Principal 구현 클래스를 지정합니다. 이 등록 정보를 지정하지 않으면 연결 요청 시 Message Queue 클라이언트로부터 전달된 사용자 이름이 대신 사용됩니다.

imq.user_repository.jaas.groupPrincipalClass

Message Queue 액세스 제어에서 사용하는 이 등록 정보는 Message Queue 액세스 제어 파일에서 그룹 엔티티를 나타내는 Principal 이름을 추출하기 위해 브로커가 사용하는 로그인 모듈에 java.security.Principal 구현 클래스를 지정합니다. 이 등록 정보를 지정하지 않으면 Message Queue 액세스 제어 파일의 그룹 규칙(있는 경우)이 무시됩니다.