Share via


ASP.NET을 사용하여 만든 XML Web services에 보안 설정

웹 서비스에 가장 적합한 보안 구현을 결정하는 첫 번째 단계에서는 인증과 권한 부여라는 두 가지 기본적인 보안 원칙을 검토합니다. 인증은 사용자 이름 및 암호와 같은 자격 증명을 기반으로 특정 권한에 대해 ID를 확인하는 프로세스입니다. ID가 인증되면 권한 부여 프로세스는 해당 ID가 리소스에 대해 액세스 권한이 있는지를 확인합니다.

ASP.NET을 사용하여 만든 웹 서비스는 ASP.NET 또는 사용자 지정 SOAP 기반 보안에서 제공하는 인증 및 권한 부여 옵션 중에서 보안 옵션을 선택할 수 있습니다. ASP.NET은 IIS(인터넷 정보 서비스)와 연동하여 다양한 인증 및 권한 부여 옵션을 제공하며, SOAP 헤더 사용과 같은 사용자 지정 인증 옵션을 만들 수도 있습니다. 또한 ASP.NET은 클라이언트 자격 증명을 사용하여 요청을 실행하기 위해 가장이라는 기능을 제공합니다. 가장 기능 사용에 대한 자세한 내용은 ASP.NET 가장을 참조하십시오.

이 항목에서는 ASP.NET을 사용하여 빌드한 웹 서비스에 사용할 수 있는 인증 및 권한 부여 옵션에 대해 간략하게 설명합니다. ASP.NET 웹 응용 프로그램에서 사용할 수 있는 보안 옵션에 대한 자세한 내용은 Securing ASP.NET Web Applications보안 ASP.NET 응용 프로그램 빌드: 인증, 권한 부여 및 보안 통신(영문 페이지일 수 있음)을 참조하십시오.

ASP.NET 기반 응용 프로그램에서 원격 리소스에 액세스하는 방법에 대한 자세한 내용은 보안 ASP.NET 응용 프로그램 빌드(영문 페이지일 수 있음)의 3장 "가장/위임 모델" 및 "신뢰할 수 있는 하위 시스템 모델" 항목을 참조하십시오.

XML Web Services의 인증 옵션

ASP.NET을 사용하여 만든 웹 서비스에는 클라이언트 인증을 위한 다양한 옵션이 제공되므로 특정 웹 서비스에 적합한 옵션이 무엇인지를 결정해야 합니다. 개발자는 올바른 보안 옵션을 선택하기 위한 절차 중 하나로 보안 및 성능 수준을 선택해야 합니다. 일부 웹 서비스에서는 클라이언트 자격 증명을 네트워크를 통해 암호화한 상태로 전송해야 하기 때문에 클라이언트 자격 증명을 암호화하는 알고리즘이 반드시 필요합니다. 예를 들어, 신용 카드를 처리하는 웹 서비스를 작성하는 개발자는 신용 카드 데이터 암호화로 인한 추가적인 오버헤드보다 클라이언트 자격 증명에 대한 도난을 더욱 우려할 것입니다.

다음 표에서는 ASP.NET을 사용하여 빌드한 웹 서비스에 사용할 수 있는 인증 옵션에 대해 간략하게 설명합니다. Windows로 시작하는 옵션은 ASP.NET을 사용하여 만든 웹 서비스에서 사용할 수 있는 Microsoft Windows 인증 옵션입니다.

인증 옵션 요약

인증 옵션 설명

Windows - 기본

클라이언트에 대한 비보안 인증에 사용되며 사용자 이름과 암호가 일반 텍스트의 base 64 인코딩 문자열로 전송됩니다. 이 인증 형식은 암호와 사용자 이름을 인코딩하지만 암호화하지는 않습니다. 따라서 악의적인 사용자가 네트워크 모니터링 도구를 사용하여 사용자 이름과 암호를 가로챌 수 있습니다.

Windows - SSL을 통한 기본

인터넷 시나리오에서 클라이언트의 보안 인증에 사용됩니다. 사용자 이름과 암호를 일반 텍스트가 아닌 SSL(Secure Sockets Layer) 암호화를 사용하여 네트워크를 통해 전송합니다. 이 옵션은 인터넷 시나리오에서 보다 쉽게 구성하여 적용할 수 있습니다. 그러나 SSL을 사용하면 성능이 저하됩니다.

Windows - 다이제스트

