Sharepoint 2010 正在尝试调用SharePoint 2010 List.asmx服务。SharePoint 2010正在使用Azure AD应用程序代理

Sharepoint 2010 正在尝试调用SharePoint 2010 List.asmx服务。SharePoint 2010正在使用Azure AD应用程序代理,sharepoint-2010,authorization,asmx,azure-active-directory,bearer-token,Sharepoint 2010,Authorization,Asmx,Azure Active Directory,Bearer Token,我们的SharePoint 2010网站现在正在使用Azure AD应用程序代理作为单一登录解决方案 我们有一个Azure Web作业正在尝试访问SharePoint 2010 List.asmx服务 我们将List.asmx服务作为Web应用程序添加到Azure AD 我们能够获得List.asmx服务的承载令牌 var apiClientId=“XXXXXXXX-8ceb-452b-abec-B85A784FB5”; 在此输入代码var apiAppKey=“XXXXXXXX LX0ZJYN

我们的SharePoint 2010网站现在正在使用Azure AD应用程序代理作为单一登录解决方案

我们有一个Azure Web作业正在尝试访问SharePoint 2010 List.asmx服务

我们将List.asmx服务作为Web应用程序添加到Azure AD

我们能够获得List.asmx服务的承载令牌

var apiClientId=“XXXXXXXX-8ceb-452b-abec-B85A784FB5”;
在此输入代码var apiAppKey=“XXXXXXXX LX0ZJYNQ8MMICEX454VRTOKXA0QQIZUKQY8=”;
变量apiResourceId=”https://sharepoint2010baseurl.com/_vti_bin/lists.asmx";
var tenant=“XXXXXXXX-debb-41a6-9c78-0516c185fa0d”;
var aadInstance=”https://login.windows.net/{0}";
authority=String.Format(CultureInfo.InvariantCulture,aadInstance,tenant);
var authContext=新的AuthenticationContext(授权);
if(authContext.TokenCache.ReadItems().Count()>0)
authContext=新的AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
var clientCredential=新的clientCredential(apiClientId,apiAppKey);
var authResult=await authContext.AcquireTokenAsync(apiResourceId,clientCredential);
Assert.IsNotNull(authResult.AccessToken);
将承载令牌添加到SoapClient调用的RequestMessage头之后,我们得到一个错误

var soapClient=new ListsSoapClient();
soapClient.ClientCredentials.UserName.UserName=“BasicUserName”;
soapClient.ClientCredentials.UserName.Password=“BasicPassword”;
常量字符串listName=“公告”;
使用(新OperationContextScope(soapClient.InnerChannel))
{
HttpRequestMessageProperty requestMessage=新的HttpRequestMessageProperty();
requestMessage.Headers[“Content Type”]=“text/xml”;
requestMessage.Headers[System.Net.HttpRequestHeader.Authorization]=“Bearer”+authResult.AccessToken;
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name]=requestMessage;
var query=new-XElement(“query”,“query”);
var viewFields=new XElement(“viewFields”,
新XElement(“FieldRef”,新XAttribute(“Name”,“ID”),
新XElement(“FieldRef”,新XAttribute(“名称”,“标题”),
新XElement(“FieldRef”,新XAttribute(“名称”,“正文”),
);
var queryOptions=new-XElement(“queryOptions”,“queryOptions”);
var result=soapClient.GetListItems(listName,null,null,viewFields,null,null);
IsNotNull(结果,“结果为null”);
}
我们收到的错误消息如下:

HTTP请求未经客户端身份验证方案“Basic”授权。从服务器接收到的身份验证标头是'Bearer realm=“XXXXXXXX-debb-41a6-9c78-0516c185fa0d”,authorization\u uri=”https://login.microsoftonline.com/XXXXXXXX-debb-41a6-9c78-0516c185fa0d/oauth2/authorize“,受信任的发行人=“00000001-0000-0000-c000-000000000000@*”,客户id=“XXXXXXXX-f826-46d2-a221-ba9908427c8f”

这里的基本问题是,如何使用Azure广告承载令牌调用asmx服务