ASP.NET MVC Web アプリケーションにおける Microsoft Graph の概要

完了

このユニットでは、Microsoft Graph が大規模な Microsoft 365 プラットフォームに適合する方法について説明します。 また、ASP.NET MVC アプリケーションの Microsoft Graph を使用して、現在サインインしているユーザーの予定表からイベントを表示する方法について説明します。

Microsoft 365 プラットフォーム

Microsoft 365 プラットフォーム

Microsoft 365 の開発者構想はユーザーのエクスペリエンスとそのデータに焦点を当て、開発者として世界中の 12 億を超える Office ユーザー向けにアプリケーションのユーザー エクスペリエンスを提供できます。 これは、お客様のアプリケーションを知ってもらい、ユーザーのデータがアプリケーションのインテリジェンスにつながる大きなチャンスになります。

現在、毎月 8 億 5,000 万件を超えるイベントが作成され、ユーザーに付加価値を与えるサービスに合計 400 ペタバイト超のデータが格納されています。

Microsoft Graph は、Microsoft クラウドで確認できる自分のデータに対する入口です。

Microsoft Graph - Microsoft のクラウドにあるデータへの入口

Microsoft Graph - Microsoft のクラウドにあるデータへの入口

Microsoft のクラウドには、複数のサービスとデータの種類が含まれており、Office 365 から活用することができます。これはすべて、Microsoft 365 プラットフォームの一部とみなされます。

開発者は、サインインしているユーザーのメール、予定表、連絡先、タスクをカスタム アプリに統合できます。 SharePoint サイトのコンテンツを操作し、OneDrive のファイル、Microsoft Teams 内のチャネルとコンテンツ、Microsoft Entra ID のユーザーを一覧表示できます。

開発者がカスタム アプリを活用できる、各種のサービスが多数存在します。 これらのサービスの多くは、開発者が対話的に操作できる独自の API を備えています。

ただし、このような個別のサービスを個別のエンドポイントと共に使用するのが難しい場合があります。 各 API は固有のアクセス許可モデルを持っている場合があり、これはアクセス制御の構成が個別であることを意味します。 サービスごとに異なるエンドポイントは、カスタム アプリケーションが各サービスの Microsoft Entra ID からアクセス トークンを取得する必要があるということです。

Microsoft Graph による Microsoft 365 データへのアクセスの簡略化

Microsoft Graph による Microsoft 365 データへのアクセスの簡略化

Microsoft Graph の利点の 1 つは、他のすべてのサービスに対してプロキシ エンドポイントとして機能するということです。 Microsoft Graph には、Office 365、Windows 10 Enterprise Mobility + Security (EMS) などの機能が含まれています。これらの異なるサービスはすべて 1 つの統合エンドポイント graph.microsoft.com に集約されます。

Microsoft Graph を使用する利点は、開発者が単一のエンドポイント、リソースを持つことができることです。つまり、異なるサービスを認証するのに必要なのはただ 1 つのアクセス トークンです。 それでも、すべてのセキュリティを個別の方法で保護できるように、各サービスは個別のアクセス許可を備えています。 単一のエンドポイントにより、開発者はより簡単にアプリケーションを構築できます。

また、Microsoft Graph では、エンティティおよびエンティティ間のリレーションシップを簡単に移動できます。 ファイル用の OneDrive、連絡先と予定表用の Outlook など、さまざまな Microsoft 365 サービスが多数用意されていますが、これらの異なるエンティティは互いに関連付けられています。 こうしたリレーションシップは Microsoft Graph に存在するので、基になっている別々のエンドポイントをまたがる場合でも、エンティティ間を簡単に移動できます。

単一の認証フロー

Microsoft 365 の単一の認証フロー

Microsoft 365 にはこのようにさまざまなサービスがあり、サービスごとに別のアクセス トークンを取得する必要があったため、Microsoft Graph によりトークンの取得が簡単になります。

Microsoft Graph では、異なるサービスがプロキシされるので、サービスごとに個別のトークンを入手する必要がありません。 Microsoft Graph は、1 つのエンドポイント経由で、各サービスのエンドポイントへの呼び出しをプロキシします。

このため、従来の探索サービスは必要ありません。 Microsoft Graph が登場するまでは、開発者は探索サービスを使用し、OneDrive や Outlook などの各サービスのユーザー固有エンドポイントについて、Microsoft 365 のさまざまなエンドポイントで確認する必要がありました。

注意が必要な点は、これはプロキシであるため、Microsoft Graph に表示される前に、新しい機能と特徴がダウンストリーム エンドポイントに表示される場合があることです。 これは、Microsoft Graph はプロキシであり、プロキシを行ういずれかのサービスでダウンストリームに存在しない機能を公開することはできないためです。

認証および同意フレームワーク

Office 365 には、Microsoft Graph でも使用される単一の認証フローがあります。 ユーザーは OpenID Connect というテクノロジを使用してサインインします。これはオープンスタンダードです。 OpenID Connect は OAuth 2.0 認証プロトコルのラッパーであり、ログインしたユーザーに関する詳細が含まれます。

