웹 서비스의 Kerberos 사용법 개요

Kerberos 토큰을 사용하여 LTPA(Lightweight Third Party Authentication) 및 보안 통신 토큰 등과 같이 현재 다른 2진 보안 토큰을 사용하여 완료할 수 있는 것과 유사한 기능을 완료할 수 있습니다.

토큰 생성기

KDC(Key Distribution Center)에서 Kerberos 토큰을 작성한 후에 웹 서비스 보안 생성자가 토큰을 인코딩하고 이를 SOAP 메시지에 삽입하고 토큰 이용 또는 수락을 위해 토큰을 전파합니다. 메시지 무결성 또는 기밀성 키가 필수인 경우에는 Kerberos 서브 키 또는 Kerberos 티켓의 Kerberos 세션 키가 사용됩니다. 키는 Kerberos 서브 키 또는 Kerberos 세션 키에서 얻을 수 있습니다. 웹 서비스 보안은 Kerberos 토큰의 키를 사용하여 OASIS 웹 서비스 보안 Kerberos 토큰 프로파일 버전 1.1 스펙에 설명된 대로 메시지 파트에 서명 및 암호화합니다. 사용할 키 유형은 웹 서비스 보안 구성 또는 정책에 의해 사전에 결정되어 있습니다. 또한 파생된 키의 크기도 구성 가능합니다.

서명 또는 암호화 키의 값은 다음 키 중 하나의 값으로 구성됩니다.
  • Kerberos 서브 키가 인증기에 있을 때
  • 서브 키가 없는 경우 티켓에서 직접 가져온 세션 키
  • 이전 키 중 하나에서 파생된 키
Kerberos 토큰이 서명 키로서 참조되는 경우 서명 알고리즘은 해싱된 메시지 인증 코드여야 합니다. 즉, http://www.w3.org/2000/09/xmldsig#hmac-sha1입니다. Kerberos 토큰이 암호화 키로서 참조되는 경우에는 다음 대칭 암호화 알고리즘 중 하나를 사용해야 합니다.
  • http://www.w3.org/2001/04/xmlenc#aes128-cbc
  • http://www.w3.org/2001/04/xmlenc#aes256-cbc
  • http://www.w3.org/2001/04/xmlenc#tripledes-cbc
주의:
  • 애플리케이션 서버는 Kerberos 버전 5만을 지원합니다.
  • Kerberos 티켓이 RFC-4120만을 준수하는 경우에는 웹 서비스 보안에서 AES 유형 대칭 알고리즘 제품군을 사용할 수 있습니다.
  • KDC가 Microsoft Windows 2003 서버에 있는 경우에는 RC4-HMAC 128비트 키 유형이 있는 Kerberos 키만이 사용됩니다.
  • KDC가 Microsoft Windows 2008 서버에 있는 경우에는 AES 128비트 또는 256비트 키 유형이 있는 Kerberos 키가 사용됩니다.
  • 서비스 제공자가 클러스터에서 실행 중일 때에는 Kerberos 티켓은 전달 가능해야 하며 주소를 포함하면 안됩니다.
  • AES 256비트 암호화 알고리즘을 사용할 때에는 제한되지 않은 Java™ 보안 정책을 가져와야 합니다.

크로스 또는 신뢰 범주 환경에서 Kerberos 토큰 사용에 대한 자세한 정보는 "단일, 크로스 또는 신뢰 범주 환경에서 Kerberos 토큰 보안" 주제를 읽으십시오.

토큰 이용자

웹 서비스 보안 이용자는 SOAP 메시지로부터 Kerberos 토큰을 수신 및 추출합니다. 그런 다음 이용자는 자체 보안 키를 사용하여 토큰의 유효성을 확인하여 Kerberos 토큰을 수락합니다. 서비스의 비밀 키는 내보낸 키탭 파일에 저장되어 있습니다. 수락 후에는 웹 서비스 보안 이용자가 연관된 요청 토큰 정보를 컨텍스트 주제에 저장합니다. 해당하는 키를 요청 토큰으로 파생할 수도 있습니다. 키는 메시지를 확인 및 복호화하는 데 사용됩니다. 요청 토큰이 전달 가능하고 주소를 포함하지 않는 경우 애플리케이션 서버는 다운스트림 호출을 위해 저장된 토큰을 사용할 수 있습니다.

