다음을 통해 공유


방법: Windows 인증에 대해 XML Web services 구성

이 항목은 레거시 기술과 관련된 것입니다. 이제 XML Web services와 XML Web services 클라이언트는 다음을 사용하여 만들어야 합니다. Windows Communication Foundation.

Code Example

클라이언트 자격 증명을 제외한 모든 형태의 Windows 인증을 사용하여 클라이언트 자격 증명을 구성한 후 웹 서비스에 전달하려면 다음 절차를 수행합니다. 클라이언트 자격 증명의 경우에는 클라이언트 인증서 인증 단원을 따릅니다.

Windows 인증을 사용하도록 웹 서비스를 구성하려면

  1. IIS를 사용하여 Windows 인증을 사용하도록 웹 서비스를 구성합니다.

    IIS를 사용하면 디렉터리 또는 파일 수준에서 보안을 지정할 수 있습니다. 파일 단위로 웹 서비스에 대한 보안을 지정하려면 IIS의 .asmx 파일에서 웹 서비스에 대한 사용 권한을 설정합니다. .asmx 파일은 웹 서비스의 진입점입니다. 자세한 내용은 IIS 설명서를 참조하십시오.

  2. Windows 인증을 지정하도록 구성 파일을 수정합니다.

    구성 파일에서 authentication XML 요소의 mode 특성을 "Windows"로 설정합니다. 다음 코드 예제에서는 Windows 인증을 사용하도록 구성 파일을 수정합니다.

    // Fragment of a Web.config file.
    <authentication mode= "Windows">
    </authentication> 
    

Windows 인증을 사용하여 클라이언트 자격 증명을 웹 서비스에 전달하려면

  1. 웹 서비스에 프록시 클래스의 새 인스턴스를 만듭니다. 프록시 클래스가 생성되지 않은 경우 자세한 내용은 XML Web services 프록시 만들기를 참조하십시오.

  2. UserName, PasswordDomain 속성을 설정하여 NetworkCredential 클래스의 새 인스턴스를 만듭니다.

  3. CredentialCache의 새 인스턴스를 만듭니다.

  4. CredentialCacheAdd 메서드를 사용하여 CredentialCacheNetworkCredential을 추가합니다.

  5. CredentialCache 인스턴스를 프록시 클래스의 Credentials 속성에 할당합니다.

    통합 Windows 인증이 사용되는 경우 Credentials 속성을 System.Net.CredentialCache.DefaultCredentials로 설정해야 합니다.

    Credentials 속성이 DefaultCredentials로 설정되면 클라이언트는 서버의 구성 방식에 따라 Kerberos 및/또는 NTLM 인증을 수행하기 위해 서버와 협상합니다.

  6. 다음 코드 예제에서는 Windows 인증을 사용하여 웹 서비스 메서드에 전달되는 클라이언트 자격 증명을 설정합니다.

클라이언트 인증서 인증

Windows 인증의 클라이언트 자격 증명을 사용하여 클라이언트 자격 증명을 구성한 후 웹 서비스에 전달하려면 다음 절차를 수행합니다.

클라이언트 인증서 인증을 사용하도록 웹 서비스를 구성하려면

  1. 다음 목록은 클라이언트 인증서를 사용하여 클라이언트를 인증하도록 IIS를 구성하는 방법에 대한 개요입니다. 자세한 내용은 IIS 설명서를 참조하십시오.

  2. SSL을 설치합니다.

  3. 클라이언트 인증서를 수락하도록 웹 응용 프로그램을 구성합니다.

  4. 웹 서비스에 대해 Windows 인증을 지정하도록 구성 파일을 수정합니다.

    구성 파일에서 authentication XML 요소의 mode 특성을 "Windows"로 설정합니다. 다음 코드 예제에서는 Windows 인증을 사용하도록 구성 파일을 수정합니다.

    // Fragment of a Web.config file.
    <authentication mode= "Windows">
    </authentication>
    