인터넷 시나리오에서 클라이언트의 보안 인증에 사용됩니다. 해시를 사용하여 클라이언트 자격 증명을 암호화된 방식으로 전송하기 때문에 암호가 일반 텍스트로 전송되지 않습니다. 다이제스트 인증은 프록시 서버를 통해 수행할 수 있습니다. 그러나 이 옵션은 다른 플랫폼에서 지원되지 않는 경우가 많습니다.

Windows - Windows 통합

NTLM 또는 Kerberos를 사용합니다. 사용자의 Microsoft Internet Explorer 웹 브라우저와 암호화 교환을 사용합니다.

Windows - 클라이언트 인증서

인터넷 및 인트라넷 시나리오에서 클라이언트의 보안 인증에 사용됩니다. 각 클라이언트는 상호 신뢰할 수 있는 인증 기관의 인증서를 사용해야 합니다. 인증서는 사용자 계정에 선택적으로 매핑되며 IIS에서 웹 서비스에 대한 액세스 권한을 부여하는 데 사용됩니다.

웹 서비스에는 지원되지 않습니다. 이 옵션은 HTTP 클라이언트측 리디렉션을 사용하여 인증되지 않은 요청을 HTML로 리디렉션하는 시스템입니다. 대부분의 웹 서비스 클라이언트는 UI를 사용하여 자격 증명을 제공하려 하지 않으므로, 폼 인증을 사용하려면 이 문제를 해결해야 합니다.

SOAP 헤더 – 사용자 지정

보안 및 비보안 인터넷 시나리오 모두에 유용합니다. 사용자 자격 증명이 SOAP 메시지의 SOAP 헤더 내에 전달됩니다. 웹 서버는 웹 서비스를 호스팅하는 플랫폼에 상관없이 사용자 지정 인증 구현을 제공합니다.

SOAP 헤더 사용을 제외하고 위에 나열된 모든 옵션에서 보안 설정은 구성 파일과 IIS를 조합하여 지정합니다. 사용자 지정 SOAP 헤더 옵션을 사용한 솔루션에는 인증과 권한 부여가 모두 포함되므로 권한 부여 단원 뒤에 자세히 설명되어 있습니다.

Windows 인증

IIS와 ASP.NET은 모두 Windows에 빌드된 보안을 사용하여 웹 서비스를 포함한 웹 응용 프로그램 인증을 지원합니다. Windows에서는 기본, 다이제스트, Windows 통합의 세 가지 인증 옵션을 제공합니다. 또한 각 옵션을 SSL과 함께 사용할 수 있습니다. 기본 인증을 제외한 모든 Windows 인증 옵션은 특정 형태로 데이터를 암호화하기 때문에 SSL에 제공되는 추가 암호화 수준은 일반적으로 기본 또는 클라이언트 인증서에서만 사용됩니다.

사용하는 Windows 인증 옵션에 상관없이 웹 서비스와 웹 서비스 클라이언트를 설정하는 절차는 비슷합니다. 자세한 내용은 방법: Windows 인증에 대해 XML Web services 구성을 참조하십시오. 인증 옵션은 구성 파일과 IIS에서 설정되므로 Windows 인증을 사용하기 위해 웹 서비스에 코드를 추가할 필요는 없습니다. 대신 클라이언트 자격 증명을 웹 서비스에 전달하는 코드를 웹 서비스 클라이언트에 추가해야 합니다.

웹 서비스에서 사용하는 인증 메커니즘의 일부로 SSL을 선택할 경우, 웹 서비스를 호스팅하는 웹 응용 프로그램이나 웹 서비스 자체에 대해 IIS를 사용하여 SSL을 구성해야 합니다. SSL을 통해 서비스 설명과 서비스 도움말 페이지를 액세스할 경우, 서비스 설명과 해당 설명으로부터 생성된 프록시 클래스에는 SSL을 사용한 웹 서비스가 반영됩니다. 서비스 설명에서 웹 서비스에 대한 URL은 https로 시작합니다. SSL 설정에 대한 자세한 내용은 IIS 설명서를 참조하십시오.

클라이언트 인증서 인증

클라이언트 인증서는 클라이언트에서 웹 서버에 대한 SSL 연결을 사용하여 클라이언트 인증서라는 전자 문서를 보냄으로써 인증을 거치도록 하는 인증 보안 메커니즘을 제공합니다. SSL 연결은 네트워크를 통해 전송되는 클라이언트 인증서에 포함된 클라이언트 자격 증명을 암호화합니다. 웹 서버와 클라이언트 간의 통신은 클라이언트가 전송하는 암호화 키와 웹 서버에서 제공하는 키를 조합하여 암호화됩니다. 통신이 설정되면 클라이언트 컴퓨터와 서버 컴퓨터만 SSL 연결을 사용하여 서로 통신할 수 있습니다.

