33
32

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 3 years have passed since last update.

開発者のための Azure AD 情報まとめ

Last updated at Posted at 2020-10-07

アプリケーションを開発する上で多くの場合はユーザー認証/認可が必要になります。Azure AD は簡単に実装できる ID 基盤として機能しますが、多くの機能やライブラリがあるため、この記事では開発者が知るべき Azure AD の使い方について、概要と公式ドキュメントのリンクなどを紹介します。

Azure AD と Azure AD B2C

Azure AD は Azure AD (B2B)Azure AD B2C の 2 種類に分類でき、用途に応じて使い分けをします。B2B と B2C の比較については External Identities ソリューションの比較を参照してください。

Azure AD (B2B)

企業で使われる ID 基盤として機能し、Microsoft 365 や Dynamics 365 などでも利用されます。他企業のユーザーをゲストとして登録する事もでき、複数の企業のユーザーが同じ Team 会議や Azure DevOps などのサービスに、自社のアカウントで参加するなど、B2B シナリオで利用できます。

また設置型の Active Directory がある場合、Azure AD と同期して利用することができます。

Azure AD B2C

一般の外部向けアプリケーションの ID 基盤として利用でき、独自のユーザー管理に追加して、Facebook や Twitter、LinkedIn や Microsoft アカウントなどの外部 ID プロバイダーと連携することもできます。

SDK : ADAL と MSAL

Azure AD の認証に使える SDK は ADAL (Azure Directory Authentication Library) と MSAL (Microsoft Authentication Library) がありますが、ADAL は新規機能の追加がもうサポートされず、今後は MSAL を使う事になりますので、MSAL 一択です。最大の違いは ADAL が Azure AD のみサポートする一方、MSAL は Azure AD および Azure AD B2C の両方に対応しています。

認証と認可

Azure AD は認証で OpenID Connect/SAML、認可で OAuth 2.0 を提供します。

開発者がやるべき作業

Azure AD を ID 基盤に決めた場合、以下の作業を行う必要があります。

  • 利用するテナントを決める/作成する
  • サービスアプリケーションを登録する
  • クライアントアプリケーションを登録する
  • MSAL を使って認証する

利用するテナントを決める/作成する

シナリオによって Azure AD か Azure AD B2C を選択します。また既存の環境を使うか、新規にテナントを作るかを決める必要があります。検証時にはテスト用にテナントを作成してください。

参考 クイック スタート:テナントを設定する

この記事では Azure AD を使っていきます。

サービスアプリケーションを登録する

Web API を開発している場合、まずはサービスをアプリケーションとして Azure AD に登録します。もし開発しているアプリケーションが Microsoft Graph など既存のサービスにアクセスするだけなら、次のステップに進んでください。

参考 クイック スタート:Web API を公開するようにアプリケーションを構成する

アプリケーションの登録を行うと、提供する API のスコープを定義することができます。スコープの粒度はアプリケーションにより異なります。例えば Microsoft Graph の場合は各操作ごとに細かく設定できますが、Dynamics Customer Engagement などはユーザーとしてログインの 1 スコープのみとなっています。

開発しているアプリケーションでどのようにスコープを利用するか、事前に検討してください。

クライアントアプリケーションを登録する

次にサービスを利用するクライアントを登録します。

クイック スタート:Web API にアクセスするようにクライアント アプリケーションを構成する

アプリケーションを登録すると以下の事ができるようになります。

  • 登録したアプリケーションの Azure AD 上の Id が発行される
  • クライアントが利用する API を設定できる

指定できる API は、マイクロソフトが提供している各種サービスに加え、前ステップで追加した独自サービスも対象となります。クイックスタートでも Employees.Read.All という独自スコープを選択しています。

MSAL を使ってサービスにアクセスする

アプリケーションのタイプによって実際の実装は異なりますが、基本的な流れは同じです。例えば Windows デスクトップアプリが Microsoft Graph API を利用する場合、事前に登録したクライアント用アプリケーションに対してトークンを取得し、その後取得したトークンを使って Graph API へアクセスを行います。

各プラットフォームごとの例は公式ドキュメントを参照してください。

参考 Microsoft ID プラットフォームのドキュメント

上記のページには、シングルページアプリやモバイルアプリなど、各プラットフォームごとの例があります。

まとめ

Azure AD は SDK が複数存在したり、サービスとクライアントの登録という、設置型時代にはなかった概念があるため、はじめは分かりずらいかもしれません。

まずは上記情報を参考に 1 つアプリケーションを作ってみてください。

参考

以下のレポジトリでは、.NET を使ったサンプルが詳細な説明とともに提供されています。英語ですが是非ご覧ください。
GitHub: active-directory-dotnet-native-aspnetcore-v2

33
32
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
33
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?