Microsoft Entra ID は、すべての認証に使用されます。 Microsoft Graph は、Microsoft Entra ID の認証モデルに基づいて構築された Azure および Office 365 と同じ認証モデルを使用します。 どちらのサービスも Microsoft Entra ID を信頼しており、この共有信頼を持つことで、認証を利用して、同じ認証フローでこれらの異なるサービスの両方を利用できます。

この認証フローは、多要素認証 (MFA ともいう) およびフェデレーション ユーザー サインオンもサポートしています。 クライアントに 100% 存在するモバイル デバイス、Web サイト、シングル ページ アプリケーション、またはユーザーの関与のないヘッドレス アプリケーション (デーモン アプリまたはサービスともいう) など、あらゆる種類のデバイス アプリケーションをサポートしています。

Microsoft Entra ID の概念の 1 つは、 一般的な同意フレームワークです。 同意についてより良く理解するために、アクセス許可を三角形の概念の中で考えてください。

三角形の 1 点はアクセス許可、別の 1 点はユーザーまたはアプリケーション、最後の 1 点はやりとりするリソースです。 ユーザーはやりとりするリソースへのアクセス許可を持っている必要があります。

ユーザーが Microsoft Entra ID に初めてサインインしたときに、Microsoft Graph で認証するためのアクセス トークンを取得するために、Microsoft Entra はまず、このユーザーがこのアプリケーションに Microsoft Graph へのアクセスを許可しているかどうかを確認します。 特に、アプリにこれらのアクセス許可に対するアクセス権が付与されているかどうかを確認します。

これは次のように機能します。ユーザーがこのプロセスを完了していない場合、共通同意フレームワークが起動し、ユーザーのサインイン後、前の画像に示されるダイアログが表示されます。

ユーザーがエンドポイントへのアクセス許可をアプリケーションに与えていない場合、同意フレームワークはその操作を要求します。 このプロセスは、委任された同意と呼ばれます。 ユーザーがダイアログの要求を承認すると、ユーザーに代わって、特定のアプリケーションにアプリへの特定のアクセス許可が付与されます。

認証オプション

認証オプション

Microsoft Graph は認証に関して 2 つのオプションをサポートしています。 1 つのオプションは、Microsoft Entra 専用、または職場または学校アカウントです。 もう 1 つのオプションは、統合認証です。これは Microsoft Entra ID または Microsoft アカウントです。 この場合、Microsoft Graph のまったく同じコード、同じエンドポイント、同じ SDK を使用して、OneDrive コンシューマーまたは OneDrive for Business のどちらかでファイルを取得できます。 Outlook.com または Office 365 の予定表、連絡先、メールについても同様です。

これについて便利な点は、取得するデータがサインインするユーザーのログインにすべて依存していることです。 したがって、コンシューマー アカウントまたはビジネス アカウントのデータを取得するために、特別なコードを作成したり、さまざまな API またはエンドポイントを使用したりする必要はありません。

Microsoft Entra ID & Microsoft アカウント

Microsoft Entra ID & Microsoft アカウント

前述のように、Microsoft Graph では、Microsoft アカウントと Microsoft Entra アカウントの両方がサポートされています。これは職場アカウントと学校アカウントとも呼ばれます。 サインインに関して、Microsoft Graph の API または SDK に固有のものはありません。コードは同じで、サインインによって、Microsoft Graph がアクセスするサービスが決まります。 ユーザーが Microsoft アカウントでサインインした場合、ファイル エンドポイントは OneDrive コンシューマーにマッピングされ、職場および学校のサインインは OneDrive for Business にマッピングされます。 これはほんの一例です。

アプリでサポートされているアカウントの種類を決定したり、両方をサポートしているかどうかを判断するには、Microsoft Entra 管理センターに登録されている関連付けられている Microsoft Entra アプリで特定の設定を設定します。

Microsoft Graph と ASP.NET MVC Web アプリケーション

Microsoft Graph と ASP.NET MVC Web アプリケーション

開発者は、さまざまな種類のアプリケーションで Microsoft Graph を使用できます。 このモジュールでは、Microsoft Graph を呼び出すためのサポートを追加し、ASP.NET MVC Web アプリケーションに、現在サインインしているユーザーの予定表からイベントを表示します。

最初の手順では、Visual Studio プロジェクト作成ウィザードを使用して、ASP.NET MVC Web アプリケーションを作成します。 次に、.NET および OWIN ミドルウェアの Microsoft Authentication Library (MSAL) を追加し、構成します。 これにより、Web アプリケーションでは、ユーザーがサインインし、Microsoft Graph に要求を送信するときに使用する Microsoft Entra ID からアクセス トークンを取得できます。 この 2 つのライブラリでは、プロジェクトにいくつかのライブラリをインストールする必要があります。 ライブラリは NuGet パッケージとして使用できます。

次に、アプリケーションが SSL を使用していることを確認します。 Microsoft Entra ID でアプリケーションを登録する場合は、サインインが成功した後にユーザーが送信されるリダイレクト URL を指定する必要があります。 この URL は、HTTPS を使用して Microsoft Entra アプリケーションを操作するように構成する必要があります。

概要

このユニットでは、Microsoft Graph が大規模な Microsoft 365 プラットフォームに適合する方法について説明しました。 また、ASP.NET MVC アプリケーションの Microsoft Graph を使用して、現在サインインしているユーザーの予定表からイベントを表示する方法について説明しました。