클라이언트 인증서는 인증 기관으로부터 받을 수 있으며, 인증 기관은 웹 서버 자체이거나 클라이언트와 서버 간의 신뢰할 수 있는 중간 매개자가 될 수 있습니다. 인증서를 받아서 클라이언트 인증서를 승인하도록 웹 서버를 구성했다면 웹 서비스가 호출될 때 클라이언트가 SSL 연결을 통해 웹 서버로 클라이언트 인증서를 보낼 수 있습니다. 클라이언트 인증서에 대한 자세한 내용은 IIS 설명서를 참조하십시오. 웹 서비스에 대한 클라이언트 인증서 인증 설정에 대한 자세한 내용은 방법: Windows 인증에 대해 XML Web services 구성을 참조하십시오.

XML Web Services의 권한 부여 옵션

권한 부여의 목적은 지정된 리소스에 대해 요청된 액세스 형식에 ID를 부여할지 여부를 결정하는 데 있습니다. 지정된 리소스에 액세스 권한을 부여하는 데는 파일 권한 부여와 URL 권한 부여의 두 가지 기본 방법을 사용할 수 있습니다. 파일 권한 부여는 IIS에서 파일 단위로 권한이 설정되기 때문에 Windows 인증을 사용할 때마다 사용할 수 있습니다. URL 권한 부여는 ASP.NET에서 지원하는 기본 제공 인증 메커니즘과 함께 사용할 수 있습니다. URL 권한 부여에서는 구성 파일을 통해 구성 작업이 수행되며, .asmx 파일을 포함하여 ASP.NET과 연관된 모든 파일에 대해 사용자에게 선택적으로 액세스를 부여하거나 거부할 수 있습니다.

파일 단위 권한 부여 설정에 대한 자세한 내용은 IIS 설명서를 참조하십시오.

구성 파일을 사용한 권한 설정에 대한 자세한 내용은 ASP.NET 권한 부여를 참조하십시오.

SOAP 헤더를 사용한 사용자 지정 인증

클라이언트 인증서를 포함하여 Windows 인증 메커니즘은 HTTP 전송을 사용하지만 SOAP는 전송 독립적입니다. ASP.NET을 사용하여 빌드된 웹 서비스는 SOAP가 아닌 XML 문서를 반환하는 HTTP-POST 및 HTTP-GET 구현과 SOAP over HTTP를 사용합니다. 따라서 사용자 지정 인증 메커니즘을 만드는 이유 중 하나는 인증을 전송과 분리하기 위해서입니다. 인증과 전송의 분리는 SOAP 헤더의 인증 자격 증명을 전달함으로써 이루어집니다.

SOAP 헤더는 웹 서비스의 의미 체계와 상관없이 out-of-band 또는 정보를 전달할 수 있는 좋은 방법입니다. 웹 서비스 메서드에서 처리되는 웹 서비스 작업에 대한 입력 및 출력 매개 변수를 포함하는 SOAP 메시지의 Body 요소와 달리 Header 요소는 선택적 요소이므로 인프라에서 처리할 수 있습니다. 즉, 사용자 지정 인증 메커니즘을 제공하기 위해 개발된 인프라에서 처리합니다.

인증을 위해 SOAP 헤더를 사용하는 방법에 대한 자세한 내용은 방법: SOAP 헤더를 사용하여 사용자 지정 인증 수행을 참조하십시오.

웹 서비스 클라이언트에서는 인증에 SOAP 헤더를 사용하기 위해 예상 SOAP 헤더를 SOAP 요청에 추가한 후 클라이언트 자격 증명으로 채워서 웹 서비스에 자격 증명을 보냅니다. 웹 서비스에서는 SOAP 헤더 인증을 사용하기 위해 두 가지 작업을 수행해야 합니다. 첫째, 인증 자격 증명을 포함하는 SOAP 헤더를 예상하고, 둘째, 웹 서비스에 대한 클라이언트 액세스 권한을 부여해야 합니다.

참고 항목

작업

방법: Windows 인증에 대해 XML Web services 구성
방법: SOAP 헤더를 사용하여 사용자 지정 인증 수행

참조

NetworkCredential
CredentialCache
X509Certificate

기타 리소스

ASP.NET 웹 응용 프로그램 보안
ASP.NET을 사용하여 XML Web Services 빌드

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.