토큰 형식 및 참조

JAX-WS 애플리케이션의 경우 기존 사용자 정의 정책 세트 또는 사용자 정의 정책의 관리 명령 스크립트를 사용하여 Kerberos 토큰 유형, 메시지 서명 및 메시지 암호화를 지정할 수 있습니다. WebSphere® Application Server의 JAX-WS 프로그래밍 모델은 Kerberos 토큰과 함께 Kerberos 토큰 프로파일을 사용 가능하게 하기 위해 최소의 구성을 제공합니다.

JAX-RPC 애플리케이션의 경우 배치 디스크립터를 사용하여 사용자 정의 토큰이 Kerberos 토큰을 사용함을 지정합니다. 인증을 위해 Kerberos 토큰을 사용할 수 있지만 메시지 서명이나 암호화에는 사용할 수 없습니다.

WebSphere Application Server는 Kerberos 버전 5 토큰에 대해 다음과 같은 콜백 핸들러 클래스를 지원합니다.
  • com.ibm.websphere.wssecurity.callbackhandler.KRBTokenConsumeCallbackHandler

    이 클래스는 이용자측의 Kerberos 버전 5 토큰에 대한 콜백 핸들러입니다. 이 인스턴스는 Kerberos 2진 보안 토큰을 유효성 검증하기 위해 WSSVerification 및 WSSDecryption을 생성하는데 사용됩니다.

  • com.ibm.websphere.wssecurity.callbackhandler.KRBTokenGenerateCallbackHandler

    이 클래스는 생성자측의 Kerberos 버전 5 토큰에 대한 콜백 핸들러입니다. 이 인스턴스는 Kerberos 2진 보안 토큰을 생성하기 위해 WSSSignature 오브젝트 및 WSSEncryption 오브젝트를 생성하는 데 사용됩니다.

OASIS 웹 서비스 보안 Kerberos 토큰 프로파일 버전 1.1 스펙은 Kerberos 토큰이 <wsse:BinarySecurityToken> 요소와 함께 SOAP 메시지에 첨부되어 있음을 지정합니다. 다음 예제는 메시지 형식을 보여 줍니다. 굵은체 유형은 예제의 다른 파트의 2진 보안 토큰 정보를 기술합니다.

<S11:Envelope xmlns:S11="…" xmlns:wsu="…">
   <S11:Header>
      <wsse:Security xmlns:wsse="…">
          <wsse:BinarySecurityToken 
              EncodingType="http://docs.oasis-open.org/wss/2004/01/
                 oasis-200401-wss-soap-message-security-1.0#Base64Binary" 
              ValueType="http://docs.oasis-open.org/wss/
                 oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ"
              wsu:Id="MyToken">boIBxDCCAcCgAwIBBaEDAgEOogcD…
          </wsse:BinarySecurityToken>
          …
      </wsse:Security>
    </S11:Header>
    <S11:Body>
        …
    </S11:Body>
</S11:Envelope>

Kerberos 토큰은 <wsse:SecurityTokenReference> 요소에 의해 참조됩니다. <wsse:BinarySecurityToken> 요소 내에 지정되고 다음 예제 내에서 굵은체 유형으로 표시된 <wsu:Id> 요소는 <wsse:SecurityTokenReference> 요소의 토큰을 직접 참조합니다.

<wsse:SecurityTokenReference> 요소 내의 @wsse:TokenType 속성 값은 <wsse:BinarySecurityToken> 요소의 ValueType 속성 값과 일치합니다. Reference/@ValueType 속성은 필수가 아닙니다. 그러나 속성이 지정된 경우에는 해당 값은 @wsse11:TokenType 속성과 동일해야 합니다.

