我正在尝试使用本教程:https://medium.com/plumsail/how-to-call-sharepoint-from-microsoft-flow-with-a-help-of-an-azure-function-a5740794341使用Azure Functions设置自定义MS Flow触发器来处理sharepoint文档。所以,我完全遵循了tut,并且到目前为止只更改了我的凭据。
我收到以下错误,告诉我该帐户未获得授权,我必须首先浏览该网站并启用自动登录
2018-01-03T21:11:01.889 Exception while executing function: Functions.CreateFolder. Microsoft.Azure.WebJobs.Script: One or more errors occurred. Microsoft.SharePoint.Client.Runtime: Cannot contact web site 'https://mysite.sharepoint.com/' or the web site does not support SharePoint Online credentials. The response status code is 'Unauthorized'. The response headers are 'X-SharePointHealthScore=0, X-MSDAVEXT_Error=917656; Access+denied.+Before+opening+files+in+this+location%2c+you+must+first+browse+to+the+web+site+and+select+the+option+to+login+automatically., SPRequestGuid=9c003d9e-9090-5000-1519-82d69fd4d838, request-id=9c003d9e-9090-5000-1519-82d69fd4d838, MS-CV=nj0AnJCQAFAVGYLWn9TYOA.0, Strict-Transport-Security=max-age=31536000, X-FRAME-OPTIONS=SAMEORIGIN, SPRequestDuration=29, SPIisLatency=0, MicrosoftSharePointTeamServices=16.0.0.7206, X-Content-Type-Options=nosniff, X-MS-InvokeApp=1; RequireReadOnly, Content-Length=0, Content-Type=text/plain; charset=utf-8, Date=Wed, 03 Jan 2018 21:11:01 GMT, P3P=CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI", Server=Microsoft-IIS/8.5, X-Powered-By=ASP.NET'.
确实不确定它们的含义,但无论我的登录需要mfa。有没有人试过这样做,使用mfa时我需要做些什么特别的事情吗?以下是建立客户端连接的几行。
string userName = System.Environment.GetEnvironmentVariable("SharePointUser", EnvironmentVariableTarget.Process);
string password = System.Environment.GetEnvironmentVariable("SharePointPassword", EnvironmentVariableTarget.Process);
var authenticationManager = new PnPAuthenticationManager();
var clientContext = authenticationManager.GetSharePointOnlineAuthenticatedContextTenant(sharePointSiteUrl, userName, password);
var pnpClientContext = PnPClientContext.ConvertFrom(clientContext);
任何帮助非常感谢。
编辑:
答案 0 :(得分:1)
使用ServicePrincipalUser是自动化工具的最佳方式。 ħ
设置服务主体凭证的说明
获取Azure CLI
npm i -g azure-cli
登录Azure
azure login
这将为您提供代码并提示您访问aka.ms/devicelogin。提供代码,然后使用Azure身份登录(如果您已经登录,则可能会自动执行此操作)。然后,您就可以通过CLI访问您的帐户。
获取您的订阅和租户ID
azure account show
保存订阅和租户ID以供日后
为给定的<name>
和<password>
创建服务主体并添加贡献者角色。
azure ad sp create -n <name> -p <password>
这应该返回一个对象,该对象具有servicePrincipalNames
属性和ObjectId。保存对象ID和阵列中的一个名称以及您稍后提供的密码。如果您以后需要查找服务主体,可以使用azure ad sp -c <name>
,其中<name>
是最初提供的名称。请注意,您提供的<name>
不是您稍后提供的名称,而是servicePrincipalNames
数组中的名称。
然后使用ObjectId授予SP参与者访问权限
azure role assignment create --objectId <objectIDFromCreateStep> -o Contributor
要确保SP用户拥有所需资源的权限,请先尝试在Azure函数之外使用它。