2011-06-24 16 views
1

フォーム認証を使用するASP.NETアプリケーションがあります。私は、検索基準を満たすネットワークからファイルのリストを取得するにはSharepointのsearch.asmx Webサービスを呼び出す必要がASP.NETフォーム認証と呼び出しWebサービス

は、私はよく分からない

(Sharepointののこの外側をやって私のための十分な理由があります)私がsearch.asmxを渡す必要があるセキュリティ情報。私が試した: queryService.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials queryService.ClientCredentials.Windows.AllowedImpersonationLevel = Security.Principal.TokenImpersonationLevel.Impersonation私のように私の開発環境で動作-which

ユーザーはSharepointにアクセスしているファイル共有にアクセスできます。理解できない、デバッグやイベントビューアなどから推測できないことは、サーバーにこのコードをデプロイすると、上記のコードに資格情報が渡されることです。

フォーム認証を使用する前に、IEウィンドウを開いたユーザーのWindows資格情報を渡しますか? asp.netコンポーネントを実行しているアカウントの資格情報、つまり実行中のAppPoolのアカウント、または別のものを渡すのでしょうか?

Sharepointにファイルが返されないようで、渡される資格情報にファイル共有へのアクセス権がないためだと思います。

おかげ アンディ

答えて

1

これはすぐに作業を取得するには、ユーザー名&パスワードでのSharePoint Webサービスにアクセスすることができます。これは明らかに長期的には最良の解決策ではありません。

ユーザー名&パスワードへのSharePoint WebサービスプロキシのCredentialsプロパティを設定します。

spProxy.Credentials = new NetworkCredential("username", "password", "domain"); 

あなたはWebサービスを呼び出す前に、資格証明書のプロパティが設定されていることを確認する必要があります。

私はSharePointのエキスパートではありません(私は開発者としてのみ使用しています)が、Windows認証を使用してWebサービスを保護するとしか思えません。したがって、ログインしたユーザーとしてWebサービスにアクセスする場合は、フォーム認証はここでは役に立ちません(ユーザー名&をLDAPで手動で検証しない限り)。 ASP.NET偽装&委任は、Windows認証を使用している場合にのみ意味があります。

擬似コードで述べたように、WebサーバーからSharePointにアクセスする特別なアカウントを設定することができます。

+1

ありがとうございました。私はフォーム認証がActive Directoryに対して認証されると言っていたはずなので、理論的には、私は実際のユーザーのハンドルを得ることができるはずです(Forms認証を使用します。なぜなら、ユーザーは、彼ら自身がログオンしていないかもしれません) – andrew

+1

私は全く同じシナリオを持っていました。ユーザーがログインしたときにユーザー名とパスワードを保存できます(フォームチケットまたはセッション状態のuserData文字列でも可能です)。 webserviceを呼び出す準備ができたら、値をnetworkcredentialオブジェクトに配置します。それがあなたを助けてくれたら、これを答えとして記入してください。 –

関連する問題