SOAP Web Service

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기11분
  • SOAP(Simple Object Access Protocol)는 HTTP를 통해 웹 서비스에 액세스하는 데 사용되는 XML 기반 프로토콜입니다.

    SOAP를 사용하여 인스턴스의 데이터에 액세스할 수 있습니다. 사용 가능한 SOAP 웹 서비스는 WS-I Basic Profile 1.0에 설명된 대로 WS-I와 호환됩니다.

    웹 서비스 제공자

    ServiceNow 은 다음 웹 서비스 메서드를 사용하여 기본 테이블 구조 및 연관된 데이터를 게시합니다.
    주:
    SOAP 메시지는 받는 사람이 XML과 호환된다는 가정 하에 전송됩니다. SOAP 메시지에는 인코딩이 적용되지 않습니다. SOAP는 항상 응답을 UTF-8로 디코딩하며, XML 인코딩 헤더는 사용되지 않습니다.

    WSDL

    모든 테이블과 임포트 세트는 테이블 스키마와 사용 가능한 작업을 설명하는 WSDL(웹 서비스 정의 언어) XML 문서를 동적으로 생성합니다.

    테이블 이름과 WSDL 매개변수가 포함된 인스턴스에 URL 호출을 실행하여 테이블의 WSDL을 가져올 수 있습니다. 예:
    https://myinstance.service-now.com/incident.do?WSDL
    

    HTTP를 통해 액세스할 수 있는 모든 동적으로 생성되고 제공되는 ServiceNow WSDL은 오픈 소스 이니셔티브 OSI - Apache 라이센스, 버전 2.0 라이센스 계약에 정의된 조건에 따라 사용할 수 있습니다.

    장기 실행 SOAP 요청 지원

    요청이 Now Platform 처리되는 동안 네트워크 연결의 비활성 상태로 인한 소켓 시간 초과를 방지하여 장기 실행 SOAP 요청을 지원합니다.

    이 기능은 많은 수의 레코드를 요청하거나, 집계 쿼리를 수행하거나, 정렬이 필요한 order by 식을 사용할 때 ODBC 드라이버의 효율성을 향상시킵니다.

    기본적으로 시스템은 ODBC 드라이버 및 MID 서버와 같은 웹 서비스 클라이언트에 ServiceNow 대해 시간 제한 보호를 제공합니다. 시스템 속성을 사용하여 사용자 지정 웹 서비스에 시간 제한 보호를 추가할 수 있습니다.

    시간 제한 보호

    웹 서비스 클라이언트는 긴 세션을 활성 상태로 유지하고 소켓 비활성 상태로 인한 시간 초과를 방지하기 위해 307-임시 리디렉션을 수신합니다. 307-임시 리디렉션은 상태 코드를 지원하는 웹 서비스 클라이언트가 HTTP 위치 헤더에 지정된 위치에 대한 마지막 요청을 반복하도록 합니다. 위치 헤더의 값은 웹 서비스 클라이언트가 원래 지정한 것과 동일한 URL입니다. 307-Temporary Redirects의 사용은 WS-I와 호환됩니다.

    에 지정된 시간 제한 제한을 초과하는 웹 서비스 요청은 다음 조건이 모두 충족되는 경우에만 307-임시 리디렉션을 받을 수 있습니다.glide.soap.request_processing_timeout
    • 값은 glide.soapprocessor.allow_long_running_threads true입니다.
    • 요청에는 URL 매개변수가 redirectSupported=true 포함됩니다.
    • 요청은 세션을 인식합니다(HTTP 쿠키 지원).
    • 리디렉션 수가 에서 glide.soap.max_redirects설정한 값을 초과하지 않았습니다.
    이러한 조건 중 하나라도 충족되지 않으면 웹 서비스 클라이언트에 408 요청 시간 제한 오류가 표시됩니다.
    주:
    응용 프로그램에 408 요청 시간 제한이 아닌 소켓 시간 제한이 발생하도록 하려면 응용 프로그램과 인스턴스 간의 연결에 적용되는 가장 짧은 소켓 시간 제한 설정(호스팅된 인스턴스의 경우 300초)보다 큰 값으로 속성을 설정합니다 glide.soap.request_processing_timeout .

    SOAP 웹 서비스 보안

    인스턴스는 HTTPS 프로토콜에 대한 기본 인증 문제/응답과 상황별 보안을 사용하는 시스템 수준 ACL(접근 제어 목록)의 조합을 사용하여 웹 서비스 보안을 적용합니다. 관리자는 SOAP 역할 중 하나를 부여하여 사용자가 액세스할 수 있는 시스템 자원 웹 서비스를 제어할 수 있습니다.

    SOAP 역할

    SOAP 웹 서비스를 사용하려면 수행하려는 운영에 적합한 역할이 있어야 합니다. 또한 대상 테이블에 액세스하는 데 필요한 다른 역할이 있어야 합니다.

    표 1. SOAP 역할
    역할 설명
    비누 모든 SOAP 작업을 수행할 수 있습니다.
    soap_create 새 기록을 삽입할 수 있습니다.
    soap_delete 기존 기록을 삭제할 수 있습니다.
    soap_ecc [ecc_queue] 테이블에서 기록을 쿼리, 삽입 및 삭제할 수 있습니다.
    soap_query 기록 정보를 쿼리할 수 있습니다.
    soap_query_update 기록 정보를 쿼리하고 기록을 업데이트할 수 있습니다.
    soap_script .do 엔드포인트를 지정하는 스크립트를 실행할 수 있습니다. 이 역할은 스크립트된 웹 서비스를 실행하는 데 필요합니다.
    soap_update 기록을 업데이트할 수 있습니다.
    import_admin 임포트 세트 및 임포트의 모든 측면을 관리할 수 있습니다. 임포트 세트 행 [sys_import_set_row] 테이블에 접근하는 데 필요합니다.
    import_transformer 임포트 세트 변환 맵을 관리하고 변환을 실행할 수 있습니다. 임포트 세트 행 [sys_import_set_row] 테이블에 접근하는 데 필요합니다.

    기본 웹 서비스 역할 요구 사항

    기본적으로 프로세서 ACL 규칙 집합을 사용하려면 사용자에게 WSDL, XSD 및 XML 스키마 요청을 만들 수 있는 soap_query 역할이 있어야 합니다.

    이러한 역할 요구 사항을 변경하려면 ACL 규칙을 비활성화할 수 있습니다.

    그림 1. 웹 서비스 프로세서 ACL

    기본 인증

    각 WSDL 또는 SOAP 메시지 요청에 대해 인스턴스와 연결된 사용자에 대해 기본 인증을 적용하기 위해 관리자는 glide.basicauth.required 속성을 로 설정할 수 있습니다.

    활성화되면 각 WSDL 및 SOAP 요청에는 기본 인증 프로토콜에 지정된 대로 "인증" 헤더가 포함되어야 합니다.

    웹 서비스 요청은 비대화형이므로 요청 중에 항상 Authorization 헤더가 필요합니다.

    주:
    구성된 경우 기본 인증은 로컬 자격 증명 또는 LDAP 인증을 참조합니다.

    모든 요청과 함께 기본 인증 정보를 제공하면(필수 여부에 관계없이) 사용자가 기본 인증 자격 증명에 제공한 웹 서비스 호출을 연결할 수 있다는 추가 이점이 있습니다. 예를 들어 인시던트 기록을 만들 때 저널 필드에는 기본 게스트 사용자 대신 기본 인증 헤더에 포함된 사용자 ID가 나열됩니다.

    SOAP 보안 정책

    향상된 웹 서비스 제공자 - 공통 플러그인은 시스템 웹 서비스 애플리케이션에 SOAP 보안 정책 모듈을 추가합니다. 이 모듈을 사용하면 관리자가 다음 보안 정책을 설정할 수 있습니다.
    • 외부 웹 서비스 이용 시 SOAP 요청 서명 사용 또는 사용 안 함
    • WS-Security를 통해 통신할 때 SOAP 요청이 충족해야 하는 인증 요구 사항을 지정합니다.

    SOAP 액세스 정책에 대한 자세한 내용은 SOAP API 액세스 정책을 참조하십시오.

    그림 2. SOAP 보안 정책

    서명된 SOAP 요청에 필요한 인증서

    WS-Security 통신에 대한 SOAP 요청에 서명하려면 다음 인증서가 필요합니다.

    • 요청자의 X.509 인증서
    • 요청자의 인증서에 서명한 인증 기관의 X.509 CA 인증서

    SOAP 기본 보안 정책

    관리자는 시스템 속성 glide.soap.default_security_policy와 함께 인스턴스가 사용하는 SOAP 보안 정책을 지정할 수 있습니다. glide.soap.default_security_policy 시스템 속성은 인바운드 요청에 WSS(웹 서비스 보안)를 적용할 때 인스턴스가 사용하는 SOAP 보안 정책의 이름을 지정합니다.

    표 2. SOAP 기본 보안 정책 설정
    필드 설명
    유형 문자열
    기본값 기본 보안 정책
    위치 시스템 속성 [sys_properties] 테이블에 시스템 속성 추가

    WS-보안

    WS 보안을 사용하여 서명된 웹 서비스 요청의 유효성을 검증할 수 있습니다. WS-Security를 사용하여 다음을 수행할 수 있습니다.
    • SOAP 메시지가 알려진 보낸 사람으로부터 시작되었는지 확인합니다
    • SOAP 메시지가 전송 중에 변경되지 않았는지 확인합니다.
    ServiceNow 는 서명된 웹 서비스 요청의 유효성을 검증하기 위해 WS-Security 1.1 을 지원합니다.
    주:
    WS-Security는 암호화 메커니즘으로 사용되지 않으며 HTTPS 프로토콜은 모든 통신을 암호화하는 데 사용됩니다.

    WS-Security는 기본 인증과 함께 작동합니다. 인스턴스가 SOAP 메시지를 수신하면 기본 인증 헤더를 검토하여 SOAP 사용자에게 인스턴스에 대한 권한이 있는지 확인합니다. WS-Security 헤더를 검토하여 들어오는 메시지의 유효성을 확인합니다. 메시지 가로채기(man-in-the-middle) 공격과 같은 공격의 영향을 받는 요청은 WS-Security 헤더가 잘못되어 차단됩니다.

    WS-보안 프로파일

    WS 보안 프로파일은 WS 보안이 사용 가능한 경우 웹 서비스 메시지가 인증되는 방법을 판별합니다. 다음 메커니즘을 사용하여 웹 서비스 요청을 인증할 수 있습니다.

    표 3. 웹 서비스 인증 메커니즘
    인증 메커니즘 설명
    인증서 검증 요청과 연결된 인증서를 확인합니다. 요청의 인증서를 확인하려면 요청자의 인증서와 인증 기관을 업로드해야 합니다.
    사용자 자격 증명 요청과 연결된 사용자 자격 증명을 확인하여 웹 서비스 요청을 인증합니다. 이 유형의 인증은 요청의 자격 증명이 기존 사용자의 자격 증명과 일치하거나 요청의 자격 증명이 프로파일 기록에 제공된 사용자 이름 및 암호와 일치하는지 확인할 수 있습니다.
    새 WS 보안 프로파일을 작성할 때 사용할 인증 메커니즘을 지정하십시오.

    WS-보안 프로파일 모듈은 현재 적용 중인 WS-보안 프로파일을 나열합니다.

    그림 3. WS-보안 프로파일 모듈

    WS-보안 오류 로깅

    glide.processor.debug.SOAPProcessor 시스템 속성을 사용하면 WS 보안에 대한 오류 메시지를 트랜잭션 로그에 표시할 수 있습니다.

    시스템 속성 glide.processor.debug.SOAPProcessor는 인증서 및 키 저장소 검사와 같은 SOAP 처리를 위한 디버깅 메시지를 활성화(true) 또는 비활성화(true)합니다.

    표 4. glide.processor.debug.SOAPProcessor 필드
    필드 설명
    유형 예 | 아니요
    기본값 거짓
    위치 시스템 속성 [sys_properties] 테이블에 시스템 속성 추가

    WSS X.509 토큰 프로파일

    WSS X.509 보안 프로파일에 대해 X.509 프레임워크를 사용합니다. X.509 인증서는 들어오는 SOAP 메시지에 서명하는 데 사용되는 공개 키의 유효성을 검사하는 데 사용됩니다. 공개 키와 최소한 다음을 포함하는 속성 집합 간의 바인딩을 지정합니다.
    • 주체 이름
    • 발급자 이름
    • serial number
    • 유효 간격

    웹 서비스 보안: SOAP 메시지 보안 사양에 정의된 대로 X.509 인증 프레임워크를 사용합니다.

    인증서를 업로드하고 X509 인증서 필드에서 참조합니다. 바인드된 세션인 경우, WS-보안 인증이 성공할 때 가장할 사용자를 선택하십시오.

    그림 4. WSS X.509 보안 프로필

    WSS 사용자 이름 토큰 프로파일

    X.509 토큰 프로파일을 지정할 때 SOAP 요청에 UsernameToken을 제공할 수도 있습니다.

    UsernameToken은 "사용자 이름"으로 요청자를 식별하는 수단으로 사용되며, 선택적으로 암호, 공유 암호 또는 이에 상응하는 암호를 사용하여 해당 ID를 인증합니다.

    UsernameToken을 인증하는 방법에는 두 가지가 있습니다.

    1. 기존 사용자 자격 증명으로 인증합니다.
      그림 5. 기존 사용자 자격 증명으로 인증

      수신 SOAP 요청의 사용자 이름을 사용하여 UserName 값과 일치하도록 지정된 사용자 필드로 사용자를 조회합니다. 시스템은 수신 UsernameToken의 비밀번호 값을 사용하여 요청을 인증합니다. 세션 바인딩 옵션을 선택하면 성공적으로 인증된 사용자가 세션에 사용됩니다.

    2. 지정된 사용자 자격 증명으로 인증합니다.
      그림 6. 지정된 사용자 자격 증명으로 인증

      사용자 테이블의 사용자와 관련이 없는 로그인 자격 증명을 사용하여 인증합니다. 세션 바인딩 옵션을 선택하면 사용자로 실행 필드에 지정된 사용자가 세션에 사용됩니다.

    주:
    UsernameToken 프로파일은 X.509 토큰 프로파일과 독립적으로 사용할 수 없습니다.

    웹 서비스에 대한 엄격한 보안

    기본적으로 웹 서비스에 대한 기본 인증은 사용자가 SOAP 연결을 통해 인스턴스에 액세스할 수 있는 권한이 있는지 여부만 결정합니다. 권한이 부여되면 모든 사용자가 웹 서비스로 게시된 모든 테이블에 액세스할 수 있습니다.

    시스템 특성 수신 SOAP 요청에 엄격한 보안 적용은 이 동작을 변경하며, 사용자가 웹 서비스에서 인스턴스 자원에 액세스하려면 상황별 보안 관리자 요구 사항을 충족해야 합니다.

    이 속성을 사용하면 적절한 SOAP 역할을 가지며 테이블 및 운영에 대한 ACL 조건도 충족하는 사용자만 SOAP 연결에서 해당 작업을 수행할 수 있습니다.

    웹 서비스에 대한 상호 인증

    상호 인증은 아웃바운드 웹 서비스에 대해 지원됩니다.

    SOAP 세션 관리 및 보고

    SOAP 세션은 웹 서비스 클라이언트 애플리케이션, ServiceNow MID 서버 또는 ODBC 드라이버와 같은 외부 SOAP 클라이언트에 의해 인스턴스로 설정된 Glide 세션입니다 ServiceNow . SOAP 세션은 다음의 사용자 세션 목록에 포함됩니다. 사용자 관리 > 로그인한 사용자. 그만큼 ? SOAP URL은 SOAP 세션을 식별합니다.

    SOAP 세션 속성

    특정 속성은 SOAP 세션이 유지 관리되는 방법을 제어합니다.

    표 5. SOAP 세션 속성
    속성 설명
    glide.soap.invalidate_session_timeout 활성 세션이 열린 상태로 유지되는 기간(초)입니다. 이 지속 시간에 도달하면 인스턴스는 세션을 비활성화하고 모든 시스템 자원을 회수합니다. 제한 시간에 도달한 후 클라이언트가 다른 요청을 보내면 인스턴스가 새 세션을 설정합니다.

    이 속성은 5초에서 1,200초(20분)까지의 값을 허용합니다.

    • 유형: 정수
    • 기본값: 60
    • 위치: 시스템 속성 [sys_properties] 테이블에 추가
    주:
    SOAP 웹 서비스 처리에 영향을 주는 속성에 대한 자세한 내용은 인스턴스 보안 강화 설정의 다음 주제를 참조하십시오.