클라이언트 인증서 인증을 사용하여 클라이언트 자격 증명을 웹 서비스에 전달하려면

  1. 웹 서비스에 프록시 클래스의 새 인스턴스를 만듭니다. 프록시 클래스가 생성되지 않은 경우 자세한 내용은 XML Web services 프록시 만들기를 참조하십시오.

  2. X509Certificate의 새 인스턴스를 만듭니다.

  3. CreateFromCertFile 메서드를 호출하여 파일에서 클라이언트 인증서를 로드합니다.

    클라이언트는 신뢰할 수 있는 인증 기관으로부터 클라이언트 인증서 파일을 가져올 수 있습니다. 자세한 내용은 IIS 설명서를 참조하십시오.

  4. X509Certificate를 프록시 클래스의 ClientCertificates ClientCertificates 컬렉션에 추가합니다.

    다음 코드 예제에서는 웹 서비스 클라이언트가 클라이언트 인증서를 사용하여 자격 증명을 전달하는 방법을 설명합니다. 웹 서버에서 발급한 클라이언트 인증서는 CreateFromCertFile 메서드를 사용하여 파일에서 로드된 다음 프록시 클래스의 ClientCertificates 속성에 추가됩니다.

    ' Instantiate proxy class to a Bank Web service.
    Dim bank As BankSession = new BankSession()
    
    ' Load the client certificate from a file.
    Dim x509 As X509Certificate = X509Certificate.CreateFromCertFile("c:\user.cer")
    
    ' Add the client certificate to the ClientCertificates property
    ' of the proxy class.
    bank.ClientCertificates.Add(x509)
    
    ' Call the method on the proxy class, which requires authentication
    ' using client certificates.
    bank.Deposit(500)
    
    // Instantiate proxy class to a Bank Web service.
    BankSession bank = new BankSession();
    
    // Load the client certificate from a file.
    X509Certificate x509 = X509Certificate.CreateFromCertFile(@"c:\user.cer");
    
    // Add the client certificate to the ClientCertificates property
    // of the proxy class.
    bank.ClientCertificates.Add(x509);
    
    // Call the method on the proxy class, which requires
    // authentication using client certificates.
    bank.Deposit(500);
    

예제

Credentials 속성이 System.Net.CredentialCache.DefaultCredentials로 설정되면 클라이언트는 서버의 구성 방식에 따라 Kerberos 및 NTLM 인증을 수행하기 위해 서버와 협상합니다.

다음 코드 예제에서는 Windows 인증을 사용하여 웹 서비스 메서드에 전달되는 클라이언트 자격 증명을 설정합니다.

Imports System
Imports System.Web.Services.Protocols
Imports System.Net
Imports MyMath

Public Class Calculator
   Public Shared Sub Main()
     ' Create a new instance of the proxy class to an
     ' Web service method. 
     Dim mathproxy As MyMath.Math = New MyMath.Math()
     
     ' Create a new instance of CredentialCache.
     Dim mycredentialCache As CredentialCache = New CredentialCache()

     ' Create a new instance of NetworkCredential using the client
     ' credentials.
       Dim credentials As NetworkCredential = New _          NetworkCredential(UserName,SecurelyStoredPasword,Domain)

     ' Add the NetworkCredential to the CredentialCache.
       mycredentialCache.Add(New Uri(mathproxy.Url), "Basic", _                             credentials)

     ' Add the CredentialCache to the proxy class credentials.
     mathproxy.Credentials = mycredentialCache

     ' Call the method on the proxy class.
     Dim result As Integer 
     result = mathproxy.Add(3,5)
  End Sub
End Class 
using System;
using System.Web.Services.Protocols;
using System.Net;
using MyMath;

public class Calculator
{
  public static void Main() 
  {
     // Create a new instance of the proxy class to an XML
     // Web service method. 
     MyMath.Math math = new MyMath.Math();

    // Create a new instance of CredentialCache.
    CredentialCache credentialCache = new CredentialCache();

   // Create a new instance of NetworkCredential using the client
   // credentials.
   NetworkCredential credentials = new
      NetworkCredential(UserName,SecurelyStroredPassword,Domain);

   // Add the NetworkCredential to the CredentialCache.
   credentialCache.Add(new Uri(math.Url),                        "Basic", credentials);

   // Add the CredentialCache to the proxy class credentials.
   math.Credentials = credentialCache;

     // Call the method on the proxy class.
     int result = math.Add(3,5);
  }
}

참고 항목

작업

방법: SOAP 헤더를 사용하여 사용자 지정 인증 수행

참조

NetworkCredential
CredentialCache
X509Certificate

개념

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

기타 리소스

ASP.NET Web Application Security
ASP.NET을 사용하는 XML Web services