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, 実装技術

関連記事

.NET Core(C#): Moqを使ったモック・スタブ作成方法

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

技術検証

LinuxでGoogle Driveを操作(rcloneの使い方)

概要 RHEL8.3にて、rcloneを使用してGoogle Driveに接続する方法を説明します。 rclone.org  1 Tweet 171 Users 3299 PocketsRc …

Windows10のインストール場所を選べない

DELLのノートPCであるVostro 5370を購入しました。 既定ではWindows 10 Homeがインストールされていましたが、会社用のボリュームライセンスのWindows10 Enterpr …

Hyper-VでリモートのISOイメージをマウント

皆で使用するCD/DVDはISOイメージファイルとして、ファイルサーバ上の共有フォルダに配置する運用を想定しています。Hyper-V上の仮想マシンのCD/DVDドライブに、これらのISOイメージファイ …

Webアプリ用のサイトマップ生成

Googleの検索結果への表示を促進するためにGoogleに対してサイトマップを提供する必要がある。 WordPressでは様々なプラグインを使ってサイトマップを作成できるが、Webアプリの場合は独自 …