Sharepoint(애플리케이션) 사용 방법
참고: Adobe의 Sharepoint를 사용하는 프로젝트의 경우 여기에서 계속하십시오.
SharePoint을 컨텐츠 소스로 사용하는 경우 AEM은 등록된 Microsoft Azure 애플리케이션을 사용하여 컨텐츠에 액세스합니다. 이 응용 프로그램에는 서비스를 통해 사용자를 대신하여 SharePoint에 액세스할 수 있는 위임된 권한 이 정의되어 있습니다. 이 사용자는 SharePoint을 사용하는 프로젝트에 등록해야 합니다.
또는 서비스에서 응용 프로그램으로 인증하고 응용 프로그램 권한 을 사용하여 사이트에 액세스할 수도 있습니다. 애플리케이션에 대한 권한을 부여할 수 있는 SharePoint 사이트 관리자의 추가 설정이 필요합니다.
기본 설정은 응용 프로그램 권한 을 사용하는 것입니다. 이렇게 하면 특정 SharePoint 사이트에 대한 서비스 액세스 권한이 줄어들고 기술 사용자의 비밀을 공유할 필요가 없기 때문입니다. 또한 암호 회전 관련 문제를 줄일 수 있습니다.
다음은 프로젝트에 대해 응용 프로그램 권한 을 설정하는 방법에 대해 설명합니다. 기술 사용자를 설정하려면 여기에서 계속하십시오.
SharePoint을 설정하려면 다음 단계를 수행하십시오.
- 문서 기반 작성의 사이트 역할을 할 Sharepoint 사이트를 만들거나 식별합니다
- SharePoint 내에서 웹 사이트 루트가 될 폴더를 만듭니다.
- 해당 폴더로
fstab.yaml
구성 - 등록 포털 액세스
- 애플리케이션 등록
- SharePoint 사이트에
sites.selected
권한 적용
1. Sharepoint 사이트 만들기 또는 식별
문서 기반 작성에 사용할 Sharepoint 사이트를 식별하거나 만들려면 IT 부서에 문의하십시오. 한 사이트에서 여러 웹 사이트(프로젝트)를 "호스팅"할 수 있습니다. 이 사이트는 나중에 게시 서비스가 액세스할 수 있도록 해당 권한을 받습니다.
2. 웹 사이트 루트 폴더 만들기
위에서 만들었거나 식별한 SharePoint 사이트에서 원하는 위치로 이동하여 웹 사이트 루트가 될 루트 폴더를 만듭니다. SharePoint 목록 루트를 직접 사용하지 않는 것이 가장 좋습니다. 그러면 작성자가 초안 폴더 또는 작성 방법 문서와 같은 보충 문서를 넣을 수 있는 공유 공간이 생깁니다.
website
폴더를 루트로 사용하는 예제 파일 구조는 다음과 같습니다.
3. fstab.yaml 구성
다음 단계는 웹 사이트 루트를 가리키도록 fstab.yaml
에서 탑재 지점을 구성하는 것입니다. 보통 다음과 같은 형태를 가진다.
https://<tenant>.SharePoint.com/sites/<sp-site>/Shared%20Documents/website
하지만 이는 SharePoint 사이트 및 목록을 만드는 방법에 따라 달라질 수 있습니다. URL을 얻기 위해 가장 간단한 방법은 브라우저 주소에서 첫 번째 부분을 복사하여 지나서 복사하는 것입니다. 예:
그런 다음 나머지 를 수동으로 추가합니다(UI를 통해 sharelink를 복사하면 불필요한 정보가 추가되므로 URL의 표준 표현을 사용하는 것이 좋습니다). URL을 작성한 후 브라우저에 다시 입력하여 테스트할 수 있습니다. 웹 사이트 루트의 폴더 보기에 있어야 합니다.
그런 다음 fstab.yaml
을(를) 적절하게 업데이트합니다.
예:
mountpoints:
/: https://adobeenterprisesupportaem.SharePoint.com/sites/hlx-test-project/Shared%20Documents/website
구성을 완료하려면 fstab.yaml
을(를) 다시 주 분기로 커밋하십시오.
4. 등록 포털에 액세스
개요
AEM 서비스가 작성된 콘텐츠에 액세스하려면 몇 가지 정보와 설정이 필요합니다. AEM 서비스(클라우드 기능)가 응용 프로그램(또는 구성된 사용자)을 대신하여 MS Graph API에 액세스합니다. 이렇게 하려면 먼저 Application의 컨텍스트에서 인증해야 합니다. 이는 애플리케이션에 부여된 범위가 서비스가 MS Graph API에 대해 갖는 권한을 정의하기 때문에 중요합니다. 예를 들어 문서를 읽고 쓸 수 있지만 액세스 제어를 변경할 수는 없습니다.
애플리케이션은 테넌트의 각 Active Directory에서 "엔터프라이즈 애플리케이션"으로 표시됩니다. 해당 엔터프라이즈 애플리케이션에 부여된 권한은 궁극적으로 서비스가 해당 테넌트의 리소스에서 액세스할 수 있는 권한을 정의합니다. 사용자가 응용 프로그램을 사용하려면 Active Directory 관리자가 특정 권한을 승인해야 합니다. 이러한 "관리자 동의"는 앱이 가질 수 있는 권한을 확인하고 제어하는 메커니즘입니다. 의심스러운 앱이 사용자를 속여 정식적이지 않은 앱을 신뢰하게 만드는 것을 방지하기 위해서다. 추가 관리자 동의 단계를 사용하면 IT 보안에서 직원이 사용할 수 있는 앱을 제어할 수 있습니다.
1. 등록 포털에서 로그인
MSGraph 또는 Powershell을 사용하여 응용 프로그램 만들기
또는 MSGraph 또는 Powershell을 통해 엔터프라이즈 응용 프로그램을 만들 수 있습니다.
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 또는 그래프 탐색기를 사용하여 응용 프로그램 역할 추가
또는 다음 단계를 통해 앱 역할을 추가할 수 있습니다.
- 엔터프라이즈 응용 프로그램(
principalId
)의 서비스 사용자를 찾습니다. 위에서 만든 것입니다. - Microsoft Graph API(
resourceId
)의 서비스 사용자 찾기 Sites.Selected
응용 프로그램 역할(appRoleId
)의 ID를 찾습니다.- 관리 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
- 관리되는 ID에 응용 프로그램 역할을 할당합니다. 요청의 형식은 다음과 같습니다.
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"
}
}
]
}
참고: 위의 요청 을(를) 실행하는 동안 "액세스 거부" 오류가 발생하는 경우 위의 단계를 실행하려면 "사이트 관리자" 권한이 있어야 합니다. 또한 추가 "사이트" 범위에 대해 그래프 탐색기의 "권한 수정" 패널에서 "동의"를 추가로 제공해야 할 수 있습니다.