다음을 통해 공유


파일에서 읽을 때 XmlResolver에 인증 자격 증명 제공

업데이트: November 2007

읽으려는 XML 데이터가 포함된 파일의 URL을 확인하려는 경우 이 파일에 제한된 액세스 정책이 있을 수 있습니다. 네트워크 리소스에 액세스하기 위해 인증이 필요한 경우 Credentials 속성을 사용하여 필요한 자격 증명을 지정합니다. Credentials 속성을 설정하지 않으면 자격 증명은 null로 설정됩니다.

예를 들어, 웹에서 데이터를 요청할 때 인증을 위한 자격 증명이 필요하다고 가정하겠습니다. 웹 가상 디렉터리에서 익명 액세스를 허용하는 경우에는 이 속성을 익명 액세스로 설정할 필요가 없습니다. 그러나 해당 디렉터리에서 익명 액세스를 허용하지 않는 경우 자격 증명을 제공해야 합니다. 다음 예제에서는 기본 자격 증명과 함께 XmlUrlResolver를 사용하는 XmlReader를 만들어 https://localhost/bookstore/inventory.xml 사이트에 액세스합니다.

' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("https://ServerName/data/books.xml", settings)
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("https://ServerName/data/books.xml", settings);
// Create a resolver with default credentials.
XmlUrlResolver^ resolver = gcnew XmlUrlResolver;
resolver->Credentials = System::Net::CredentialCache::DefaultCredentials;

 // Set the reader settings object to use the resolver.
 settings->XmlResolver = resolver;

// Create the XmlReader object.
XmlReader^ reader = XmlReader::Create( L"https://ServerName/data/books.xml", settings );

URI가 서로 다른 경우 다른 자격 증명을 제공할 수 있으며 서로 다른 자격 증명을 자격 증명 캐시에 추가할 수 있습니다. 이러한 자격 증명은 XML의 원본 소스와는 무관하게 서로 다른 URI의 인증을 검사하는 데 사용됩니다. 다음 예제는 자격 증명을 캐시에 추가하는 방법을 보여 줍니다.

' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("https://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)

' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache

' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("https://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("https://www.contoso.com/"), "Basic", myCred); 
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);

// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;

// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("https://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);   

참고 항목

개념

XmlResolver를 사용하여 리소스 확인

참조

NetworkCredential

CredentialCache

기타 리소스

URI에 의해 명명된 외부 XML 리소스 확인

보안 및 System.Xml 응용 프로그램