演習 - 認証プロバイダーとアクセスを構成する

完了

あなたのショッピング リスト Web アプリでは、一部のルートへのアクセスをセキュリティで保護し、特定の認証プロバイダーを無効にする必要があります。 この演習では、Web アプリのルーティング構成を更新して、その結果を実現します。

この演習では、次の手順を行います。

  1. ルーティング構成に規則を追加して、一部の認証プロバイダーを無効にします。
  2. 認証されたユーザーだけがアクセスできるように、製品リストをセキュリティで保護します。
  3. 更新されたアプリをデプロイします。
  4. 制限が有効であることをテストします。

認証プロバイダーを無効にする

アプリのルーティング構成を更新して、Microsoft Entra 認証プロバイダーを無効にします。

  1. Visual Studio Code でプロジェクトを開きます。

  2. 次のファイルを開きます。

    angular-app/staticwebapp.config.json
    
    react-app/staticwebapp.config.json
    
    svelte-app/staticwebapp.config.json
    
    vue-app/staticwebapp.config.json
    
  3. JSON オブジェクトのルートに、次のルーティング構成を追加します。

    "routes": [
      {
        "route": "/.auth/login/aad",
        "statusCode": 404
      }
    ]
    

    次のルーティング規則を追加して、ユーザーが Microsoft Entra 認証プロバイダーにアクセスできないようにします。

製品リストへのアクセスをセキュリティで保護する

次に、認証されたものだけが API にアクセスできるように、製品リストをセキュリティで保護する必要があります。 そのために、staticwebapp.config.json 構成ファイル内に別のルーティング規則を追加します。

  1. この規則をroutes 配列上部に追加します。

    {
      "route": "/api/products/*",
      "allowedRoles": ["authenticated"]
    },
    
  2. 完成した staticwebapp.config.json は次のようになります。

    {
      "routes": [
        {
          "route": "/api/products/*",
          "allowedRoles": ["authenticated"]
        },
        {
          "route": "/.auth/login/aad",
          "statusCode": 404
        }
      ],
      "navigationFallback": {
        "rewrite": "/index.html",
        "exclude": ["*.{css,scss,js,png,gif,ico,jpg,svg}"]
      }
    }
    

変更をデプロイする

この構成の結果をテストする前に、アプリを再デプロイします。

  1. Visual Studio Code で、F1 キーを押してコマンド パレットを開きます。

  2. Git: Commit All」と入力して選択します。

  3. コミット メッセージとして「Secure access」と入力し、Enter キーを押します。

  4. F1 キーを押して、コマンド パレットを開きます。

  5. Git: Push」と入力して選択し、Enterキーを押します。

変更をプッシュしたら、ビルドおよびデプロイ プロセスが実行されるまで待ちます。 その後、デプロイされたアプリ上に変更が表示されます。

新しい制限をテストする

アプリを再デプロイしたら、新しい制限が有効であることをテストできます。

  1. Visual Studio Code のエクスプローラー ウィンドウで、[静的 Web アプリ] セクションに戻り、my-static-web-app-and-authn を右クリックして [サイトの参照] を選択し、ブラウザーでアプリを表示します。

  2. ログインしていない場合は、製品リストではなく、未承認メッセージが表示されます。

  3. 認証プロバイダー一覧で [Microsoft Entra ID] を選んでログインします。

    次のような 404 エラー ページが表示されます。

    Static Web Apps 404 エラー ページを示すスクリーンショット。

  4. ブラウザーの戻るボタンを使用して、アプリに戻ります。

  5. 認証プロバイダー リストで GitHub を選択して、ログインします。

  6. GitHub 資格情報を求められた場合は入力し、Azure 承諾ページ上で [同意する] を選択します。

ログインすると、製品リストが表示されます。

次のステップ

おめでとうございます。 これで静的 Web アプリ内に認証ワークフロー全体が実装されました。