Sharepoint(애플리케이션) 사용 방법

참고: Adobe의 Sharepoint를 사용하는 프로젝트의 경우 여기에서 계속하십시오.

SharePoint을 컨텐츠 소스로 사용하는 경우 AEM은 등록된 Microsoft Azure 애플리케이션을 사용하여 컨텐츠에 액세스합니다. 이 응용 프로그램에는 서비스를 통해 사용자를 대신하여 SharePoint에 액세스할 수 있는 위임된 권한 ​이 정의되어 있습니다. 이 사용자는 SharePoint을 사용하는 프로젝트에 등록해야 합니다.

또는 서비스에서 응용 프로그램으로 인증하고 응용 프로그램 권한 ​을 사용하여 사이트에 액세스할 수도 있습니다. 애플리케이션에 대한 권한을 부여할 수 있는 SharePoint 사이트 관리자의 추가 설정이 필요합니다.

기본 설정은 응용 프로그램 권한 ​을 사용하는 것입니다. 이렇게 하면 특정 SharePoint 사이트에 대한 서비스 액세스 권한이 줄어들고 기술 사용자의 비밀을 공유할 필요가 없기 때문입니다. 또한 암호 회전 관련 문제를 줄일 수 있습니다.

다음은 프로젝트에 대해 응용 프로그램 권한 ​을 설정하는 방법에 대해 설명합니다. 기술 사용자를 설정하려면 여기에서 계속하십시오.

SharePoint을 설정하려면 다음 단계를 수행하십시오.

  1. 문서 기반 작성의 사이트 역할을 할 Sharepoint 사이트를 만들거나 식별합니다
  2. SharePoint 내에서 웹 사이트 루트가 될 폴더를 만듭니다.
  3. 해당 폴더로 fstab.yaml 구성
  4. 등록 포털 액세스
  5. 애플리케이션 등록
  6. 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. 등록 포털에서 로그인

열(포함된 전체 화면 이미지)

<h3>Azure 포털에서 엔터프라이즈 애플리케이션 보기</h3>

지금까지 프랭클린 엔터프라이즈 애플리케이션이 Azure(Microsoft Entra Id)

<h3>프랭클린 등록 포털 액세스</h3>

https://admin.hlx.page/register(으)로 이동하여 프로젝트의 github URL을 입력하십시오.

<h3>관리자가 아닌 사용자로 로그인</h3>

관리자 권한이 없는 사용자에게 다음 역할이 표시됩니다. 승인이 필요하다는 오류, 즉 애플리케이션에 관리자 동의가 필요하다는 오류.

문제: 사용자가 로그인하지 않으면 Enterprise 응용 프로그램이 등록되지 않습니다.

<h3>관리자로 로그인</h3>

한 가지 해결 방법은 does 에 관리자 권한이 있는 사용자로 로그인하는 것입니다.

(참고로, 이 시점에서는 엔터프라이즈 애플리케이션이에 여전히 등록되어 있지 않습니다. azure)

<h3>UI에 표시되는 프랭클린 등록 서비스</h3>

관리자가 로그인하는 경우( 확인란을 선택하고 동의를 부여하지 않음) 모든 사용자), 엔터프라이즈 응용 프로그램이 표시됩니다.

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
열(포함된 전체 화면 이미지)

그 후에도 관리자가 아닌 사용자가 로그인하려면 관리자 동의를 받아야 합니다.

다음을 참조하십시오.

<h3>권한 검토</h3>

Franklin Registration Service (e34c45c4-0919-43e1-9436-448ad8e81552) 응용 프로그램만 있으면 됩니다. 등록 중에 사용자가 sharepoint에 대한 읽기 액세스 권한이 있는지 확인합니다. 여기에는 다음 위임된 권한 이 있습니다.

  • Openid
    사용자가 회사 또는 학교 계정으로 앱에 로그인하고 앱에서 기본 사용자 프로필을 볼 수 있습니다. 정보.
  • Profile
    앱에서 사용자의 기본 프로필(예: 이름, 사진, 사용자 이름, 이메일 주소)을 볼 수 있도록 허용
  • Files.ReadWrite.All
    앱에서 로그인한 사용자가 액세스할 수 있는 모든 파일을 읽고, 만들고, 업데이트하고, 삭제할 수 있도록 허용합니다.

