DOMAIN\USER1アカウントとして実行されるMVC3Webアプリケーションがあります。このユーザーはADにSPNが設定されており、委任について信頼されています。
このアプリケーションが発信者に代わってSharePointサーバーにアクセスし、発信者のファイルをアップロードするようにします。私は次のコードを使用します
Dim request = HttpWebRequest.Create(http://sharepoint.domain.com)
request.Method = WebRequestMethods.Http.Head
request.PreAuthenticate = True
Dim identity = New WindowsIdentity(callerName & "@domain.com")
Dim impContext = identity.Impersonate()
'###### At this point identity.ImpersonationLevel is `Impersonate` not `Delegate`
request.Credentials = CredentialCache.DefaultNetworkCredentials
'###### DefaultNetworkCredentials is empty (Username, domain and password are all empty strings)
Dim response As HttpWebResponse
Try
response = request.GetResponse()
Return JsonSuccess()
Catch ex As WebException
'###### I get 401 Unauthorized exception
Return JsonError(ex.Message)
Finally
impContext.Undo()
End Try
私の質問はです。この時点での偽装レベルはImpersonate
またはDelegate
(SharepointはIISサーバーとは異なるマシンで実行されます)である必要がありますか?ADでは、SharePointとHTTPのプロトコル遷移も構成したので、要求を行った後ににImpersonate
変更する必要がDelegate
ありますか?わからないので、ご案内をいただければ幸いです。
もう1つの質問は、CredentialCache.DefaultNetworkCredentialsに少なくとも偽装されたユーザーのユーザー名を含めるべきではないかということです。