1
3

More than 3 years have passed since last update.

【Azure】ReactSPAからAzureADに対して認証し、WebAPI呼び出しのためのアクセストークンを取得する方法(Windows 10)

Last updated at Posted at 2021-06-29

概要

 React SPA内でAzure Active Directoryに対して認証し、アクセストークンを取得する方法を確認した。
 その際の手順を自分用にメモ。

 主に下記記事を参考に調査をした。
 クイックスタート: 認可コード フローを使用して React SPA 内でユーザーをサインインさせ、アクセス トークンを取得する

参考

1. Azure Active Directoryについて

 作成したReactSPAを、AzureADに登録し、アプリケーションでサインインしたときの認証ができるようにする。
 Azure側と、アプリケーション側双方での設定が必要になる。
 Azure Active Directory とは

2. Web APIを呼び出すためのアクセストークンについて
  • Web APIを呼び出すために、APIを呼び出す権限があるかどうかを判断する。
    リクエストにアクセストークンという、権限確認のための情報を載せて送ることで、呼び先がこのアクセストークンを確認し、承認するという仕組み。

 一番分かりやすい OAuth の説明

  • Azureではアクセストークンを取得する方法は、Azureにログインして取得する方法と、ReactSPAから取得する方法の2通りがある。
    (今回はReactSPAから取得する方法)

 AzureでAccessTokenを取得する方法

手順

  1. Azure側の設定(アプリケーションの登録)

  2. プロジェクトのダウンロード

  3. アプリ側の設定(構成ファイルの編集)

  4. プロジェクトを実行する

1. Azure側の設定(アプリケーションの登録)

(1) Azure portalの Azure Active Directoryで、アプリの登録+ 新規登録を選択する。
[Azure Active Directory] > [アプリの登録] > [新規登録]

1.png

(2)アプリケーションの登録 ページが表示されたら、アプリケーションの名前を入力する。
 他の項目は変更なし。

2.png

(3)管理 で、 認証 を選択し、プラットフォーム構成プラットフォームを追加 を選択する。
[Azure Active Directory] > [管理] > [認証]

3.png

(4) 表示されたウィンドウで シングルページ アプリケーション を選択する。

4.png

(4)リダイレクト URI の値を http://localhost:3000/ に設定する。

 このURIは、NodeJS がローカル コンピューターでリッスン(※)する既定のポート。
 ユーザー認証が成功すると、この URI に認証応答が返される。

※ リッスン

通信機能を持つソフトウェアが、外部からのアクセスに備えて待機することをこのように呼ぶ。

 構成 を選択して変更を適用する。

5.png

(5)プラットフォーム構成シングルページ アプリケーション を展開する。
許可の種類 が構成済みで、自分のリダイレクト URI が PKCE を使用した認可コード フローの対象になっていることを確認する。

6.png

2. サンプルコードのダウンロード

下記URLの手順2から、サンプルコードをダウンロードする。

3. アプリ側の設定(構成ファイルの編集)

ダウンロードしたサンプルコードを開く。

srcフォルダ内のauthConfig.jsファイルを開き、msalConfigオブジェクトの clientIDauthorityredirectUriの値を更新する。


export const msalConfig = {
   auth: {
       clientId: "Enter_the_Application_Id_Here",
       authority: "Enter_the_Cloud_Instance_Id_HereEnter_the_Tenant_Info_Here", 
       redirectUri: "Enter_the_Redirect_Uri_Here" 
   },
   cache: {
       cacheLocation: "sessionStorage", // 変更なし
       storeAuthStateInCookie: false, // 変更なし
   },

(1)Enter_the_Application_Id_Here は、登録したアプリケーションの アプリケーション (クライアント) ID を入力する。

[Azure Active Directory] > [アプリの登録] > [アプリケーション名] > [概要]

7.png

(2)Enter_the_Cloud_Instance_Id_Here は、「https://login.microsoftonline.com/」と入力する。

(3)Enter_the_Tenant_info_here には、テナントIDを入力する。

[Azure Active Directory] > [アプリの登録] > [アプリケーション名] > [概要]

8.png

(4)Enter_the_Redirect_Uri_Hereには http://localhost:3000/ と入力する。

(5)同ファイル内で下へスクロールし、graphMeEndpoint を更新する。

 Enter_the_Graph_Endpoint_Herev1.0/me を https://graph.microsoft.com/v1.0/meに置き換える。(Microsoft Graph API 用 URI)

4. 実行

(1)サンプルコードを入れたディレクトリ内から、次のコマンドを実行する。


npm install
npm start

(2)http://localhost:3000/ を開く。

(3)サインインを選択する。

 初回サインイン時に、自分のプロファイルにアプリケーションがアクセスして自分をサインインさせることについて同意を求められる。

 正常にサインインした後、 Request Profile Informationをクリックして、自分のプロファイル情報をページに表示する。

 正常に動作していれば、MicroSoftIDプラットフォームから、WebAPIを呼び出すためのアクセストークンが取得できている。

イメージ図(公式)

ReactSPA トークン取得1.png

1
3
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
1
3