Office 365 MySites サイト コレクションへの代理管理アクセスを要求すると、 Office 365 APIで 500 エラーが返されるという問題に直面しているため、アドバイスをいただければ幸いです。
ユース ケース シナリオは次のとおりです。 独立した組織 'A' と 'B' があり、どちらもそれぞれの Azure Active Directory アカウントと O365/Azure サブスクリプションを所有しています。組織 B は、Office365 MySites サイト コレクションへの委任された管理アクセスを必要とする、組織 A を提供するアプリケーションを利用したいと考えています。
組織 B は、OAuth2 認証プロセスを使用してアプリを Active Directory アカウントに正常に追加し、会社の Active Directory に対してアプリケーションが必要とするアクセス許可を付与します。
最後の部分は、組織 B の管理者アカウントのアクセスを、組織 B の Office 365 アカウントの Mysites サイト コレクションに委任することです。管理パネルを介して手動プロセスを使用すると、すべてうまく機能しますが、API を介してプログラムで「500」エラーが発生します。
次の呼び出しを使用して、プログラムでユーザーをサイト コレクション管理者として追加しています: (注: 以下の [ダミー ID] を使用しました)
エンドポイント URL:
https://<..org_a..>.my.sharepoint.com/personal/[[user_OrganisationA_com]]/_api/web/siteUsers/getByEmail(@u)?@u='[[info@_OrganisationA.com' ]] メソッド: POST
Body: {'__metadata':{ 'type': 'SP.User' }, 'IsSiteAdmin':'true'}
HTTP Headers:
• "Content-Type": "application/json; odata=verbose"
• "X-HTTP-Method": "MERGE"
• "Authorization": "Bearer <OAuth2 token>"
• "Accept": "application/json"
上記のリクエストでは、info@_organisationB.com をサイト コレクション管理者として One Drive for Business サービスのユーザー C の個人用サイトに追加しようとしています (ユーザー C はメール UserC@_organisationB.com で識別されます)。ユーザー info@_organisationB.com は組織 B の Office365 ドメインでグローバル管理者権限を持ち、UserC@_organisationB.com) は管理者権限のない基本ユーザーです。
この呼び出しは、500 HTTP ステータス コード (内部サーバー エラー) と次のメッセージを返します。
object(stdClass)[18]
public 'odata.error' =>
object(stdClass)[19]
public 'code' => string '-2146232832, Microsoft.SharePoint.SPException' (length=45)
public 'message' =>
object(stdClass)[20]
public 'lang' => string 'en-US' (length=5)
public 'value' => string 'You need to be a site collection administrator to set this property.' (length=68)
私たちの知る限りでは、API 呼び出しは 500 HTTP ステータス コード (内部サーバー エラー) を返すべきではありません。 SharePoint Online 管理ポータルを使用すると、意図したことの達成を妨げているバグに遭遇したと思われます。
アドバイスをいただければ幸いです。