如何使用Sharepoint(应用程序)
注意:对于使用Adobe的Sharepoint的项目,请此处继续。
如果您使用SharePoint作为内容源,AEM将使用注册的Microsoft Azure应用程序来访问您的内容。 此应用程序定义了允许服务代表用户访问SharePoint的 委派权限。 需要在使用SharePoint的项目中注册此用户。
或者,这些服务还可以作为应用程序进行身份验证,并使用 应用程序权限 来访问这些站点。 这需要SharePoint站点管理员进行额外设置,以便授予应用程序权限。
首选设置是使用 应用程序权限,因为这将缩小服务对特定SharePoint网站的访问范围,并且无需共享技术用户的任何密钥。 此外,它减少了密码轮换的问题。
以下说明如何为项目设置 应用程序权限。 如果要设置技术用户,请继续此处。
设置SharePoint的过程涉及以下步骤:
- 创建或确定将用作基于文档的创作站点的Sharepoint站点
- 在SharePoint中创建一个将作为网站根目录的文件夹。
- 使用相应的文件夹配置
fstab.yaml - 访问注册门户
- 注册应用程序
- 对SharePoint网站应用
sites.selected权限
1.创建或识别Sharepoint站点
与您的IT部门联系,确定或创建用于基于文档的创作的Sharepoint网站。 一个站点可以“托管”多个网站(项目)。 此网站稍后将接收相应的权限,以便发布服务可以访问该网站。
2.创建网站根文件夹
导航到上面创建或标识的SharePoint站点中所需的位置,并创建一个将用作网站根目录的根文件夹。 最好不要直接使用SharePoint列表根目录,以便您有一个共享空间可供作者放置附属文档,例如草稿文件夹或如何编写文档。
使用website文件夹作为根的示例文件结构可能如下所示:
3.配置fstab.yaml
下一步是将fstab.yaml中的挂载点配置为指向网站根目录。 它通常具有以下形式
https://<tenant>.SharePoint.com/sites/<sp-site>/Shared%20Documents/website
但这可能会因您创建SharePoint网站和列表的方式而异。 要获取url,最简单的方法是从浏览器地址复制并粘贴第一部分,例如:
然后手动添加其余部分(请注意,通过UI复制共享链接会添加不必要的信息,因此最好使用url的规范表示形式)。 撰写url后,可通过在浏览器中再次输入来进行测试。 您最终应会进入网站根目录的文件夹视图。
之后,相应地更新fstab.yaml。
例如:
mountpoints:
/: https://adobeenterprisesupportaem.SharePoint.com/sites/hlx-test-project/Shared%20Documents/website
要完成配置,请将fstab.yaml提交回主分支。
4.访问注册门户
概述
为了使AEM服务能够访问创作的内容,它需要一些信息和设置。 AEM服务(云函数)代表应用程序(或配置的用户)访问MS Graph API。 为此,它需要首先在应用程序的上下文中进行身份验证。 这一点很重要,因为授予应用程序的范围定义了服务对MS Graph API的权限。 例如,应允许读取和写入文档,但不允许更改访问控制。
应用程序在租户的相应Active Directory中表示为“企业应用程序”。 授予该企业应用程序的权限最终定义服务可以在该租户的资源中访问的内容。 某些权限需要由Active Directory管理员批准,用户才能使用该应用程序。 这种所谓的“管理员同意”是一种机制,用于验证和控制应用程序可以拥有的权限。 这是为了防止可疑应用程序诱使用户信任非官方应用程序。 通过额外的管理员同意步骤,IT安全人员可以控制员工可以使用哪些应用程序。
1.登录注册门户
使用MSGraph或Powershell创建应用程序
或者,您可以通过MSGraph或Powershell创建Enterprise应用程序。
为了使其在Azure UI中可见,您还需要添加WindowsAzureActiveDirectoryIntegratedApp标记。 这可以在创建应用程序时直接完成。
使用图形资源管理器:
POST https://graph.microsoft.com/v1.0/servicePrincipals
Content-type: application/json
{
"appId": "e34c45c4-0919-43e1-9436-448ad8e81552",
"tags": [
"WindowsAzureActiveDirectoryIntegratedApp"
]
}
使用powershell:
PS> connect-MgGraph -Scopes "Application.ReadWrite.All"
PS> New-MgServicePrincipal -AppId e34c45c4-0919-43e1-9436-448ad8e81552 -Tags WindowsAzureActiveDirectoryIntegratedApp
添加具有应用程序权限的Franklin服务
与上述相同,Franklin Service (83ab2922-5f11-4e4d-96f3-d1e0ff152856)的企业应用程序在Azure中尚不存在,
要添加它,请使用图形资源管理器或powershell添加它:
使用图形资源管理器:
POST https://graph.microsoft.com/v1.0/servicePrincipals
Content-type: application/json
{
"appId": "83ab2922-5f11-4e4d-96f3-d1e0ff152856",
"tags": [
"WindowsAzureActiveDirectoryIntegratedApp"
]
}
使用powershell:
PS> connect-MgGraph -Scopes "Application.ReadWrite.All"
PS> New-MgServicePrincipal -AppId 83ab2922-5f11-4e4d-96f3-d1e0ff152856 -Tags WindowsAzureActiveDirectoryIntegratedApp
另请参阅:
使用Powershell或Graph Explorer添加应用程序角色
或者,也可以执行以下步骤来添加应用程序角色:
- 查找企业应用程序(
principalId)的服务主体。 这是您在上面创建的一个。 - 查找Microsoft Graph API的服务主体(
resourceId) - 查找
Sites.Selected应用程序角色(appRoleId)的ID - 将应用程序角色分配给受管标识(企业应用程序)
使用 powershell 可通过以下方式完成此操作:
$ObjectId = "abcdef-1234-49b6-b660-cc85b34fe516" <<------ replace with your enterprise app id
$AAD_SP = Get-AzureADServicePrincipal -SearchString "Microsoft Graph";
$AAD_SP
$MSI = Get-AzureADServicePrincipal -ObjectId $ObjectId
if($MSI.Count -gt 1)
{
Write-Output "More than 1 principal found, please find your principal and copy the right object ID. Now use the syntax $MSI = Get-AzureADServicePrincipal -ObjectId <your_object_id>"
Exit
}
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Sites.Selected"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId -PrincipalId $MSI.ObjectId -ResourceId $AAD_SP.ObjectId[0] -Id $AAD_AppRole.Id
使用 图形资源管理器 涉及更多步骤:
- 查找
Franklin Service的企业应用程序主体:
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '83ab2922-5f11-4e4d-96f3-d1e0ff152856'
...
"value": [
{
"id": "6761ada0-733b-4a02-98b2-3db970834fe0",
...
这将是我们的principalId
- 查找Microsoft Graph API的服务主体
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=appId eq '00000003-0000-0000-c000-000000000000'
...
"value": [
{
"id": "5159db96-7193-414e-9730-b1d1e4448443",
...
这是resourceId。 (定义应用程序角色的资源)
- 查找应用程序角色的id。
GET https://graph.microsoft.com/v1.0/servicePrincipals/${resourceId}/appRoles
将resourceId替换为上一步中获取的Microsoft Graph API的服务主体。
GET https://graph.microsoft.com/v1.0/servicePrincipals/5159db96-7193-414e-9730-b1d1e4448443/appRoles
...
{
"allowedMemberTypes": [
"Application"
],
"description": "Allow the application to access a subset of site collections without a signed in user. The specific site collections and the permissions granted will be configured in SharePoint Online.",
"displayName": "Access selected site collections",
"id": "883ea226-0bf2-4a8f-9f9d-92c9162a727d",
"isEnabled": true,
"origin": "Application",
"value": "Sites.Selected"
},
...
此ID是appRoleId
- 将应用程序角色分配给托管身份。 请求的格式为:
POST https://graph.microsoft.com/v1.0/servicePrincipals/${principalId}/appRoleAssignedTo
Content-Type: application/json
{
"principalId": "${principalId}",
"resourceId": "${resourceId}",
"appRoleId": "${appRoleId}"
}
https://graph.microsoft.com/v1.0/servicePrincipals/6761ada0-733b-4a02-98b2-3db970834fe0/appRoleAssignedTo
Content-type: application/json
{
"principalId": "6761ada0-733b-4a02-98b2-3db970834fe0",
"resourceId": "5159db96-7193-414e-9730-b1d1e4448443",
"appRoleId": "883ea226-0bf2-4a8f-9f9d-92c9162a727d"
}
向Sharepoint站点添加权限
若要向SharePoint站点添加权限,我们需要找到其SiteId。
可以使用图形资源管理器再次完成此操作:
GET https://graph.microsoft.com/v1.0/sites/{host-name}:/{server-relative-path}
示例:
GET https://graph.microsoft.com/v1.0/sites/adobeenterprisesupportaem.sharepoint.com:/sites/hlx-test-project
{
...
"id": "adobeenterprisesupportaem.sharepoint.com,03cc3587-0e4d-405e-b06c-ffb0a622b7ac,5fbc1df5-640c-4780-8b59-809e3193c043",
...
}
使用Id,我们可以设置权限:
POST https://graph.microsoft.com/v1.0/sites/adobeenterprisesupportaem.sharepoint.com,03cc3587-0e4d-405e-b06c-ffb0a622b7ac,5fbc1df5-640c-4780-8b59-809e3193c043/permissions
Content-type: application/json
{
"roles": [
"write"
],
"grantedToIdentities": [
{
"application": {
"id": "83ab2922-5f11-4e4d-96f3-d1e0ff152856",
"displayName": "Franklin Service"
}
}
]
}
注意: 如果您在执行上述请求 时遇到“访问被拒绝”错误, 您需要具有“站点管理员”权限才能运行上述步骤。 此外,您可能需要从Graph Explorer的“修改权限”面板为其他“站点”范围授予其他“同意”。