Microsoft ID プラットフォーム を使用したアプリのサインイン フローApp sign-in flow with Microsoft identity platform

このトピックでは、Microsoft ID プラットフォームを使用した Web アプリ、デスクトップ アプリ、およびモバイル アプリの基本的なサインイン フローについて説明します。This topic discusses the basic sign-in flow for web, desktop, and mobile apps using Microsoft identity platform. Microsoft ID プラットフォームでサポートされるサインイン シナリオの詳細については、認証フローとアプリ シナリオに関する記事を参照してください。See Authentication flows and app scenarios to learn about sign-in scenarios supported by Microsoft identity platform.

Web アプリのサインイン フローWeb app sign-in flow

ユーザーがブラウザーで Web アプリに移動すると、次のことが起こります。When a user navigates in the browser to a web app, the following happens:

  • Web アプリで、ユーザーが認証されているかどうかが判断されます。The web app determines whether the user is authenticated.
  • ユーザーが認証されていない場合は、ユーザーをサインインさせるように Web アプリから Azure AD に委任されます。If the user isn't authenticated, the web app delegates to Azure AD to sign in the user. そのサインインは組織のポリシーに準拠します。したがって、ユーザーに資格情報を入力するように求めることもあれば、多要素認証 (2 要素認証や 2FA と呼ばれることがあります) を使用することも、パスワードをまったく使用しない (Windows Hello を使用するなど) 場合もあります。That sign in will be compliant with the policy of the organization, which may mean asking the user to enter their credentials, using multi-factor authentication (sometimes referred to as two-factor authentication or 2FA), or not using a password at all (for example using Windows Hello).
  • ユーザーは、クライアント アプリが必要とするアクセスに同意するように求められます。The user is asked to consent to the access that the client app needs. これは、ユーザーが同意したアクセスを表すトークンを Microsoft ID プラットフォームで配信できるように、クライアント アプリを Azure AD に登録する必要があるためです。This is why client apps need to be registered with Azure AD, so that Microsoft identity platform can deliver tokens representing the access that the user has consented to.

ユーザーが正常に認証されると、次のことが起こります。When the user has successfully authenticated:

  • Microsoft ID プラットフォームから、Web アプリにトークンが送信されます。Microsoft identity platform sends a token to the web app.
  • Cookie が保存され、Azure AD のドメインに関連付けられ、ブラウザーの cookie jar にユーザーの ID が含まれます。A cookie is saved, associated with Azure AD's domain, that contains the identity of the user in the browser's cookie jar. 次回、アプリがブラウザーを使用して Microsoft ID プラットフォーム認証エンドポイントに移動するときに、ユーザーがもう一度サインインする必要がないように、ブラウザーから Cookie が提示されます。The next time an app uses the browser to navigate to the Microsoft identity platform authorization endpoint, the browser presents the cookie so that the user doesn't have to sign in again. これも SSO の実現方法です。This is also the way that SSO is achieved. Cookie は Azure AD によって生成され、内容は Azure AD によってのみ理解されます。The cookie is produced by Azure AD and can only be understood by Azure AD.
  • その後、Web アプリにより、トークンが検証されます。The web app then validates the token. 検証が成功した場合、Web アプリで、保護されたページが表示され、セッション Cookie がブラウザーの cookie jar に保存されます。If the validation succeeds, the web app displays the protected page and saves a session cookie in the browser's cookie jar. ユーザーが別のページに移動すると、Web アプリでは、そのユーザーがセッション Cookie に基づいて認証されていることを認識します。When the user navigates to another page, the web app knows that the user is authenticated based on the session cookie.

次のシーケンス図は、この相互作用をまとめたものです。The following sequence diagram summarizes this interaction:

Web アプリの認証プロセス

Web アプリで、ユーザーが認証されているかどうかが判断されるしくみHow a web app determines if the user is authenticated

Web アプリの開発者は、すべてのページまたは特定のページのみで認証を必要とするかどうかを指定できます。Web app developers can indicate whether all or only certain pages require authentication. たとえば、ASP.NET/ASP.NET Core では、[Authorize] 属性をコントローラー アクションに追加してこれを行います。For example, in ASP.NET/ASP.NET Core, this is done by adding the [Authorize] attribute to the controller actions.

この属性により、ASP.NET で、ユーザーの ID が含まれるセッション Cookie の存在が確認されます。This attribute causes ASP.NET to check for the presence of a session cookie containing the identity of the user. Cookie が存在しない場合、ASP.NET により、指定された ID プロバイダーに認証がリダイレクトされます。If a cookie isn't present, ASP.NET redirects authentication to the specified identity provider. ID プロバイダーが Azure AD 場合、Web アプリにより、https://login.microsoftonline.com に認証がリダイレクトされ、サインイン ダイアログが表示されます。If the identity provider is Azure AD, the web app redirects authentication to https://login.microsoftonline.com, which displays a sign-in dialog.

Web アプリでサインインが Microsoft ID プラットフォームに委任され、トークンが取得されるしくみHow a web app delegates sign-in to Microsoft identity platform and obtains a token

