独立系ソフトウェア開発者向けの Microsoft Entra ID ガイド

Microsoft Entra ID は、従業員がリソースにアクセスできるようにするクラウドベースの ID およびアクセス管理サービスです。 Microsoft Entra ID は、業界アナリストから常にリーダーとして認識されており、 Gartner のアクセス管理部門のマジック クアドラントでは、7 回リーダーに選出されています。 KuppingerCole は、Microsoft Entra ID をアクセス管理分野のあらゆる面でポジティブであると評価しています。 Frost & Sullivan は Microsoft をグローバル ID およびアクセス管理業界の 2022 年年間最優秀企業に選出しました。 Microsoft Entra ID を使用している 300,000 を超える組織の一部に関するストーリーをお読みください

この記事は、独立系ソフトウェア開発者 (ISV) が Microsoft Entra ID 用のアプリケーションをビルドおよび最適化する方法に関するシリーズの最初の記事です。 このシリーズでは、次のトピックについて詳しく説明します。

Microsoft ID プラットフォームを使用して開発する

アプリケーションは、Microsoft Entra ID の中核です。 ユーザーは、リソースにアクセスする際、アプリケーションを使用してそのリソースにアクセスします。 Microsoft ID プラットフォームは、開発者が Microsoft Entra ID に基づいてビルドできるようにするツールとサービスで構成されます。 Microsoft ID プラットフォームは、Microsoft Entra ID から始まります。Microsoft Entra ID は、アプリケーションに必要なサインイン、サインアウト、アプリケーション登録などの操作を提供するクラウド サービスです。 Microsoft ID プラットフォームには、さまざまな言語とフレームワークで使用されるオープンソースの Microsoft 認証ライブラリ (MSAL) と、Microsoft Entra ID のデータと操作にアクセスするための API を提供する Microsoft Graph が組み込まれています。

Microsoft ID プラットフォームには、開発者向けの次の機能が組み込まれています。

  • ユーザーの認証、アプリの承認、API トークンの生成。
  • Microsoft 認証ライブラリ (MSAL) との直接的な統合、または Microsoft.Identity.Web や Azure.Identity などのハイレベル API を使用した統合により、セキュリティ機能の統合を簡略化します。
  • OAuth 2.0 をゼロから実装するのではなく、MSAL を使用して、開発者の労力を軽減する堅牢な API で複雑さを取り除きます。
  • アプリケーションが、業界標準と、OAuth 2.0 などのプロトコルに準拠してセキュリティのベスト プラクティスに従っていることを保証します。
  • シングル サインオン (SSO) をサポートして、複数のアプリケーションとエクスペリエンス全体で認証ストーリーを統合します。
  • ソーシャル ID と Microsoft 外部 ID の統合を合理化します。
  • 最小限の組み込みコードと、条件付きアクセス (CA)、継続的アクセス評価 (CAE)、ID 保護デバイス管理などの Microsoft Entra ID の機能のネイティブ サポートにより、データと資産をセキュリティで保護します。
  • デバイスとポリシーのコンプライアンスを確保しながら、認証トークンをセキュリティで保護するアプリケーションをビルドします。 Microsoft Authenticator などの最新のブローカーや、Windows 上の Web アカウント マネージャー (WAM) などの組み込みのオペレーティング システム コンポーネントによる認証のサポートに依存します。

アプリケーションを Microsoft Entra ID と統合する

Microsoft Entra ID のユーザー、サービス、またはグループの ID と統合されるアプリケーションは、Microsoft Entra ID テナントと対話します。 テナントは、Microsoft Entra ID の専用インスタンスであり、通常、大企業内の組織またはグループを表します。 テナントは組織のディレクトリを保持し、職場や学校のアカウントや、招待されたパートナーのアカウントなどのオブジェクトを格納します。 グループ、アプリケーション、デバイス、その他のオブジェクトも格納されます。 テナントは、認証などの操作を行うためにアプリケーションで使用される Web エンドポイントを提供します。

アプリケーションは、テナント エンドポイントに要求を行って、ユーザーを識別するトークン、またはリソースへのアクセスを承認するためにリソース API で使用できるトークンを取得します。 Microsoft Entra ID 内のアプリケーション ID を使用すると、アプリケーションは、Microsoft Entra ID テナントからトークンを要求しながら、ユーザーに、そのユーザーを誰が認証しようとしているかについて適切なレベルのコンテキストを提供できます。

ほとんどの企業では、必要な Microsoft Entra ID テナントは 1 つのみですが、シナリオによっては、組織がビジネス目標を達成するために複数のテナントを必要とする場合があります。 大企業には複数の独立した事業単位が含まれる場合があり、企業全体にわたる調整とコラボレーションが必要となることがあります。 地域内の都市または地区の学校も同様の要件を必要とする場合があります。 これらのシナリオでは、各ユニットが、独自の構成とポリシーを使用する独自のテナントを持つことができます。 Microsoft Entra ID クラウドはテナントをホストするため、組織は最小限の摩擦でテナント間コラボレーションを設定できます。

