適用対象:
従業員テナント
外部テナント (詳細)
このチュートリアルでは、外部テナントの顧客向けアプリまたは従業員テナントの従業員にユーザーをサインインさせる Node/Express.js Web アプリを構築する方法について説明します。 このチュートリアルでは、Microsoft Graph API を呼び出すためのアクセス トークンを取得する方法についても説明します。
このチュートリアルは、3 部構成のシリーズのパート 1 です。
このチュートリアルでは、次の手順を行います。
- Node.js プロジェクトを設定する
- 依存関係のインストール
- アプリ ビューと UI コンポーネントを追加する
[前提条件]
-
この組織のディレクトリ内のアカウント専用に構成された Microsoft Entra 管理センターに新しいアプリを登録します。 詳細については、「 アプリケーションの登録 」を参照してください。 後で使用するために、アプリケーション の [概要 ] ページから次の値を記録します。
- アプリケーション (クライアント) ID
- ディレクトリ (テナント) ID
-
Web プラットフォーム構成を使用して、次のリダイレクト URI を追加します。 詳細については、「 アプリケーションにリダイレクト URI を追加する方法 」を参照してください。
-
リダイレクト URI:
http://localhost:3000/auth/redirect -
フロント チャネル ログアウト URL:
https://localhost:5001/signout-callback-oidc
-
リダイレクト URI:
- アプリの登録にクライアント シークレットを追加します。 運用アプリではクライアント シークレットを使用しないでください。 代わりに、証明書またはフェデレーション資格情報を使用してください。 詳細については、「 アプリケーションに資格情報を追加する」を参照してください。
- Node.js.
- Visual Studio Code または別のコード エディター。
Node.js プロジェクトを作成する
コンピューター内の任意の場所に、 ciam-sign-in-node-express-web-app などのノード アプリケーションをホストするフォルダーを作成します。
ターミナルで、
cd ciam-sign-in-node-express-web-appなどの Node Web アプリ フォルダーにディレクトリを変更し、次のコマンドを実行して新しい Node.js プロジェクトを作成します。npm init -yinit -yコマンドは、Node.js プロジェクトの既定の package.jsonファイルを作成します。次のプロジェクト構造を実現するために、追加のフォルダーとファイルを作成します。
ciam-sign-in-node-express-web-app/ ├── server.js └── app.js └── authConfig.js └── package.json └── .env └── auth/ └── AuthProvider.js └── controller/ └── authController.js └── routes/ └── auth.js └── index.js └── users.js └── views/ └── layouts.hbs └── error.hbs └── id.hbs └── index.hbs └── public/stylesheets/ └── style.css
アプリの依存関係をインストールする
必要な ID と関連する npm パッケージ Node.js インストールするには、ターミナルで次のコマンドを実行します。
npm install express dotenv hbs express-session axios cookie-parser http-errors morgan @azure/msal-node
アプリ UI コンポーネントをビルドする
コード エディターで views/index.hbs ファイルを 開き、次のコードを追加します。
<h1>{{title}}</h1> {{#if isAuthenticated }} <p>Hi {{username}}!</p> <a href="/users/id">View ID token claims</a> <br> <a href="/auth/signout">Sign out</a> {{else}} <p>Welcome to {{title}}</p> <a href="/auth/signin">Sign in</a> {{/if}}このビューでは、ユーザーが認証されると、ユーザー名とリンクが表示され、
/auth/signoutおよび/users/idエンドポイントにアクセスできます。それ以外の場合は、ユーザーがサインインするために/auth/signinエンドポイントにアクセスする必要があります。 これらのエンドポイントの高速ルートは、この記事の後半で定義します。コード エディターで views/id.hbs ファイルを 開き、次のコードを追加します。
<h1>Azure AD for customers</h1> <h3>ID Token</h3> <table> <tbody> {{#each idTokenClaims}} <tr> <td>{{@key}}</td> <td>{{this}}</td> </tr> {{/each}} </tbody> </table> <a href="/">Go back</a>このビューを使用して、ユーザーが正常にサインインした後に Microsoft Entra 外部 ID がこのアプリに返す ID トークン要求を表示します。
コード エディターで views/error.hbs ファイルを 開き、次のコードを追加します。
<h1>{{message}}</h1> <h2>{{error.status}}</h2> <pre>{{error.stack}}</pre>このビューを使用して、アプリの実行時に発生するエラーを表示します。
コード エディターで views/layout.hbs ファイルを 開き、次のコードを追加します。
<!DOCTYPE html> <html> <head> <title>{{title}}</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> {{{content}}} </body> </html>layout.hbsファイルはレイアウト ファイルにあります。 これには、アプリケーション ビュー全体で必要な HTML コードが含まれています。コード エディターで、 public/stylesheets/style.css ファイルを開き、次のコードを追加します。
body { padding: 50px; font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; } a { color: #00B7FF; }