![]() |
1
5
1在您提到的3个选项中,您应该使用哪个选项(或者如果有其他更好的选项:)来管理配置数据/服务帐户标识方案4 (与选项2类似,但有细微差别): 您应该将服务帐户标识和配置数据完全从控制台应用程序中取出,并通过Azure功能应用程序的“应用程序设置”将它们传入。 此选项与您在问题中的选项2类似,因为您将信息保留在控制台应用程序代码之外
但不同的是,我并不是说你将能够为你的Azure函数应用程序定义一个服务帐户来运行(因为你不能控制Azure函数将在哪个帐户下运行,微软的基础设施会处理它),相反,您将把它作为安全配置数据传递给您的控制台应用程序,并且您的控制台应用程序将使用它。稍后将在比较选项时详细介绍安全性/加密。 实际上,我从问题中提取了你的控制台应用程序代码,创建了一个控制台应用程序,并在一个计时器触发的Azure函数中使用它来让它工作。所以这些步骤来自一个工作样本。我用的是“Microsoft.SharePointOnline.CSOM“我的控制台应用程序中的nuget包,并且必须将一些依赖项dll与exe一起上载才能运行。如果您遇到问题,请随时询问有关执行此部分的更多详细信息。
为要从控制台应用程序中取出并从外部控制的所有项目添加设置。我看到的3个项目都是我做的,但这取决于你。
然后更改代码以使用这些设置。我已经显示了在最后的确切代码更改。 方案5 在Azure AD中注册新应用程序以表示您的Azure功能。
这里是 blog post 这将详细介绍选项5中涉及的步骤。 注意:这个博客仍然遗漏了证书的细节,如密码在最后的功能代码,这将是不理想的,你需要把它移到应用程序设置或Azure密钥库理想。 它是一个任意的IIS应用程序池帐户,正如@Mitch Stewart,other SO posts所指出的,在我得到的函数输出中很明显,它在我运行时的确切值是“IIS应用程序池\mawsfnpocholder0\u v1”。请参见底部的图像。你已经分享了一些很好的信息,所以我不重复了。我唯一要补充的是,这个帐户将由托管你的功能应用程序的基础设施控制,并且将更多地设计为在一个共享的基础设施中处理隔离/其他问题,在这个基础设施中,许多功能应用程序可以运行,所以试图控制/更改它可能不是现在的方式。
选项2(从你的问题)-它会比你提到的其他2个选项好,但你不能真正控制这个帐户。 选项3(从您的问题)-将此信息深入到控制台应用程序将是一个维护问题,也不是最安全的选项,除非您开始从vault等读取。无论您做什么,维护问题都将保留,因为它嵌入到编译代码中,而这不应该是。 选项4—这比前面的3个选项要好,因为它将代码与配置和标识信息分离开来,不需要重新编译更新。还要注意的是,无论您存储在应用程序设置配置默认加密(与良好的关键轮换治理),这是推荐的方式。这些值仅在应用程序执行之前解密并加载到进程内存中。在这个链接里看详细的讨论,下面我也给出了一个相关的小摘录- Provide documentation about encrypt/decrypt settings
不过,它确实需要一些额外的努力和一些限制,因此您需要考虑这些限制在您的场景中是否可以接受:
三。代码更改以使用应用程序设置只是重要的改变
工作示例中的完整代码(我用读取SharePoint Web对象的标题和Url替换了Dosomething):
|
![]() |
2
3
sharepointrestapi支持OAuth。这是一个很有前途的计划 article . 不过,这对你来说可能有点过分。或者,您可以尝试使用 basic auth 编辑 当前用户 Azure函数的名称是IIS应用程序池的标识。
|
![]() |
Vincent Doba · azure函数的有效绑定名称是什么? 2 年前 |
![]() |
kolek · EWS要求与会者UPNs(主要名称) 2 年前 |
![]() |
H. Pauwelyn · 使用密钥库存储ABP框架的默认连接字符串 2 年前 |