トピック1、ADatum Corporation
既存の環境
アプリケーションアーキテクチャ
電子請求書は、シングルページアプリケーション(SPA)と、請求書の管理および処理機能を提供するバックエンドWebサービスで構成されています。
E-invoicingは、各請求操作のすべての詳細をバックエンドクラウドデータベースに保存します。電子請求書はPDF形式の請求書を生成し、生成後にPDFをダウンロードする機能をユーザーに提供します。各請求書には、invoiceidという名前の一意の識別子があります。
ユーザーは、E-invoicingにサインインしてから、Webブラウザーの複数のタブでE-invoicingを開いて、アプリケーションのさまざまな部分を同時に使用できるという共通のワークフローを持っています。
セキュリティアーキテクチャ
ADatumは、可能な限り最小特権の原則を使用します。ADatumは、常に最新のライブラリと統合エンドポイントを使用します。
要件
ビジネス目標
ADatumは、E-invoicing、Azure Active Directory(Azure AD)、およびMicrosoft Graphを統合して、顧客がE-invoicing内から直接Microsoft Office365サービスを利用できるようにしたいと考えています。
計画された変更
ADatumは、E-invoicingに次の機能を追加する予定です。
現在サインインしているユーザーに代わって、生成された請求書を顧客に電子メールで送信します。システムによって生成されたすべての電子メールには、請求書が含まれます。
E-invoicingアプリケーションを離れることなく、ブラウザで可能な限り多くの操作を実行します。
Azure ADを使用して、ID、認証、および承認を管理します。
特定の請求書を含むすべての電子メールを表示します。
技術要件
ADatumは、計画された電子請求機能に関する次の技術要件を識別します。
Office365に対するE-invoicingによって実行されるすべての操作がユーザーによって開始されていることを確認します。アプリケーションがユーザーに代わってOffice365データに初めてアクセスしようとするときに、ユーザーがE-invoicingにOffice365データへのアクセスを許可することを要求します。
支払い期日の前に、スケジュールされたリマインダーを顧客に送信します。管理ユーザーインターフェイスを作成して、スケジュールされたリマインダーを有効にします。
指定されたメールボックスに到着するベンダーからの電子メールを検出するために、MicrosoftGraphの変更通知を実装します。
シングルサインオン(SSO)を実装し、ブラウザタブ全体のログインプロンプトを最小限に抑えます。
Azure ADを使用して、バックエンドWebサービスへの安全なアクセスを確保します。
すべてのソリューションが安全なコーディング手法を使用していることを確認してください。
バックエンドセキュリティの計画された変更
ADatumは、カスタムアプリケーションロールを使用して、ユーザー機能をユーザーに付与されたアクセス許可にマップしたいと考えています。
電子請求には、ユーザーがバックエンドAPIの呼び出しを許可する必要があるかどうかを動的に識別する内部ロジックがあります。
SSOJavaScriptスクリプト
次のコードを使用して、Microsoft認証ライブラリ(MSAL)でSSOを実装することを計画しています。

アクセストークンJavaScriptスクリプト
アクセストークンを取得するには、次のJavaScriptコードがあります。

通知JSONの変更
ベンダーの電子メールを検出するためにMicrosoftGraphサービスによって送信される次のJSONメッセージがあります。
