NDW

アプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

.NET Core 1. システムエンジニアリング Azure 実装技術

Graph API実行環境の準備方法(クライアント資格情報フローのアプリ登録)

投稿日:

概要

実行環境の準備

  1. Azureポータルにログイン
  2. アプリの新規登録
    [Azure AD B2C]リソースを選択し、[アプリの登録]メニューの[新規登録]をクリックする。
  3. 次の内容を入力し、[登録]をクリックする。
    • [名前]: “GraphApiTest” ※任意の名前を指定可
    • [サポートされているアカウントの種類]: [この組織ディレクトリのみに含まれるアカウント]
      (この例では、Google, Twitter等の外部や別テナントを使用する予定はなく、Azure AD B2Cローカルアカウントのみを使用する想定のため。)
    • [リダイレクトURI]: (指定不要)
      (クライアント資格情報フローでは、リダイレクトを使用しないため)

  4. クライアントID、テナントIDの確認
    登録したアプリの概要が表示されるので、クライアントID, テナントIDをどこかに控えておきます。
  5. アプリの認証に使用するシークレットの作成
    メニューの[証明書とシークレット]を選択し、[新しいクライアントシークレット]をクリックし、新しい任意のシークレットを作成します。
    • 証明書を使用した方がより安全ですが、検証のためより簡単なシークレットを使用しています。
    • シークレットの値は次回表示時に参照できなくなってしまうので、どこかに控えてください。

  6. ユーザアカウント操作のための権限付与
    1. [Azure Active Directory]リソースの[ロールと管理者]メニューを選択し、[ユーザー管理者]をクリックします。
    2. [割り当ての追加]をクリックし、追加したアプリGraphApiTestを選択後、[追加]します。
      (既定ではユーザアカウントしか表示されませんが、名称で検索できます。)
  7. B2C拡張アプリのクライアントIDの確認 ※拡張属性を操作する場合のみ必要
    [Azure AD B2C]リソースの[アプリの登録]メニューを選択し、[すべてのアプリケーション]をクリックします。
    表示された”b2c-extensions-app”アプリのクライアントIDを、どこかに控えます。

補足事項

  • 権限の設定については、次の情報を参考にしています。
    Microsoft Graph を使用して Azure AD B2C を管理する
    当初、[Directory.ReadWrite.All]のアクセス許可が必要かと思ったのですが、ユーザー管理者ロールの付与で問題ないようです。
  • ユーザー管理者ロールを付与しない場合、個別に次のアクセス許可やロールが必要です。
    • Azure AD B2Cの登録アプリの[APIとアクセス許可]-[アプリケーションの許可]から、[Directory.ReadWrite.All](ディレクトリ全般の操作のため)、[User.ReadWrite.All](ユーザアカウントの削除のため)を追加を追加し、同意する。
    • [Azure Active Directory]リソースの[ロールと管理者]メニューから、[ヘルプデスク管理者]ロールに”GraphApiTest”を追加する。
  • アプリ登録の[認証]にあるパブリッククライアントの設定について
    • [認証]-[アプリケーションはパブリッククライアントとして扱います。]という設定があり、選択肢「はい」か「いいえ」があります。今回のクライアント資格情報フローではリダイレクトを使用しないので、どちらか選択する必要があります。
    • この項目は、Open ID Connect(OAuth2)の”Client Types”に対応するようで、RFC上では”public client”または”confidential client”の選択肢があります。
      RFC 6749: The OAuth 2.0 Authorization Framework
    • 今回の場合、資格情報をサーバ上に保持するWebサーバを想定しており、RFCの解釈では”confidential client”(パブリッククライアントではない)となります。そのため、前述の選択肢は既定値の「いいえ」となり、上記の手順には含めていません。






-.NET Core, 1. システムエンジニアリング, Azure, 実装技術

関連記事

TeraTermを使ったSSH鍵の作成方法

WindowsでSSH接続するためのTera Termで、SSH鍵を作成する方法を説明します。 概要 Windows10(64ビット)で動作するTera Term 4.105で動作確認しました。 クラ …

wildflyへのwarデプロイの自動化

更新したWebアプリをWildflyにデプロイするのが面倒なのでスクリプトを作成してみました。 前提 実行環境はCentOS Linux 7です。 JavaEEのWebアプリの配布形式であるwarファ …

C#: EventWaitHandle概要とAutoResetEvent, ManualResetEventの使い方

はじめに 次の環境を使用して動作確認しています。 OS Windows 10(64ビット) IDE Microsoft Visual Studio Community 2022(17.1.3) + C …

.NET Core: Microsoft.Graph.Authの正式版予定

.NET CoreでMicrosoft Graphを操作するために、Microsoft Graph API SDK(“Microsoft.Graph”パッケージ)の使用を考えて …

ASP.NET Core: IHttpClientFactoryの使用方法

とりあえず、どんなサンプルになるか知りたい人は下記のサンプルをご覧ください。 ASP.NET Core: IHttpClientFactoryの単純サンプル ASP.NET Core: IHttpCl …