<h3>사용자가 등록 포털에 로그인함</h3>

이 초기 단계를 완료하면 사용자가 등록 포털에 로그인됩니다

애플리케이션 권한으로 Franklin 서비스 추가

열(포함된 전체 화면 이미지)

<h3>엔터프라이즈 응용 프로그램 추가</h3>

등록 포털에 로그인했을 때,에서 사용하는 콘텐츠 소스 프로젝트는 Franklin Service에 대한 oauth 부여에 연결되어 있어야 합니다. 응용 프로그램. 시스템이 의 문서에 액세스할 수 있도록 이 기능이 필요합니다. sharepoint를 만들어 내부 형식(markdown)으로 변환한 다음 Adobe의 빠른 전송을 위한 스토리지(S3/R2).

응용 프로그램 sites.selected 사용 권한은 범위를 제한하므로 더 안전합니다. 단일 sharepoint 사이트로 이동합니다. 연결하려면 Connect Application 단추를 클릭하십시오.

이전에 애플리케이션이나 사용자를 등록하지 않은 경우 다음 오류:

code language-none
Unable to validate access: Either scp or roles claim need to be present in the token.

위와 마찬가지로 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

다음을 참조하십시오.

열(포함된 전체 화면 이미지)

<h3>응용 프로그램 역할 추가</h3>

이제 엔터프라이즈 응용 프로그램 Franklin Service이(가) azure에 표시됩니다. Sites.Selected 응용 프로그램 권한이 없습니다.

문제: 관리자 동의 UI를 사용하면 원치 않는 모든 응용 프로그램 및 위임된 권한이 부여됩니다.

쉬운 방법은 모든 권한에 동의한 후 위임된 권한을 다시 제거하는 것입니다.

Powershell 또는 그래프 탐색기를 사용하여 응용 프로그램 역할 추가

또는 다음 단계를 통해 앱 역할을 추가할 수 있습니다.

  1. 엔터프라이즈 응용 프로그램(principalId)의 서비스 사용자를 찾습니다. 위에서 만든 것입니다.
  2. Microsoft Graph API(resourceId)의 서비스 사용자 찾기
  3. Sites.Selected 응용 프로그램 역할(appRoleId)의 ID를 찾습니다.
  4. 관리 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

그래프 탐색기 ​를 사용하면 다음 단계를 더 수행할 수 있습니다.

  1. 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이(가) 됩니다.

  1. 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입니다. (응용 프로그램 역할을 정의하는 리소스)

  1. 애플리케이션 역할의 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

  1. 관리되는 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"
}
열(포함된 전체 화면 이미지)

<h3>권한 유효성 검사</h3>

UI에 부여된 애플리케이션 권한이 표시됩니다.

등록 포털에서 을(를) 다음으로 변경했어야 합니다.

code language-none

The resource specified in the fstab.yaml does either not exist, or you do not have permission to access it. Please make sure that the url is correct, the enterprise application: "Franklin Service (83ab2922-5f11-4e4d-96f3-d1e0ff152856)" is consented for the required scopes, and that the logged in user has permissions to access it.

(참고: 작성 시 이 메시지는 매우 정확하지 않으므로 다음과 같이 읽어야 합니다.

fstab.yaml에 지정된 리소스가 없거나 액세스 권한이 없습니다. URL이 올바른지 확인하십시오. 엔터프라이즈 애플리케이션: "Franklin Service (83ab2922-5f11-4e4d-96f3-d1e0ff152856)"은(는) 다음을 통해 구성된 sharepoint 사이트에 액세스할 수 있는 권한이 부여됩니다. "Sites.Selected" 권한.


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"
            }
        }
    ]
}

참고: 위의 요청 을(를) 실행하는 동안 "액세스 거부" 오류가 발생하는 경우 위의 단계를 실행하려면 "사이트 관리자" 권한이 있어야 합니다. 또한 추가 "사이트" 범위에 대해 그래프 탐색기의 "권한 수정" 패널에서 "동의"를 추가로 제공해야 할 수 있습니다.

열(포함된 전체 화면 이미지)
그런 다음 등록 포털에 다음이 표시됩니다 canRead: ok
recommendation-more-help
10a6ce9d-c5c5-48d9-8ce1-9797d2f0f3ec