0

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に少なくとも偽装されたユーザーのユーザー名を含めるべきではないかということです。

4

1 に答える 1

0

私はここで答えを見つけました:

http://support.microsoft.com/kb/810572

「Kerberosは負荷分散アーキテクチャでは機能せず、IISはNTLM認証に戻ります。委任にNTLMを使用できないため、委任を必要とするアプリケーションまたはサービスは機能しません。詳細については、次の記事番号をクリックして表示してください。 Microsoftの記事」

そしてそれはまさにその通りでした。負荷分散されていない別のマシンで試してみましたが、動作します。

それでも私を驚かせる唯一のことは、アイデンティティのImpersonationLevelがまだImpersonateないということDelegateです...

于 2012-06-21T08:22:25.197 に答える