Microsoft Entra ID は、幅広いプロトコルのうち次のプロトコルをサポートします。

  • OAuth 2.0 は、認証の業界標準です。 アプリケーションは、OAuth 2.0 プロトコルを使用してアクセス トークンを要求して、アプリケーションから保護されたリソースにアクセスするための承認を取得します。
  • OpenID Connect (OIDC) は、OAuth 2.0 上に構築された相互運用可能な認証標準です。 アプリケーションは、現在のユーザーを認証するために、OIDC プロトコルを使用して ID トークンを要求します。
  • Security Assertion Markup Language (SAML) 2.0 は認証標準です。 アプリケーションは、Microsoft Entra ID から SAML アサーション (SAML トークンとも呼ばれます) を要求して、アプリと Microsoft Entra ID との間で認証および承認データを交換します。 アプリケーションは、SAML を使用して現在のユーザーを認証します。
  • クロスドメイン ID 管理システム (SCIM) は、認証および承認用ではありません。 SCIM は、Microsoft Entra ID と接続アプリケーションとの間のユーザーおよびグループ情報の同期を自動化するプロビジョニング プロトコルです。 同期により、ユーザーとグループがアプリケーションにプロビジョニングされます。

アプリケーションが Microsoft Entra ID を使用して実行する中心的な操作は、トークンの要求と処理です。 以前は、Microsoft Entra ID などの ID プロバイダーがアプリにトークンを発行するには、多くの場合、ユーザーがユーザー名とパスワードを使用して自分の身元を証明するだけで十分でした。 このトークンは、"誰がユーザーであるか、アプリで何にアクセスできるか" という質問に答えるものでした。現在は、より安全なアプローチにするために、次のようなより多くのシグナルに対して ID アカウントを検証します。

  • ユーザーはだれか
  • アプリで何にアクセスできるか?
    • どのデバイスからか?
    • 資格情報の強度はどのくらいか?
    • どのネットワークの場所からか?

Microsoft Entra ID のお客様は、条件付きアクセスなどの機能を使用して、セキュリティで保護されたリソース アクセスを確保するために評価する質問や条件を決定できます。

ユーザー ID の処理を必要とするアプリケーションをビルドする開発者は、コードを記述する際、トークンの発行でのこの複雑さを考慮する必要がありません。 認証要求の処理は、組み込みの MSAL 機能によって実現されます。 条件付きアクセスを有効にすると、アプリケーションでトークンを要求したときに、Microsoft Entra ID によってポリシーが確実に適用されます。 ユーザーの場所 (ユーザーが企業ネットワーク内に存在するかどうかなど) やユーザーのリスク シグナルの評価などのポリシーに照らして要求が検証されます。 ユーザーのリスク評価には、多要素認証 (MFA) などのさらに多くのユーザー操作が必要となる場合があります。 Microsoft Entra ID は、ポリシー制約への準拠を確認した後、トークンを発行します。 準拠が確認できない場合、Microsoft Entra ID はアプリにトークンを発行せず、ユーザーがリソースにアクセスできない理由に関するコンテキストをユーザーに提供します。

条件付きアクセス ポリシーがより高度になっているため、 ユーザーまたはサービスがトークンを受け取る必要があるかどうかを決定する幅広いシグナルがあります。 たとえば、モバイル デバイスでモバイル アプリケーション管理 (MAM) が使用されているかどうか、Windows PC をデスクトップ アプリ内からIntune で管理しているかどうかを判断することが重要な場合があります。 また、トークンを要求の送信元デバイスにバインドしてトークンを保護することが必要な場合もあります。 このような注意を払うことは、開発者の負担を最小限に抑えながら、コンプライアンスとセキュリティを確保するのに役立ちます。 Microsoft ライブラリは、特定のポリシー要件に対応する柔軟性を維持しながら、必要なスキャフォールディングを提供します。

Microsoft Entra ID を使った認証と認可

Microsoft Entra ID は、Web ベースの資産 (Web サイトや API など) をセキュリティで保護するブラウザー内と、Windows、macOS、Linux、iOS、Android などのクライアント プラットフォーム上で、認証および承認フローをサポートします。 エコシステム全体のテクノロジ プロバイダーは Microsoft と連携して、お客様、その組織、パートナーが、シームレスな資格情報処理エクスペリエンスを確実に使用できるようにします。 Microsoft Edge は Microsoft Entra ID と直接連携してデバイス全体の SSO をサポートし、Windows デバイス上のユーザーを認証します。 Google Chrome (バージョン 111)Firefox (バージョン 91) には、この機能があります。 Microsoft Entra ID の ID を使用する Web アプリケーションは、ブラウザー ベースのアプリでこれらの機能を自動的に使用して、シームレスなサインイン エクスペリエンスをお客様に提供します。

