如何使用Sharepoint(应用程序)
注意:对于使用Adobe的Sharepoint的项目,请继续 此处.
如果您使用SharePoint作为内容源,AEM将使用注册的Microsoft Azure应用程序来访问您的内容。 此应用程序具有 委派权限 定义了允许服务代表用户访问SharePoint的定义。 需要在使用SharePoint的项目中注册此用户。
或者,该服务还可以作为应用程序进行验证并使用 应用程序权限 以访问站点。 这需要SharePoint站点管理员进行额外设置,以便授予应用程序权限。
首选设置是使用 应用程序权限,因为这样可以缩小服务对特定SharePoint网站的访问范围,并且无需共享技术用户的任何密钥。 此外,它减少了密码轮换的问题。
以下介绍了如何设置 应用程序权限 用于您的项目。 如果要设置技术用户,请继续 此处.
设置SharePoint的过程涉及以下步骤:
- 创建或确定将用作基于文档的创作站点的Sharepoint站点
- 在SharePoint中创建一个将作为网站根目录的文件夹。
- 配置
fstab.yaml
以及相应的文件夹 - 访问注册门户
- 注册应用程序
- 应用
sites.selected
SharePoint网站的权限
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
) - 查找ID
Sites.Selected
应用程序角色(appRoleId
) - 将应用程序角色分配给受管标识(企业应用程序)
使用 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
使用 图形资源管理器 它涉及更多步骤:
- 查找企业应用程序的主体:
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/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"
}
}
]
}