다음 예제는 메시지 형식, <wsu:Id><wsse:SecurityTokenReference> 요소 간의 상관 및 @wsse:TokenTypeValueType 속성 값 간의 관계를 보여 줍니다.
<S11:Envelope xmlns:S11="…" xmlns:wsu="…">
   <S11:Header>
      <wsse:Security xmlns:wsse="…">
          <wsse:BinarySecurityToken 
               EncodingType="http://docs.oasis-open.org/wss/2004/01/
                    oasis-200401-wss-soap-message-security-1.0#Base64Binary" 
               ValueType="http://docs.oasis-open.org/wss/
                    oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ"
               wsu:Id="MyToken">boIBxDCCAcCgAwIBBaEDAgEOogcD…
          </wsse:BinarySecurityToken>
          </wsse:Security>
   </S11:Header>
</S11:Envelope>
      <wsse:Security>
       </wsse:Security>
          <wsse:SecurityTokenReference 
               TokenType="http://docs.oasis-open.org/wss/
                    oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ">
               <wsse:Reference URI="#MyToken" 
                    ValueType="http://docs.oasis-open.org/wss/
                        oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ">
              </wsse:Reference>
          </wsse:SecurityTokenReference>
         …
      <wsse:Security>
      </wsse:Security>
    <S11:Header>
    </S11:Header>
    <S11:Body>
        …
    </S11:Body>
 <S11:Envelope>
 </S11:Envelope>

<wsse:KeyIdentifier> 요소는 Kerberos 토큰에 ID를 지정하는 데 사용됩니다. ID의 값은 이전 메시지에서 인코딩된 Kerberos 토큰의 SHA1 해시 값입니다. 요소에는 #Kerberosv5APREQSHA1 값이 있는 ValueType 속성이 있어야 합니다. 초기 Kerberos 토큰이 수락된 후에 후속 메시지 교환 시에는 KeyIdentifier 참조 메커니즘이 사용됩니다. 다음 예제는 키 ID 정보를 굵은체 유형으로 표시합니다.

<S11:Envelope xmlns:S11="…" xmlns:wsse="…" xmlns:wsu="…">
    <S11:Header>
      <wsse:Security>
         …
         <wsse:SecurityTokenReference 
               wsse11:TokenType=http://docs.oasis-open.org/wss/
                   oasis-wss-kerberos-token-profile-1.1#Kerberosv5_AP_REQ>
               <wsse:KeyIdentifier 
                   ValueType="http://docs.oasis-open.org/wss/
                       oasis-wss-kerberos-token-profile-1.1#Kerberosv5APREQSHA1">
                       GbsDt+WmD9XlnUUWbY/nhBveW8I= 
               </wsse:KeyIdentifier>
          </wsse:SecurityTokenReference>
          …
      </wsse:Security>
   </S11:Header>
   <S11:Body>
       …
    </S11:Body>
</S11:Envelope>

Kerberos 토큰에 대한 다중 참조

서버가 Kerberos ID의 유효성을 검증하고 수락한 후에는 클라이언트가 요청 시마다 Kerberos 토큰을 전송할 필요가 없습니다. OASIS 웹 서비스 보안 Kerberos 토큰 프로파일 버전 1.1 스펙은 초기 AP_REQ 패킷이 수락된 후에 모든 후속 메시지에 대해 <wsse:SecurityTokenReference> 요소 내의 <wsse:KeyIdentifier> 요소가 있는 SHA1 인코딩된 키를 사용할 것을 제안합니다. 그러나 웹 서비스 보안의 런타임 환경은 키 ID를 추가로 처리하기 위해 캐싱된 Kerberos 토큰으로 맵핑해야 합니다. IBM® WebSphere Application Server 7.0 이상은 기본적으로 프로파일에 설명된 대로 이 SHA1 캐싱을 지원합니다. 그러나 애플리케이션 서버는 또한 기존의 서비스 Kerberos 티켓을 사용하여 각 요청마다 새로운 AP_REQ 토큰을 생성하는 기능도 제공합니다. Microsoft .NET와 상호 운용하는 경우에는 pSHA1 캐싱을 사용하지 마십시오. 각 요청마다 AP_REQ 패킷을 생성하십시오.


주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_kerberosusageoverview
파일 이름:cwbs_kerberosusageoverview.html