웹 서비스 보안 문제점 해결 팁
웹 서비스 보안 문제점을 해결하려면 어셈블리 도구에서 구성을 검토하여 클라이언트 및 서버의 요청과 응답 구성을 일치시키십시오.
웹 서비스 보안의 문제점 해결은 어셈블리 도구에서 구성을 검토하여 클라이언트 및 서버의 요청과 응답 구성을 일치시키도록 하는 것이 가장 좋습니다. 이 구성은 일치해야 합니다. 클라이언트 요청 송신자 구성은 서버 요청 수신자 구성과 일치해야 합니다. 성공적으로 암호화하려면 수신자의 공개 키를 송신자에게 내보내야 하고 이 키는 암호화 정보에서 올바르게 구성되어야 합니다. 인증의 경우, 서버의 로그인 맵핑에서 클라이언트가 사용하는 메소드를 지정해야 합니다.
다음 단계는 수행할 수 있는 일반적인 문제점 해결 단계의 목록을 포함합니다.
이 태스크를 위한 단계
- 다음 송신자 및 수신자에 대해 각 다운스트림에서 클라이언트 보안 확장자와
서버 보안 확장자가 일치하는지 확인하십시오.
- 요청 송신자 및 요청 수신자
- 응답 송신자 및 응답 수신자
- 작성된 시간소인 추가 옵션을 클라이언트측에서 사용 가능하게 할 경우 수신된 시간소인 추가 옵션이 서버에 구성되어 있는지 확인하십시오. 어셈블리 도구를 사용하여 보안 확장자를 구성해야 합니다.
- 클라이언트 보안 바인딩 및 서버 보안 바인딩이 올바르게 구성되어 있는지 확인하십시오. 클라이언트 인증 메소드가 서명되었을 때, 서버가 로그인 맵핑을 가지고 있는지 확인하십시오. 클라이언트가 본문을 암호화하기 위해 cn=Bob,o=IBM,c=US 공개 키를 사용할 때, 이 제목이 서버 키 저장소소에서 개인 인증서이므로 개인 키를 사용하여 본문의 비밀번호를 해독할 수 있는지 확인하십시오. 어셈블리 도구 또는 WebSphere® Application Server 관리 콘솔을 사용하여 보안 바인딩을 구성할 수 있습니다.
- 문제점에 대한 정보를 제공하는 메시지는 ${USER_INSTALL_ROOT}/logs/server1 디렉토리(server1은
서버 이름에 따라 변경됨)의 SystemOut.log 파일을 확인하십시오.참고: 이 주제는 하나 이상의 애플리케이션 서버 로그 파일을 참조합니다. 권장되는 대안은 분배 및 IBM® i 시스템에서 SystemOut.log, SystemErr.log, trace.log 및 activity.log 파일을 사용하는 대신 HPEL(High Performance Extensible Logging) 로그를 사용하고 인프라를 추적하도록 서버를 구성하는 것입니다. 원시 z/OS® 로깅 기능과 연계하여 HPEL을 사용할 수도 있습니다. HPEL을 사용하는 경우 서버 프로파일 바이너리 디렉토리의 LogViewer 명령행 도구를 사용하여 모든 로그에 액세스하고 정보를 추적할 수 있습니다. HPEL 사용에 대한 자세한 정보는 HPEL을 사용한 애플리케이션 문제점 해결 정보를 참조하십시오.
- 다음 추적 스펙을 사용하여 웹 서비스 보안의 추적을 활성화합니다.
com.ibm.xml.soapsec.*=all=enabled:com.ibm.ws.webservices.*=all=enabled: com.ibm.wsspi.wssecurity. *=all=enabled:com.ibm.ws.security.*=all=enabled: SASRas=all=enabled
한 개의 연속 라인으로서 이전 두 개의 라인을 입력하십시오.
웹 서비스 보안 설정 중 오류 발생
- "CWWSS6811E: 메시지에서 검색된 키 ID <identifier name>이 키 저장소에서 얻은 키 ID <identifier name>과 다릅니다"라는 키 불일치 오류 메시지가 표시됨
- CWWSI5061E: SOAP 본문이 서명되지 않았으며 오류 메시지가 표시됨
- CWWSI5075E: 인증 메소드 중 하나를 만족시키는 보안 토큰을 찾을 수 없음 오류 메시지가 표시됨
- CWWSI5094E: TrustMode가 BasicAuth인 동안 신뢰된 사용자의 UsernameToken을 찾을 수 없거나 사용자에 대한 로그인에 실패함 오류 메시지가 표시됨
- CWSCJ0053E: /UNAUTHENTICATED에 대한 권한 부여에 실패했음 오류 메시지가 표시됩니다.
- 값 유형 로컬 이름 및 토큰 이용자나 토큰 생성기의 URI를 지정할 때 WSWS3243I: 정보: WebServicesFault에 대한 맵핑 예외 오류 메시지가 표시됨
- WebSphere Application Server용 웹 서비스에 액세스하는 Microsoft .NET 클라이언트를 사용할 때 올바르지 않은 URI: URI의 형식을 판별할 수 없음 오류 메시지가 표시될 수 있음
- WSEC5502E: 대상 요소가 예상치 못한 요소임 오류 메시지가 표시됨
- WSEC6664E: PKIXBuilderParameters에는 널이 허용되지 않음. TrustAnchor 및 CertStoreList의 구성이 올바르지 않음 예외가 표시됨
- WSE567: 들어오는 사용자 이름 토큰에 재생 감지 기능에 대한 nonce 및 작성 시간이 포함되어 있어야 함 Microsoft .NET 오류가 표시됨
- WSEC6500E: 로그인에 사용된 후보가 없음 오류 메시지가 표시됨
- Kerberos 토큰에 대한 SHA-1 키 ID는 사용자 정의 특성 없이 이용되거나 올바르게 생성되지 않음
- 사용자 정의 특성 없이는 Kerberos V5 바이너리 AP_REQ 토큰이 제대로 생성되거나 이용되지 않음
- 유효하지 않은 인증이 사용될 때 CertPath 예외를 발행하는 대신 유효한 인증 경로가 Sun Solaris에 빌드됨
- 카드 관련 요청이 있는 하드웨어 암호화 요청에서는 요청을 완료하기 위해 암호화된 소프트웨어를 사용해야 함
"CWWSS6811E: 메시지에서 검색된 키 ID <identifier name>이 키 저장소에서 얻은 키 ID <identifier name>과 다릅니다"라는 키 불일치 오류 메시지가 표시됨
원인:
com.ibm.wsspi.wssecurity.core.SoapSecurityException: CWWSS6521E:
javax.security.auth.login. 예외로 인해 로그인이 실패했습니다. LoginException: CWWSS6811E:
메시지에서 검색된 키 ID TVpC640XSSc=는
다음 키 저장소 경로에서 얻은 키 ID QdZLf+KjrUg=와 다릅니다:
C:\WebSphere\AppServer\profiles\AppSrv01//etc/ws-security/samples/enc-receiver.jceks."
profile_root/etc/ws-security/samples/dsig-sender.ks
profile_root/etc/ws-security/samples/dsig-receiver.ks
profile_root/etc/ws-security/samples/enc-sender.jceks
profile_root/etc/ws-security/samples/enc-receiver.jceks
profile_root/etc/ws-security/samples/intca2.cer
app_server_root/etc/ws-security/samples/dsig-sender.ks
app_server_root/etc/ws-security/samples/dsig-receiver.ks
app_server_root/etc/ws-security/samples/enc-sender.jceks
app_server_root/etc/ws-security/samples/enc-receiver.jceks
app_server_root/etc/ws-security/samples/intca2.cer
해결 방법:
혼합 클러스터의 버전 7.0 이상 노드에 있는 키 저장소 파일을 Feature Pack for Web Service 버전 6.1 노드로 수동으로 복사하여 키 불일치 오류의 문제점을 해결할 수 있습니다. 이렇게 하면 버전 7.0 이상의 노드와 Feature Pack for Web Service 버전 6.1의 노드에서 동일한 키 저장소 파일을 사용합니다. 또 다른 문제점 해결 방법은 버전 7.0 이상 키 저장소 파일을 공통 디렉토리 위치로 이동시킨 다음, 키 저장소 파일의 공통 위치를 가리키는 모든 바인딩을 수정하는 것입니다.
CWWSI5061E: SOAP 본문이 서명되지 않았으며 오류 메시지가 표시됨
원인:
이 오류는 SOAP 보안 핸들러가 올바르게 로드되지 않을 때마다 주로 발생되며, SOAP 본문이 서명되지 않습니다. SOAP 보안 핸들러는 서버 측에서 발생하는 첫 번째 유효성 검증이므로, 다수의 문제가 이 메시지를 표시하는 원인이 될 수 있습니다. 오류는 유효하지 않은 작업자 URI 구성 때문에 발생할 수 있습니다.
해결 방법:
어셈블리 도구 내의 다음 위치에서 작업자 URI(Universal Resource Identifier)를 구성할 수 있습니다.
- 클라이언트 구성에 대해 어셈블리 도구 내의 웹 서비스 클라이언트
편집기에서 다음을 수행하십시오.
- ActorURI 필드에서 액터 정보를 표시하십시오. 을 클릭한 후
- 액터 필드에서 액터 정보를 표시하십시오. 을 클릭한 후
- 서버 구성에 대해 어셈블리 도구 내의 웹 서비스 편집기에서 다음을 수행하십시오.
- 섹션을 클릭하십시오. 작업자 URI가 클라이언트측과 동일한 작업자 문자열을 가지고 있는지 확인하십시오.
- 액터 필드에서 액터 정보를 표시하십시오. 을 클릭한 후
클라이언트 및 서버의 작업자 정보는 같은 문자열을 참조해야 합니다. 클라이언트와 서버의 조치자 필드가 일치할 경우 요청이나 응답이 다운스트림으로 전달되지 않고 활성화됩니다. 웹 서비스가 다른 웹 서비스의 게이트웨이로 동작할 때 조치자 필드가 다를 수 있습니다. 그러나 다른 모든 경우에서, 클라이언트 및 서버에서 작업자 정보가 일치하는지 확인하십시오. 웹 서비스 구현이 게이트웨이로 동작하고 요청이 게이트웨이를 지날 때 동일한 조치자가 구성되어 있지 않으면, 이 웹 서비스 구현은 클라이언트에서 메시지를 처리하지 않습니다. 대신에, 요청 다운스트림을 전송합니다. 올바른 조치자 문자열을 포함하는 다운스트림 프로세스가 요청을 처리합니다. 응답의 경우에도 이와 같은 상황이 발생합니다. 그러므로, 알맞은 클라이언트 및 서버 작업자 필드가 동기화되었는지 확인하는 것이 중요합니다.
추가적으로, 클라이언트 구성에서 본문에 서명할 것을 지정하지 않았을 때 오류가 발생할 수 있습니다. 어셈블리 도구에서 웹 서비스 클라이언트 편집기를 사용하여 메시지의 본문 파트에 서명하려면
을 클릭한 후 서명할 메시지 파트를 선택하십시오.CWWSI5075E: 인증 메소드 중 하나를 만족시키는 보안 토큰을 찾을 수 없음 오류 메시지가 표시됨
해결 방법:
보안 확장자에서 클라이언트 및 서버 로그인 구성 정보가 일치하는지 확인하십시오. 또한 클라이언트가 유효한 로그인 바인딩을 가지고 있고 서버가 보안 바인딩에서 유효한 로그인 맵핑을 가지고 있는지 확인하십시오. 어셈블리 도구의 다음 위치에서 이 정보를 확인할 수 있습니다.
- 클라이언트 구성에 대해 어셈블리 도구 내의 웹 서비스 클라이언트
편집기에서 다음을 수행하십시오.
- 을 클릭한 후 인증 방법을 확인하십시오.
- 을 클릭한 후 인증 방법 및 기타 매개변수를 확인하십시오.
- 서버 구성에 대해 어셈블리 도구 내의 웹 서비스 편집기에서 다음을 수행하십시오.
- 을 클릭한 후 인증 방법을 확인하십시오.
- 을 클릭한 후 인증 방법 및 기타 매개변수를 확인하십시오.
또한 클라이언트 및 서버에 지정된 작업자 URI가 일치하는지 확인하십시오. 어셈블리 도구 내의 다음 위치에서 작업자 URI를 구성할 수 있습니다.
- 클라이언트 구성에 대해 어셈블리 도구 내의 웹 서비스 클라이언트
편집기에서 다음을 수행하십시오.
- ActorURI 필드에서 액터 정보를 표시하십시오. 을 클릭한 후
- 액터 필드에서 액터 정보를 표시하십시오. 을 클릭한 후
- 서버 구성에 대해 어셈블리 도구 내의 웹 서비스 편집기에서
다음을 수행하십시오.
- 작업자 URI 필드가 클라이언트측과 동일한 작업자 문자열을 가지고 있는지 확인하십시오. 섹션을 클릭하십시오.
- 액터 필드에서 액터 정보를 표시하십시오. 을 클릭한 후
CWWSI5094E: TrustMode가 BasicAuth인 동안 신뢰된 사용자의 UsernameToken을 찾을 수 없거나 사용자에 대한 로그인에 실패함 오류 메시지가 표시됨
원인:
이러한 상황은 로그인 구성에서 인증 메소드로 구성된 ID 어설션을 가지면 발생합니다.
해결 방법:
전송 웹 서비스의 로그인 바인딩에서 신뢰된 기본 인증 항목을 구성하십시오. 그리고 나서, 서버 측에서, 이 기본 인증 항목의 사용자 이름을 포함하는 특성 세트를 신뢰된 ID 평가자가 가지고 있는지 확인하십시오.
ID 어설션을 위해 클라이언트를 구성하려면 인증 메소드를 수집하는 ID 어설션을 위해 메소드를 지정하고 클라이언트를 구성할 때 ID 어설션을 위한 클라이언트 구성을 읽으십시오.
ID 어설션을 위해 서버를 구성하려면 ID 어설션 인증을 처리하기 위한 서버 구성 및 ID 어설션 인증 정보를 유효성 검증하기 위한 서버 구성을 읽으십시오.
CWSCJ0053E: /UNAUTHENTICATED에 대한 권한 부여에 실패했음 오류 메시지가 표시됩니다.
원인:
CWSCJ0053E: /UNAUTHENTICATED에 대한 권한 부여에 실패했습니다. 호출 중: (Home)com/ibm/wssvt/tc/
pli/ejb/Beneficiary findBeneficiaryBySsNo(java.lang.String):2 securityName: /UNAUTHENTICATED;accessID:
널이 필수 역할: AgentRole에 허용되지 않습니다.
이러한 상황은 로그인 구성이 구성되어 있지 않거나 웹 서비스 보안이 클라이언트에서 서버로 구성되지 않았기 때문에 발생합니다. 요청이 서버에 도착했지만 인증 정보를 받지 못했을 때 UNAUTHENTICATED 사용자가 스레드에 설정됩니다. 누구나 액세스할 수 있도록 하는 특수한 "Everyone" 역할을 제외한 임의의 역할을 자원에 지정하면 권한 부여 시 이 오류가 리턴됩니다.
클라이언트가 성공적으로 EJB(Enterprise JavaBeans) 파일을 인증했지만 EJB 파일이 웹 서비스 보안 또는 전송 보안(예: HTTP 사용자 ID 및 비밀번호)으로 구성되지 않은 다운스트림 EJB 파일을 호출하는 경우, 이 다운스트림 요청에 대한 오류가 발생할 수 있습니다.
해결 방법:
- 어셈블리 도구를 사용하여 클라이언트 보안 바인딩 구성
- 관리 콘솔을 사용하여 클라이언트로 활동 중인 서버에 보안 바인딩 구성
- 어셈블리 도구를 사용하여 서버 보안 바인딩 구성
- 관리 콘솔을 사용하여 서버 보안 바인딩 구성
ID 어설션을 위해 클라이언트를 구성하려면 인증 메소드를 수집하는 ID 어설션을 위해 메소드를 지정하고 클라이언트를 구성할 때 ID 어설션을 위한 클라이언트 구성을 읽으십시오.
값 유형 로컬 이름 및 토큰 이용자나 토큰 생성기의 URI를 지정할 때 WSWS3243I: 정보: WebServicesFault에 대한 맵핑 예외 오류 메시지가 표시됨
원인:
- 사용자 이름 토큰
- X509 인증 토큰
- PKIPath의 X509 인증
- PKCS#7의 CRL 및 X509 인증 목록
해결 방법:
이전 값 유형 로컬 이름 중 하나를 지정한 경우, 값 유형 URI 필드에 대한 값을 입력하지 마십시오.
WebSphere Application Server용 웹 서비스에 액세스하는 Microsoft .NET 클라이언트를 사용할 때 올바르지 않은 URI: URI의 형식을 판별할 수 없음 오류 메시지가 표시될 수 있음
원인:
Invalid URI: The format of the URI could not be determined.
System.UriFormatException
at System.Uri.Parse()
at System.Uri..ctor(String uriString, Boolean dontEscape)
at System.Uri..ctor(String uriString)
at Microsoft.Web.Services2.SoapInputFilter.CanProcessHeader(XmlElement header, SoapContext context)
at Microsoft.Web.Services2.Security.SecurityInputFilter.ProcessMessage(SoapEnvelope envelope)
at Microsoft.Web.Services2.Pipeline.ProcessInputMessage(SoapEnvelope envelope)
at Microsoft.Web.Services2.InputStream.GetRawContent()
at Microsoft.Web.Services2.InputStream.get_Length()
at System.Xml.XmlScanner..ctor(TextReader reader, XmlNameTable ntable)
at System.Xml.XmlTextReader..ctor(String url, TextReader input, XmlNameTable nt)
at System.Xml.XmlTextReader..ctor(TextReader input)
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message,
WebResponse response, Stream responseStream, Boolean asyncCall)
WebSphere Application Server 내에서는
웹 서비스 보안이 사용 가능하고 ActorURI 속성을 사용합니다.
이 오류는 Microsoft .NET Web Services Enhancements(WSE) 버전 2.0 서비스 팩 3이
ActorURI 속성에 대한 상대 URI 값을 지원하지 않기 때문에 발생합니다. WSE 버전 2.0 서비스 팩 3은 이 속성에 대해
절대 URI(Uniform Resource Identifier)만 지원합니다.해결 방법:
Microsoft .NET 클라이언트에 대해 작업하려면 이 속성을 절대 URI로 구성해야 합니다. 절대 URI의 예는 abc://myWebService입니다. 상대 URI의 예는 myWebService입니다.
- 웹 서비스 편집기를 연 다음 확장자 탭을 클릭하고 서버 서비스 구성을 펼치십시오.
- 조치자 필드에 전체 절대 URI를 입력하십시오.
- 을 펼치십시오.
- 조치자 필드에 전체 절대 URI를 입력하십시오.
WSEC5502E: 대상 요소가 예상치 못한 요소임 오류 메시지가 표시됨
원인:
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5502E: Unexpected element as the target element: wsse:BinarySecurityToken
- 메시지를 생성하는 프로세스의 WS-Security 추적을 얻으십시오. WS-Security 추적을 구현하는 방법에 대한 자세한 정보는 웹 서비스 추적에 대해 읽어보십시오.
- 수신 SOAP 메시지에 대한 정보가 추적에 포함되는지
확인하십시오.
- soapenv:env 항목을 예외 지점부터 역방향으로 검색하십시오.
- X509 항목을 예외 지점부터 역방향으로 검색하십시오.
- X.509 보안 토큰 유형(#X509 또는 #X509v3)을 기록해 두십시오. .
- 예를 들어 추적이 완료되지 않아서 수신 SOAP 메시지의 정보가 추적에 포함되지 않은 경우에는 대상의 값 유형 항목을 예외 지점부터 역방향으로 검색하십시오. 이 검색은 오류가 발생했을 때 처리될 보안 토큰을 표시하는 추적의 파트를 찾습니다. 보안 토큰의 유형(#X509 또는 #X509v3)을 적어 두십시오.
- 이용자 구성에서 지정된 X.509 보안 토큰의 유형을 확인하십시오.
- WSSConsumerConfig 항목을 예외 지점부터 역방향으로 검색하십시오.
- 이제 #X509 항목을 순방향으로 검색하십시오.
- 구성된 X.509 보안 토큰 이용자 유형(#X509 또는 #X509v3)을 기록해 두십시오.
- 구성된 토큰 이용자가 수신 보안 토큰의 유형과 일치하지 않는 경우 오류로 인해 보안 토큰 유형이 불일치하는지 확인합니다.
해결 방법:
구성된 토큰 이용자는 인바운드 보안 토큰에 대해 지정된 유형과 일치해야 합니다. 이전 단계에서 판별한 대로 오류의 원인이 보안 토큰 유형 불일치 때문인 경우 토큰 유형이 일치하도록 WS-Security에 대한 이용자 또는 제공자 구성을 변경해야 합니다.
WSEC6664E: PKIXBuilderParameters에는 널이 허용되지 않음. TrustAnchor 및 CertStoreList의 구성이 올바르지 않음 예외가 표시됨
원인:
인증 경로 설정이 제대로 구성되지 않습니다.
해결 방법:
- 관리 콘솔에서 를 클릭하십시오.
- 기본 이용자 바인딩 표제 아래에서 을 클릭하십시오.
- 모두 신뢰 또는 전용 서명 정보 옵션을 선택하십시오.
전용 서명 정보 옵션을 선택한 경우, 드롭 다운 목록으로 제공되는 구성에서 신뢰 앵커 및 인증 저장소를 모두 선택하십시오.
- 확인과 저장을 클릭하여 구성을 완료하십시오.
WSE567: 들어오는 사용자 이름 토큰에 재생 감지 기능에 대한 nonce 및 작성 시간이 포함되어 있어야 함 Microsoft .NET 오류가 표시됨
원인:
이 시나리오에서는 사용자에게 Microsoft .NET 웹 서비스 및 WebSphere Application Server용 웹 서비스 클라이언트가 있습니다. Microsoft .NET 웹 서비스에는 구성된 사용자 이름 토큰에 대한 ws-security 제한조건이 있습니다. Microsoft .NET 서버에서 다음과 같은 예외가 발생합니다.
WSE567: 들어오는 사용자 이름 토큰에 재생 감지 기능에 대한 nonce 및 작성 시간이 포함되어 있어야 합니다.
기본적으로, Microsoft .NET 웹 서비스는 사용자 이름 토큰에 대한 Nonce 및 시간소인의 유효성을 검증합니다. 그러나 WebSphere Application Server를 사용 중인 웹 서비스 클라이언트에 대해 Nonce 및 시간소인 특성을 구성하는 것은 선택적입니다.
해결 방법:
- 웹 서비스 클라이언트 배치 디스크립터를 열고 WS-바인딩 탭을 클릭하십시오.
- 섹션을 펼치십시오.
- 이미 작성한 사용자 이름 토큰의 이름을 클릭하고 편집을 클릭하십시오.
- 토큰 생성자 창의 특성 섹션에서 추가를 클릭하십시오.
- 이름 필드에 com.ibm.wsspi.wssecurity.token.username.addNonce를 입력하여 Nonce 특성을 제공하십시오.
- 값 필드에 true를 입력하십시오.
- 추가를 클릭하십시오.
- 이름 필드에 com.ibm.wsspi.wssecurity.token.username.addTimestamp를 입력하여 시간소인 특성의 이름을 제공하십시오.
- 값 필드에 true를 입력하십시오.
- 확인을 클릭하여 클라이언트 배치 디스크립터를 저장하십시오.
Java 2 보안이 사용 가능한 com.ibm.wsspi.wssecurity.auth.token 패키지를 사용할 때 Java 2 보안 예외가 발생함
원인:
Java™ 2 보안이 사용 가능할 때 com.ibm.wsspi.wssecurity.auth.token.* 패키지를 사용하는 동안 애플리케이션이 Java 2 보안 예외를 작성합니다.
WebSphere Application Server 버전 6.1에서는 com.ibm.wsspi.wssecurity.auth.token.* 패키지의 다양한 공용 메소드에 대해 새 Java 2 권한이 설정되어 있습니다. 애플리케이션이 Java 2 보안 권한으로 보호 설정된 이러한 클래스의 공용 메소드 중 하나를 사용하고 적절한 권한이 없는 경우, 애플리케이션에 장애가 발생합니다. 예외 메시지가 해당 새 Java 2 보안 권한의 영향을 받는 클래스 및 공용 메소드를 식별하는 정보를 제공합니다.
해결 방법:
- 정책 도구를 사용하여 정책 파일을 편집하십시오. 운영 체제에 적합한 단계를 따르십시오.
- 해당 애플리케이션의 EAR(Enterprise Archive) 파일에 패키지되는 was.policy
파일에 모든 권한을 추가하십시오.
해당 애플리케이션의 was.policy 파일에서 사용 권한을 좀더
세분화하려면 필요한 클래스에 따라 애플리케이션에 필요한 사용 권한을 사용하십시오. 예를 들어, X509BSToken에 대한 메소드에만 액세스할 필요가 있으면 was.policy 파일에 다음 사용 권한을 추가하십시오.
grant codeBase "file:${application}" { permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.X509BSToken.setBytes"; permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.X509BSToken.setCert"; permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.WSSToken.setTrusted"; permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.WSSToken.addAttribute"; permission com.ibm.websphere.security.WebSphereRuntimePermission "wssecurity.WSSToken.setUsedTokenConsumer"; };
- 애플리케이션의 EAR 파일에 있는 was.policy 파일을 업데이트하십시오.
- WebSphere Application Server에서 애플리케이션을 설치 제거한 후 새 EAR 파일 및 업데이트된 was.policy 파일을 사용하여 다시 설치하십시오.
SOAP 요소에 대해 무결성 또는 기밀성이 주장될 때 예외가 발생할 수 있음
원인:
클라이언트가 SOAP 요소에 대해 무결성 또는 기밀성을 주장하지만 메시지에서 요소가 누락되는 경우 예외가 발행됩니다.
클라이언트가 SOAP 요소에 대해 서명 또는 암호화 애플리케이션을 필요로 하는 경우, SOAP 요소가 항상 표시되어야 합니다. 이 요소의 표시는 선택적이 아닙니다. 예를 들어, 구성이 무결성 또는 기밀성을 wscontext 요소에 적용해야 한다고 지정하는 경우가 있습니다. wscontext가 메시지에 누락되어 있으면 다음 예외가 발행됩니다.
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5636W: Objects
to be processed not found with the dialect
[http://www.ibm.com/websphere/webservices/wssecurity/dialect-was]
and the keyword [wscontext]
해결 방법:
클라이언트 개발자는 무결성 또는 기밀성의 대상 요소가 SOAP 메시지에 항상 표시되도록 확인해야 합니다. SOAP 요소가 항상 표시되도록 할 수 없으면 SOAP 요소를 무결성 또는 기밀성의 대상으로 하지 마십시오.
JSR-101 및 JSR-109 프로그래밍 모델의 차이로 인해 클라이언트 출력 예외 발생
원인:
클라이언트를 실행 도중 클라이언트 출력 예외가 생성되는 경우가 있습니다. 클라이언트 출력 예외의 원인은 JSR-101 대 JSR-109 프로그래밍 모델 사이의 차이 때문일 수 있습니다.
사용자 이름 토큰, X509 토큰, SOAP 요소 서명 또는 암호화 등과 같은 모든 웹 서비스 보안 제한을 구성할 수 있습니다. 예를 들어, WebSphere Application Server 클라이언트 및 서비스에서 사용자 이름 토큰을 구성할 수 있습니다. 클라이언트는 요청에서 사용자 이름 토큰을 전송하도록 구성되고 서버는 사용자 이름 토큰을 대기하도록 구성됩니다. 그러나 클라이언트가 사용자 이름 토큰을 전송하지 않으면 서버는 요청을 거부합니다. 클라이언트가 JNDI(Java Naming and Directory Interface) 네이밍 검색을 수행하지 않으면 JSR-109 클라이언트가 아닐 수 있습니다. JSR-109 클라이언트가 아닌 경우, 클라이언트는 보안 구성을 포함하는 JSR-109 구성 정보를 가져오지 않으며 요청이 실패합니다.
JSR-109 프로그래밍 모델의 경우, JNDI 검색으로 호출이 시작되어 보안 구성 정보를 첨부할 수 있습니다. JSR-101 프로그래밍 모델의 경우에는 JNDI 검색이 허용되지 않으며 보안 구성 정보를 첨부할 수 없습니다.
해결 방법:
이 동작은 JSR-101 및 JSR-109 프로그래밍 모델의 문제점이 아닙니다. 웹 서비스 보안이 WebSphere Application Server 보안 구성 정보를 JSR-101 클라이언트에 제공하지 않습니다.
- JSR-101 클라이언트에는 웹 서비스 보안이 지원되지 않습니다.
- JSR-109 클라이언트만 웹 서비스 보안을 사용하도록 구성할 수 있습니다.
클라이언트에 웹 서비스 보안이 필요하면 해당 클라이언트는 JSR-109 클라이언트입니다.
"WSSecurityCon E WSEC5514E: WS-Security 메시지 처리 중 예외" 오류가 표시됨
원인:
00000046 WebServicesFa 1
com.ibm.ws.webservices.engine.WebServicesFault makeUserFault
MakeUserFault: com.ibm.wsspi.wssecurity.SoapSecurityException:
WSEC5720E: A required message part [body] is not signed.
com.ibm.wsspi.wssecurity.SoapSecurityException.format(SoapSecurityException.java:143)
com.ibm.ws.webservices.wssecurity.dsig.VerifiedPartChecker.invoke(VerifiedPartChecker.java:
263)
com.ibm.ws.webservices.wssecurity.core.WSSConsumer.checkRequiredIntegrity(WSSConsumer.java:
1430)
at com.ibm.ws.webservices.wssecurity.core.WSSConsumer.invoke(WSSConsumer.java:545)
com.ibm.ws.webservices.wssecurity.handler.WSSecurityConsumerBase.invoke(WSSecurityConsumerB
ase.java:85)
com.ibm.ws.webservices.wssecurity.handler.GlobalSecurityHandler.handleRequest6(GlobalSecuri
tyHandler.java:406)
해결 방법:
관리 클라이언트의 경우, 서비스 검색은 JNDI(Java Naming and Directory Interface) 검색을 통해 수행됩니다. UsernameToken 웹 서비스 보안, 디지털 서명 웹 서비스 보안 및 LTPA(Lightweight Third-Party Authentication) 토큰 웹 서비스 보안 설정을 참조하십시오. 다음은 JSR 109를 준수하는 컨텍스트 검색입니다.
InitialContext ctx = new InitialContext();
FredsBankServiceLocator locator
=(FredsBankService)ctx.lookup("java:comp/env/service/FredsBankService");
FredsBank fb = locator.getFredsBank(url);
long balance = fb.getBalance();
관리 클라이언트에서 컨텍스트 검색을 인스턴스화하는 경우 서비스 위치 지정자에서 new()를 사용하지 마십시오. 다음은 JSR 109를 준수하지 않는 예제입니다(새 ServiceLocator).
Properties prop = new Properties();
InitialContext ctx = new InitialContext(prop);
FredsBankServiceLocator locator = new FredsBankServiceLocator();
FredsBank fb = locator.getFredsBank(url);
long balance = fb.getBalance();
WSEC6500E: 로그인에 사용된 후보가 없음 오류 메시지가 표시됨
원인:
- 애플리케이션 보안이 사용 가능하지만 인바운드 SOAP 메시지에는 서비스의 이용자 호출자 파트에 지정된 필수 보안 토큰이 포함되지 않습니다.
- 웹 서비스 클라이언트는 웹 서비스 보안을 사용하여 웹 서비스를 호출하며, 웹 서비스를 호스트하는 애플리케이션 서버에서는 애플리케이션 보안이 사용 불가능합니다.
예를 들어, 사용자 이름 토큰 또는 LTPA 토큰을 사용하여 인증용 웹 서비스를 구성할 수 있습니다. 그러나 이 서비스는 글로벌 보안이 비활성화된 애플리케이션 서버에 배치됩니다. 웹 서비스를 필수 사용자 이름 토큰 또는 LTPA 토큰을 올바르게 제공하는 웹 서비스 클라이언트가 호출하는 경우 웹 서비스 호출에 실패합니다. 다음 결함이 웹 서비스 클라이언트로 다시 리턴될 수 있습니다.
<soapenv:Fault>
<faultcode xmlns:p55="http://docs.oasis-open.org/wss/2004/01/oasis-
200401-wss-wssecurity-secext-1.0.xsd">p55: FailedAuthentication
</faultcode>
<faultstring>
<![CDATA[com.ibm.wsspi.wssecurity.SoapSecurityException:
WSEC6500E: 로그인에 사용된 후보가 없음.]]>
</faultstring>
<detail encodingStyle=""/>
</soapenv:Fault>
해결 방법:
웹 서비스를 호스트하는 애플리케이션 서버에서 애플리케이션 보안이 사용 가능한 경우 웹 서비스 보안 이용자 호출자 파트 구성에서 웹 서비스에 필요한 보안 토큰을 전송하도록 클라이언트가 구성되었는지 확인하십시오.
- 웹 서비스를 호스트하는 애플리케이션 서버에서 애플리케이션 보안을 사용 가능하게 하십시오.
- 웹 서비스에서 com.ibm.wsspi.wssecurity.config.disableWSSIfApplicationSecurityDisabled 웹 서비스 보안 사용자 정의 특성을 설정하십시오.
애플리케이션 보안이 사용 불가능한 경우, com.ibm.wsspi.wssecurity.config.disableWSSIfApplicationSecurityDisabled 특성을 사용하면 웹 서비스 보안이 WS-Security 헤더를 처리할 수 없습니다. 그러면 시스템 관리자 및 애플리케이션 프로그래머가 배치 디스크립터에서 WS-Security 정보를 제거하지 않고 비보안 환경에서 해당 서비스 측면을 디버그할 수 있습니다. 이 특성은 진단 목적으로만 사용되며 프로덕션 환경에서는 사용되지 않습니다.
이 특성의 올바른 값은 true 및 false입니다. 기본값은 false입니다.
애플리케이션 레벨, 셀 레벨 및 서버 레벨은 WebSphere Application Server가 제공하는 바인딩 레벨입니다.
- 을 클릭하십시오.
- 보안 아래에서 웹 서비스: 웹 서비스 보안의 기본 바인딩을 클릭하십시오.
- 다음 중 하나를 수행하십시오.
- 을 클릭하십시오(셀에 있는 모든 애플리케이션에 적용될 수 있음).
- 을 클릭하십시오(셀에 있는 모든 애플리케이션에 적용될 수 있음).
- 를 클릭하십시오.
- 기본 생성자 바인딩 또는 기본 이용자 바인딩 아래에서 특성을 클릭하십시오.
- 보안 아래에서 웹 서비스: 웹 서비스 보안의 기본 바인딩을 클릭하십시오.
- 우선순위 순서대로 다음 위치에서 지정되는 다음 중 하나를
수행하십시오.
- 을 클릭하십시오.
- 을 클릭하십시오.
- 을 클릭하십시오.
- 서버 인프라 아래에서 를 클릭하십시오.
- 추가 특성 아래에서 JVM(Java Virtual Machine)을 클릭하십시오.
- 추가 특성 아래에서 사용자 정의 특성을 클릭하십시오.
Kerberos 토큰에 대한 SHA-1 키 ID는 사용자 정의 특성 없이 이용되거나 올바르게 생성되지 않음
원인:
웹 서비스 보안 Kerberos 토큰 프로파일 v1.1이라는 OASIS 표준에 지정된 대로 SHA-1 변환 키 값의 base64 인코딩을 Kerberos AP-REQ 토큰에 대한 키 ID를 지정하기 위해 사용할 수 있습니다. SHA-1은 입력을 변환하는 비밀번호 해시 기능이며 고정된 크기의 문자열을 리턴합니다. 클라이언트 및 서비스 제공자가 처음으로 웹 서비스 메시지를 교환하면 Kerberos 인증 토큰을 외부적으로 참조하기 위해 SHA-1 키 ID가 사용됩니다. 이를 위해 SHA-1을 사용하려면 SHA-1 키 ID를 생성하고 이용하기 위해 정책 바인딩에서 사용자 정의 특성을 구성해야 합니다. com.ibm.wsspi.wssecurity.kerberos.attach.hashKeySupportToken 사용자 정의 특성이 클라이언트 토큰 생성자 및 서비스 토큰 이용자 바인딩에 추가됩니다. 이 특성을 사용하면 Kerberos 토큰이 인증 토큰으로 사용될 때 이후에 웹 서비스 메시지를 교환하는 동안 애플리케이션이 SHA-1 키 ID를 제대로 생성하고 이용할 수 있습니다.
해결 방법:
각각의 웹 서비스 메시지 교환에 대해 애플리케이션이 SHA-1 키 ID를 생성하고 이용하는 경우 애플리케이션의 토큰 생성자 및 토큰 이용자 바인딩에서 com.ibm.wsspi.wssecurity.kerberos.attach.hashKeySupportToken 사용자 정의 특성을 true로 설정하십시오.
- 를 클릭하십시오.
- 을 클릭하십시오.
- 정책 테이블에서 WS-Security 정책을 클릭하십시오.
- 보안 정책 바인딩 섹션에서 인증 및 보호를 클릭하십시오.
- 인증 토큰 아래에서 토큰 처리자 또는 토큰 생성자의 이름을 클릭하십시오.
- 사용자 정의 특성 섹션에서 com.ibm.wsspi.wssecurity.kerberos.attach.hashKeySupportToken 사용자 정의 특성 및 특성 값 true를 입력하십시오.
- 확인을 클릭한 후 저장을 클릭하십시오.
사용자 정의 특성 없이는 Kerberos V5 바이너리 AP_REQ 토큰이 제대로 생성되거나 이용되지 않음
원인:
Microsoft® 웹 서비스 애플리케이션이 Kerberos 토큰을 사용하여 메시지를 요청할 때 토큰을 생성하고 이용하기 위해서는 Kerberos V5 AP_REQ 토큰에 대한 정책 바인딩에서 사용자 정의 특성을 구성해야 합니다. 클라이언트 토큰 생성자 및 서비스 토큰 이용자 바인딩에 com.ibm.wsspi.wssecurity.kerberos.attach.apreq 사용자 정의 특성을 추가하십시오. 이 특성을 사용하면 애플리케이션에서 각 웹 서비스 요청 메시지에 대해 Kerberos AP_REQ 토큰을 생성하고 이용할 수 있습니다.
해결 방법:
- Microsoft .NET 클라이언트 애플리케이션과 상호 운용하려면 대상 서비스의 토큰 이용자 바인딩에서 사용자 특성을 true로 설정하십시오.
- Microsoft .NET 서비스와 상호 운용하는 경우 클라이언트 토큰 생성자 바인딩에서 사용자 정의 특성을 true로 설정하십시오.
- 애플리케이션이 각 웹 서비스 메시지에 대해 Kerberos AP_REQ 토큰을 생성하는 경우 클라이언트 토큰 생성자 바인딩 및 서비스 토큰 이용자 바인딩 둘 다에서 사용자 정의 특성을 true로 설정하십시오.
- 관리 콘솔에서 를 클릭하십시오.
- 을 클릭하십시오.
- 정책 테이블에서 WS-Security 정책을 클릭하십시오.
- 보안 정책 바인딩 섹션에서 인증 및 보호를 클릭하십시오.
- 보호 토큰 아래에서 토큰 이용자 또는 토큰 생성자의 이름을 클릭하십시오.
- 사용자 정의 특성 섹션에서 com.ibm.wsspi.wssecurity.kerberos.attach.apreq 사용자 정의 특성 및 특성 값(true)을 입력하십시오.
유효하지 않은 인증이 사용될 때 CertPath 예외를 발행하는 대신 유효한 인증 경로가 Sun Solaris에 빌드됨
원인:
Sun Solaris 시스템에서 웹 서비스 애플리케이션을 사용하는 WS-Security는 유효하지 않은 인증이 사용된 경우에도 유효한 인증 경로를 잘못 빌드할 수 있습니다. 요청의 인증에 있는 키 및 서버에서 검색된 인증에 있는 키가 일치하지 않을 때 오류 메시지가 발행되어야 합니다. 그러나 DN을 제외한 모든 항목에서 인증이 다르고 Sun security 제공자가 사용되는 경우 인증 경로가 유효하다고 리턴됩니다. 이 문제점은 IBMCertPath 보안 제공자가 사용될 때 발생합니다. IBMCertPath는 Sun Solaris를 제외한 모든 시스템의 기본 보안 제공자이므로 Sun Solaris는 이 문제가 발생하는 유일한 시스템입니다.
- 웹 서비스가 비Sun Solaris 시스템에 배치되면 IBM
기본 CertPath 제공자(IBMCertPath)가 리턴됩니다. 코드가 올바르게 작동하는 경우, 키가 일치하지 않으면 다음 예외가
표시됩니다.
WSEC5085E: Unable to build a valid CertPath: java.security.cert.CertPathBuilderException: unable to find valid certification path to requested target
- 웹 서비스가 Sun Solaris에 배치되면, java.security.cert.CertPathBuilder.build 메소드가
IBMCertPath 대신 Sun 기본 CertPath 제공자를 리턴합니다.
Sun 보안 제공자가 식별 이름(DN)만 검사하며 서명 정보는 검사하지 않습니다.
잘못된 키로 인해 요청이 실패합니다. 그러나 DN만 검사하여 유효하지 않은 CertPath가 유효한 것으로 리턴됩니다. DN을 제외한 모든 측면에서 서버측의 인증과 다른 유효하지 않은 입력이 제공되면, Sun Solaris에서 실행 중인 웹 서비스 애플리케이션이 유효한 CertPath를 잘못 빌드합니다.
해결 방법:
WebSphere Application Server v 6.0.2 이상용으로 새 특성(com.ibm.wsspi.wssecurity.config.CertStore.Provider)이 추가되었습니다.
이 특성을 사용하면, Solaris의 WebSphere Application Server에서 실행 시 웹 서비스 보안이 Sun CertPath 제공자를 사용하는 대신 IBMCertPath 제공자를 사용할 수 있습니다. 이 특성은 신뢰 앵커를 사용하는 경우, 또한 인증 저장소와 함께 인증 저장소 보안 제공자가 지정된 경우 웹 서비스 보안이 사용해야 하는 보안 제공자입니다.
com.ibm.wsspi.wssecurity.config.CertStore.Provider가 지정되고 인증 저장소에 보안 제공자가 지정된 경우, 인증 저장소 보안 제공자는 com.ibm.wsspi.wssecurity.config.CertStore.Provider의 설정을 대체합니다.
카드 관련 요청이 있는 하드웨어 암호화 요청에서는 요청을 완료하기 위해 암호화된 소프트웨어를 사용해야 함
원인:
머신에 로드가 과부화되면 하드웨어 암호화 디바이스 관련 예외가 발생할 수 있습니다. 예외에서 수신한 특정 조작 대신에 비밀번호환 소프트웨어를 사용하기 때문에 이 요청이 제대로 완료됩니다. 그러나 하드웨어 암호화 디바이스는 사용되지 않습니다.
CWWSS5601E: The following exception occurred while decrypting the message:
com.ibm.pkcs11.PKCS11Exception: Another operation is already active
및CWWSS5601E: The following exception occurred while decrypting the message: Key handle is invalid:
com.ibm.pkcs11.PKCS11Exception: Key handle is invalid
이 문제점은 하드웨어 암호화 카드가 많은 수의 조작을 핸들링할 때에만 발생합니다.
해결 방법:
알려진 문제점 해결 방법이 없습니다. 그러나 하드웨어 암호화가 조작에 실패하면 소프트웨어 암호화가 사용되기 때문에 요청이 제대로 완료됩니다.