ネイティブ アプリケーションでこの統合された SSO エクスペリエンスを提供できるようにするために、Microsoft Entra に認証ブローカーが導入されました。これはユーザーのデバイス上で実行されるアプリケーションであり、認証ハンドシェイクを管理し、接続されたアカウントのトークンを保持します。 次の表に、一般的なオペレーティング システムの認証ブローカーの一覧を示します。

オペレーティング システム 認証ブローカー
iOS Microsoft Authenticator アプリ
Android Microsoft Authenticator アプリまたは Intune ポータル サイト アプリ
Windows Web アカウント マネージャー (Windows 10、Windows Server 2019 以降、Windows 11 で使用できる組み込みオペレーティング システム コンポーネント)

認証ブローカーを使用すると、ネイティブ アプリケーション開発者は、クラウドで新機能が利用可能になったときに、コードを書き換える必要なく、デバイス ベースの条件付きアクセス ポリシーなどの新しい Microsoft Entra ID 機能を使用できます。 アプリケーションで認証ブローカーを使用しない場合、新しい機能を必要とする Microsoft Entra ID のお客様はアプリの導入を制限される可能性があります。

ID およびアクセス管理を Microsoft Entra ID に委任する

OAuth 2.0、OIDC、または SAML を実装する開発者ツール、ライブラリ、またはフレームワークを使用して、ID およびアクセス管理を Microsoft Entra ID に委任するアプリケーションを構築できますが、前述の注意事項があります。 認証プロファイルなどの 1 つ以上の認定プロファイルに対して OpenID Certification を使用する OIDC 実装の多くは、Microsoft Entra ID と連携するために最小限の追加構成を必要とします。 Microsoft Entra ID プラットフォームの開発を容易にするために、いくつかの最適化された Microsoft ライブラリが Microsoft のサービスおよび機能と連携します。

  • Web アプリ、API、またはその他のワークロード (ASP.NET Core または ASP.NET 上のデーモンやサービスなど) をビルドする場合は、Microsoft Identity Web を使用します。
  • Microsoft Azure 上でビルドする場合、Azure ID クライアント ライブラリが含まれている Azure SDK を使用します。
  • これらのライブラリのいずれも使用できない場合は、次の表に示す開発環境用の MSAL を使用します。
ライブラリ サポートされているプラットフォームとフレームワーク
MSAL for Android Android
MSAL Angular Angular と Angular.js のフレームワークを使用したシングルページ アプリ
MSAL Objective-C iOS、iPadOS、macOS
MSAL Go Windows、macOS、Linux
MSAL Java Windows、macOS、Linux
MSAL.js Vue.js、Ember.js、Durandal.js など、JavaScript と TypeScript のフレームワーク
MSAL.NET .NET、.NET Framework、Xamarin Android、Xamarin iOS
MSAL Node Express を使用した Web アプリ、Electron を使用したデスクトップ アプリ、クロスプラットフォーム コンソール アプリ
MSAL Python Windows、macOS、Linux
MSAL React React と React ベースのライブラリ (Next.js、Gatsby.js) を使用したシングルページ アプリ

MSAL ライブラリ ファミリは、コア トークンの取得とキャッシュ機能を提供します。 MSAL、Microsoft ID Web、Azure ID クライアント上に構築され、認証ライブラリ機能を使用してトークンの取得を簡略化します。

ISV は、可能な限り、MSAL に基づいてビルドするか、MSAL 上に構築されたライブラリに基づいてビルドすることをお勧めします。 MSAL では、ブローカー認証、条件付きアクセス シナリオ、トークン保護、Microsoft Intune アプリ保護ポリシーモバイル アプリ管理Microsoft 継続的アクセス評価 などをサポートしています。

利用可能なすべてのプラットフォームで、統合された MSAL 認証フレームワークは Microsoft ID プラットフォームとシームレスに統合され、一貫性のある安全なユーザー認証を実現します。 MSAL を使用すると、プロアクティブなトークンの更新、キャッシュ、失効に関する複雑さが取り除かれるため、開発者は認証フローの安全性、堅牢性、信頼性を確保できます。

他のリソースにアクセスする

アプリケーションでは、多くの場合、認証と承認以外のもの (テナントのディレクトリ データへのアクセスなど) も必要になります。 アクセスには、ユーザー、グループ、グループ メンバー、アプリケーション、ガバナンス、ID 保護の属性の取得が含まれる場合があります。

Microsoft Graph は、テナントの ID とアクセスユーザーグループアプリケーションへのアクセスを提供します。 Microsoft Graph は、Microsoft 365 のデータとインテリジェンスにアクセスするための入口です。 Graph の統合型プログラミング モデルを使用して、Microsoft 365、Windows、Enterprise Mobility + Security (EMS) の膨大な量のデータにアクセスできます。

次のステップ