ユーザー認証は、ブラウザーを介して行われます。User authentication happens via the browser. OpenID プロトコルで、標準の HTTP プロトコル メッセージが使用されます。The OpenID protocol uses standard HTTP protocol messages.

  • Web アプリでは、Microsoft ID プラットフォームを使用するために HTTP 302 (リダイレクト) がブラウザーに送信されます。The web app sends an HTTP 302 (redirect) to the browser to use Microsoft identity platform.
  • ユーザーが認証されると、Microsoft ID プラットフォームでは、ブラウザーからのリダイレクトを使用して Web アプリにトークンが送信されます。When the user is authenticated, Microsoft identity platform sends the token to the web app by using a redirect through the browser.
  • リダイレクトは、リダイレクト URI の形式で Web アプリから提供されます。The redirect is provided by the web app in the form of a redirect URI. このリダイレクト URI は、Azure AD アプリケーション オブジェクトに登録されます。This redirect URI is registered with the Azure AD application object. アプリケーションは複数の URL でデプロイされる可能性があるため、リダイレクト URI は複数存在する場合があります。There can be several redirect URIs because the application may be deployed at several URLs. そのため、Web アプリで、使用するリダイレクト URI も指定する必要があります。So the web app will also need to specify the redirect URI to use.
  • Azure AD では、Web アプリから送信されるリダイレクト URI が、アプリの登録されたリダイレクト URI のいずれかであることを確認します。Azure AD verifies that the redirect URI sent by the web app is one of the registered redirect URIs for the app.

デスクトップ アプリおよびモバイル アプリのサインイン フローDesktop and mobile app sign-in flow

上述したフローは、デスクトップ アプリケーションとモバイル アプリケーションに適用されますが、若干の違いがあります。The flow described above applies, with slight differences, to desktop and mobile applications.

デスクトップ アプリケーションとモバイル アプリケーションでは、認証のために、埋め込み Web コントロールまたはシステム ブラウザーを使用できます。Desktop and mobile applications can use an embedded Web control, or a system browser, for authentication. 次の図は、デスクトップ アプリまたはモバイル アプリで Microsoft 認証ライブラリ (MSAL) を使用してアクセス トークンを取得し、Web API を呼び出す方法を示しています。The following diagram shows how a Desktop or mobile app uses the Microsoft authentication library (MSAL) to acquire access tokens and call web APIs.

デスクトップ アプリのしくみ

MSAL では、ブラウザーを使用してトークンを取得します。MSAL uses a browser to get tokens. Web アプリと同様に、認証は Microsoft ID プラットフォームに委任されます。As with web apps, authentication is delegated to Microsoft identity platform.

Azure AD は Web アプリの場合と同じ ID Cookie をブラウザーに保存するため、ネイティブ アプリまたはモバイル アプリでシステム ブラウザーを使用する場合は、対応する Web アプリを使用してすぐに SSO を取得します。Because Azure AD saves the same identity cookie in the browser as it does for web apps, if the native or mobile app uses the system browser it will immediately get SSO with the corresponding web app.

既定では、MSAL ではシステム ブラウザーが使用されます。By default, MSAL uses the system browser. 埋め込みコントロールを使用して、より統合されたユーザー エクスペリエンスを提供する .NET Framework デスクトップ アプリケーションは、例外となります。The exception is .NET Framework desktop applications where an embedded control is used to provide a more integrated user experience.

次のステップNext steps

認証と承認の基本に関するその他のトピックは、次のとおりです。For other topics covering authentication and authorization basics:

  • Microsoft ID プラットフォームでの認証と承認の基本的な概念については、「認証と承認」を参照してください。See Authentication vs. authorization to learn about the basic concepts of authentication and authorization in Microsoft identity platform.
  • 認証と承認でアクセス トークン、更新トークン、ID トークンがどのように使用されるかについては、セキュリティ トークンに関する記事を参照してください。See Security tokens to learn how access tokens, refresh tokens, and ID tokens are used in authentication and authorization.
  • Microsoft ID プラットフォームと統合できるようにアプリケーションを登録するプロセスについては、アプリケーション モデルに関する記事を参照してください。See Application model to learn about the process of registering your application so it can integrate with Microsoft identity platform.

アプリのサインイン フローの詳細については、次を参照してください。To learn more about app sign-in flow:

  • Microsoft ID プラットフォームでサポートされているユーザーを認証するためのその他のシナリオの詳細については、認証フローとアプリ シナリオに関する記事を参照してください。See Authentication flows and app scenarios to learn more about other scenarios for authenticating users supported by Microsoft identity platform.
  • Microsoft アカウント、Azure AD アカウント、および Azure AD B2C ユーザーを 1 つの合理化されたプログラミング モデルで使用するアプリケーションの開発に役立つ Microsoft ライブラリの詳細については、「Microsoft Authentication Library (MSAL) の概要」を参照してください。See MSAL libraries to learn about the Microsoft libraries that help you develop applications that work with Microsoft Accounts, Azure AD accounts, and Azure AD B2C users all in a single, streamlined programming model.