あんまり無さそうなシチュエーションですが、Forms + Logic Appsで簡単に出来たのでご紹介します。
やりたかったこと
以下のような使い方を実現できました。
- 組織外のユーザーは申込フォームからアクセスを要求
- 管理者は要求元を確認してアクセス要求を承認
- 後は自動!
> 承認されたらユーザーに招待メールを送信
> ユーザーは招待メールに記載のリンクからSharePointサイトにアクセスできる
> 管理者がサイトに権限を付ける作業は不要
仕組みの説明
概要図
ユーザー用の申し込みフォームはMicrosoft Formsで作成しました。
作成した回答フォームのURLはホームページなどで公開しておきます。
(このブログの右上にある「鍋綿デモサイト」リンクがそれです。)
誰かがFormsで回答するとLogic Appsが起動します。
Logic Appsは管理者に承認を求めます。
承認後、Graph APIを使って外部ユーザーを招待し、
そのユーザーを特定のAzure AD グループのメンバーとして追加します。
このAzure AD グループはSharePointサイトに権限を与えられているので、
ユーザー一人一人にアクセス権を付与する作業は必要ありません。
Microsoft Formsの設定
最低限、招待するアカウントを入力するところがあればOKです。
下記画像の例ではちょっとした説明なんかも入れました。
Azure AD アプリケーション登録
Logic Appsから外部ユーザー招待を行う際、Graph APIを利用します。
Graph APIを実行するためには認証が必要ですので、
先にアプリケーション登録を済ませておきます。
まずはAzure ADの管理画面で「アプリの登録」をクリックします。
で、新規登録ボタンをポチ。
名前を分かりやすく付け、後は既定値で。
「証明書とシークレット」をクリックし、「新しいクライアントシークレット」を登録します。有効期限はお好みでどうぞ。期限が切れるとシークレットを再発行する必要があります。
次にAPIのアクセス許可を与えます。アクセス許可の追加ボタンをクリックしてMicrosoft Graph APIを選択し、「アプリケーションの許可」の中からUser.Invite.Allを探して追加。その後管理者の同意を与えます。
Logic Appsの設定
起動は Fromsの回答で。回答内容は「応答の詳細を取得する」アクションで取ります。
下図では私の都合で外部ユーザーの招待前に一度承認を挟むようにしています。
このあたりはご都合に合わせてください。
承認が終わった後のアクションはこんな感じです。「外部ユーザーを招待する」アクションの中身は後述。
さて、このLogic Appsのキモである招待部分です。Graph APIを利用します。
使うアクションは「HTTP」です。設定値は以下。
方法:POST
URI:https://graph.microsoft.com/v1.0/invitations
ヘッダー:
キー:Content-Type
値:application/json
本文:
{
"inviteRedirectUrl": "https://nabewata365.sharepoint.com/sites/catalog",
"invitedUserEmailAddress": "@{body('応答の詳細を取得する')?['組織アカウントまたはMicrosoftアカウント']}",
"invitedUserMessageInfo": {
"customizedMessageBody": "招待メールの文言"
},
"sendInvitationMessage": true
}
認証:Active Directory OAuth
テナント:招待先テナントのドメイン名
対象ユーザー:https://graph.microsoft.com
クライアントID:登録したAzure AD アプリケーションのクライアントID
シークレット:作成したシークレット
デモ
こちらのリンクで実際の動作をお試し頂けます。(リンク先は当ブログ右上の「鍋綿デモサイト」と同じです。)実際に招待が行き、私が構築したデモ用SharePointサイトにアクセスして頂けるようになります。