0

特定のアクションを実行するためのカスタム SharePoint Web サービスがあります。ユーザー資格情報は、Soap ヘッダーを介して渡されます。認証情報は問題なく Web サービスに到達します。

問題: ユーザー資格情報を使用して Web サービスを呼び出していない場合、次のコードは「Unauthorized Error」を返します。

WebService メソッド

[WebMethod(Description = "Test Credentials")]
[SoapDocumentMethod(Binding = "SPService")]
[SoapHeader("Authen")]
public string[] TestCredentials(string siteURL)
{
string[] credentials = new string[3];
using (SPSite site = new SPSite(siteURL))
    {
    using (SPWeb spW = site.OpenWeb())
        {
        credentials[0] = Authen.CallingUserName;
        credentials[1] = Authen.CallingUserPwd;
        credentials[2] = siteURL;                
        }
    }
return credentials;
}

クライアントコード

SPService.SPService spS = new SPService.SPService();//Webservice class
SPService.UserAuth ua = new SPService.UserAuth(); //Soap Header class
ua.CallingUserName = UserName; // User name
ua.CallingUserPwd = Password; // Password for the Username
spS.UserAuthValue = ua; // assigning the credential to the SoapHeader.

//System.Net.NetworkCredential nc = new NetworkCredential(UName, pwd, Domain);
//spS.Credentials = new NetworkCredential(UName, pwd, Domain);

string[] str = new string[3];
str = spS.TestCredentials(txt_URL.Text,"Shared Documents");

ネットワーク資格情報がコメントアウトされていると、The request failed with HTTP status 401: Unauthorized.エラーが発生します。資格情報が使用されている場合、Web サービスは期待値を返します。

カスタム Web サービスの要件は、WS-Security を使用してログイン資格情報を渡し、それを使用して SharePoint サイトにログインすることです。

いくつかのヘルプが役立ちます。これに関する詳細が必要な場合はお知らせください。

4

1 に答える 1

0

SPSite コンストラクターは、Sharepoint にアクセスしているため、正しく初期化するために認証を必要とします。ここで説明されているのと同様の方法で、事前に作成した資格情報を使用してインスタンス化できます

于 2012-10-26T10:49:42.627 に答える