Sharepoint の使用方法(アプリケーション)
メモ:Adobeを使用するプロジェクトの場合は、 こちらを参照して続行してください。
SharePointをコンテンツソースとして使用する場合、AEMは登録済みのMicrosoft Azure アプリケーションを使用してコンテンツにアクセスします。 このアプリケーションには、ユーザーの代わりにサービスがSharePointにアクセスできるようにする 委任権限 が定義されています。 このユーザーは、SharePointを使用しているプロジェクトに登録されている必要があります。
または、サービスがアプリケーションとして認証を行い、アプリケーション権限 を使用してサイトにアクセスすることもできます。 これには、アプリケーションの権限を付与できるSharePoint サイト管理者による追加の設定が必要です。
推奨される設定は、アプリケーション権限 を使用することです。これにより、特定のSharePoint サイトに対するサービスのアクセスが絞り込まれ、テクニカルユーザーのシークレットを共有する必要がなくなるからです。 また、パスワードのローテーションに関する問題も軽減されます。
以下では、プロジェクトの アプリケーション権限 を設定する方法について説明します。 技術ユーザーを設定する場合は、 こちらをクリックして続行してください。
SharePointを設定するには、次の手順を実行します。
- ドキュメント ベース オーサリングのサイトとして機能する SharePoint サイトを作成または特定します
- SharePoint内に、web サイトのルートとなるフォルダーを作成します。
fstab.yaml
を各フォルダーに設定します- 登録ポータルへのアクセス
- アプリケーションの登録
- SharePoint サイトに
sites.selected
権限を適用します
1. SharePoint サイトを作成または特定する
IT 部門に問い合わせて、ドキュメントベースのオーサリングに使用する SharePoint サイトを特定または作成します。 1 つのサイトで複数の web サイト(プロジェクト)を「ホスト」できます。 このサイトは後で各権限を受け取り、発行サービスがアクセスできるようになります。
2. web サイトのルートフォルダーを作成する
上記で作成または特定したSharePoint サイト内の目的の場所に移動し、web サイトのルートになるルートフォルダーを作成します。 作成者が販促物ドキュメント(ドラフトフォルダーやオーサリング方法ドキュメントなど)を配置できる共有スペースが確保されるように、SharePointのリストルートを直接使用しないことをお勧めします。
ファイル構造の例は、website
フォルダーをルートとして使用した場合は次のようになります。
3. fstab.yaml の設定
次の手順では、fstab.yaml
内のマウントポイントを設定して web サイトのルートを指すようにします。 通常は以下のような形をしている:
https://<tenant>.SharePoint.com/sites/<sp-site>/Shared%20Documents/website
ただし、SharePoint サイトおよびリストの作成方法によって異なる場合があります。 URL を取得する最も簡単な方法は、ブラウザーアドレスから最初の部分をコピーして通過させることです。以下に例を示します。
その後、残りのリンクを手動で追加します(UI を介して共有リンクをコピーすると、不要な情報が追加されるので、URL の正規の表現を使用することをお勧めします)。 URL を作成したら、ブラウザーでもう一度入力してテストできます。 最終的に、web サイトのルートのフォルダービューに移動します。
その後、それに応じて fstab.yaml
を更新します。
例:
mountpoints:
/: https://adobeenterprisesupportaem.SharePoint.com/sites/hlx-test-project/Shared%20Documents/website
設定を完了するには、fstab.yaml
を main ブランチにコミットして戻します。
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 に存在しません。
追加するには、Graph Explorer または 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 エクスプローラーを使用したアプリケーションの役割の追加
または、アプリの役割を追加するには、次の手順を実行します。
- エンタープライズアプリケーション(
principalId
)のサービスプリンシパルを検索します。 これは上で作成したものです。 - Microsoft Graph API (
resourceId
)のサービスプリンシパルを検索します Sites.Selected
Application Role (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
前の手順で取得したMicrosoft Graph API のサービスプリンシパルで resourceId
を置き換えます。
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"
}
}
]
}
注意: 上記のリクエスト の実行中に「アクセスが拒否されました」エラーが発生した場合、上記の手順を実行するには「サイト管理者」権限が必要です。 また、追加の「サイト」範囲については、Graph Explorer の「権限の変更」パネルから追加の「同意」を与える必要が生じる場合があります。