3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【ServiceNow】Microsoft Graph APIを使用してM365から配布グループを取得する

Last updated at Posted at 2023-02-09

Microsoft Graph APIを使用するための認証設定方法とグループ情報を取得する方法をご紹介します。

本記事では、Flow Designerを扱っています。

認証設定

Azure ADの設定

1.アプリの作成

API実行時に使用するアプリをAzure ADに作成します。

1.Azureポータルのホーム画面で「Azure Active Directory」を選択

2.左側のメニューで「アプリの登録」を選択し、右側のペインで「新規登録」を選択
image.png

3.新規登録画面でアプリの名称を決定(Servicenowなど)し、アカウントの種類とリダイレクトURLを設定する
 アカウントの種類 : 選択に関する詳細リンクを参考に利用範囲を決定する
 リダイレクトURL : servicenowのurlを設定(https://xxxxxx.service-now.com)
image.png

2.ID/キーの取得

1.アプリケーションの「概要」ページでクライアントIDとテナントIDが表示されるので控えておく
image.png

2.「証明書とシークレット」を選択、「新しいクライアントシークレット」を選択して、シークレットの値をコピーしておく
 (作成した直後にしか「値」は表示されないので確実にコピーしておく。忘れてしまったら再作成)
image.png

3.アクセス権の設定

1.左側のメニューで「APIのアクセス許可」を選択し、「アクセス許可の追加」を選択する
image.png

2.遷移先のアクセス許可の要求画面では「Microsoft Graph」を選択

3.「アプリケーションの許可」を選択した上で、必要なAPIを選択
 配布グループとメンバの取得の場合は「Directory.Read.All」を選択する

4.構成されたアクセス許可の画面に戻ったら、「規定のディレクトリに管理者の同意を与えます」チェックを選択して、管理者の同意を付与する
image.png

以上でAzureAD側の設定は完了です。
 

ServiceNowの設定

AzureADに接続するための認証設定を行います。

※1~3まででアクセストークンの取得はできますが、今回はFlowDesignerを使用するため設定内容が多くなっています。

1.Application Registriesの登録

1.メニュー:System OAuth > Application Registry

2.入力内容は以下のとおり

項目名
name 任意の名前
Client ID AzureAD.アプリケーション(クライアント)ID
Client Secret AzureAD.クライアントシークレットの値
Default Grant Type Client Credentials
Token URL https://login.microsoftonline.com/[AzureADのテナントID]/oauth2/v2.0/token
Redirect URL https://[インスタンス名].service-now.com/oauth_redirect.do
Send Credentials In Request Body (From URL - Encoded)

2.OAuth Entity Profile Scopesの編集

1.Application Registries画面の関連リストにあるOAuth Entity Profile Scopesの行をダブルクリックして編集する

2.入力内容は以下のとおり

項目名
name 任意の名称
OAuth Scope https://graph.microsoft.com/.default

image.png

3.OAuth Entity Profilesの編集

1.Application Registries画面の関連リストにあるOAuth Entity Profile選択する

2.OAuth Entity Profile Scopesで作成したスコープを追加する
image.png

↓↓↓ここから先はFlow DesignerでAPIを使用するために必要な設定です

4.資格情報の登録

1.メニュー:Connections & Credentials > Credentials

2.「OAuth2.0Credentials」をクリックする

3.「OAuth Entity Profile」でアプリケーションレジストリで生成されたプロファイルを選択する
image.png

5.接続エイリアスの登録をする

1.メニュー:Connection & Credential Aliases

2.入力内容は以下のとおり

項目名
Name 任意の名称
Type Connection and Credential
Connection Type HTTP
Default Retry Policy Default HTTP Retry Policy

保存後に表示される関連リスト「接続」タブで新規ボタンを押下し「6.HTTP(s)接続の登録」へ進む

6.HTTP(s)接続の登録

1.入力内容は以下のとおり

項目名
Name 任意の名称
Credential 4で作成した資格情報を選択する
Connection alias 4で作成した接続エイリアスを選択する
Connection URL https://graph.microsoft.com/v1.0/

7.アクセストークンの取得

1.メニュー:Connections & Credentials > Credentials

2.「4.資格情報の登録」で登録したレコードを開く

3.Related Linksの「Get OAuth Token」をクリックしアクセストークンを取得する
image.png

アクセストークンが取得できたら認証設定の完了です!

アクションの作成(ServiceNow)

配布グループ一覧を取得するアクションの作成

1.APIの準備

Microsoft Graph APIのGET /groupsを使用するAPIを用意します。
APIの詳細は下記をご参照ください。

登録されているグループは4種類あり、特定のプロパティ値で判別できます。
URLにfilterを追加することで取得するグループを絞り込むことができるので下記をご参照ください。

2.FlowDesignerでアクションの作成する

1.Flow Designerを立ち上げ新規⇒アクションを選択する

2.inputは不要。「+」ボタン > 「REST」をクリックする

name Value
接続 接続エイリアスを使用
接続エイリアス 「ServiceNowで設定」で作成したものを選択
リソースパス※ Base URL以降のパスを入力する
HTTPメソッド GET
Headers name:ConsistencyLevel、Value:eventual

※リソースパス
 ベースURLとリソースパスをつなげると、API実行用のURLになることを確認する

例)配布グループのみを取得するリソースパス
groups?$filter = Mailenabled eq true and securityEnabled eq false and NOT(groupTypes/any(s:s eq 'Unified'))&$count=true

image.png

以上でアクションの完成です。
テスト実行をしてみるとExecution Detailsにて実行結果を確認することができます。
image.png

終わりに

M365のグループ情報を同期するナレッジを見つけることができず、
また標準のプロビジョニングでは配布グループを同期できないようでしたのでFlow Designerを使用して自作してみました。

今回ご紹介したAPIの他に、グループに所属するメンバを取得するAPIも用意されているので、
REST Stepやアクション処理をさらに作成しフローにまとめることでグループとその周辺情報を同期する一連の処理を作成することができます。

M365連携をご検討中のかた、ぜひ本実装方法も試してみてください。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?