Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure AD でセキュリティ保護された Web アプリケーションで Microsoft Graph を使用する / Using Microsoft Graph in Azure AD secured web applications

Azure AD でセキュリティ保護された Web アプリケーションで Microsoft Graph を使用する / Using Microsoft Graph in Azure AD secured web applications

.NETラボ 勉強会 2020 年 7 月 (https://dotnetlab.connpass.com/event/181076) で登壇したときのスライドです。

9cdd446fb259ec93e52d4388f60197f8?s=128

Takashi Shinohara

July 25, 2020
Tweet

Transcript

  1. Azure AD でセキュリティ保護された Web アプリケー ションで Microsoft Graph を使用する 2020/7/25

    篠原 敬志 (@karamem0)
  2. 自己紹介 Name 篠原敬志 (Takashi Shinohara) Company アバナード株式会社 シニアコンサルタント Award Microsoft

    MVP for Office Development (2018-) Twitter @karamem0 Facebook t.shinohara.56 Blog https://blog.karamem0.jp
  3. Japan M365 Dev User Group 勉強会開催します!

  4. 本セッションについて de:code 2020 の MVP パーソナル スポンサーとして提供したサンプル コードにつ いて前提の話から含めて解説します。 サンプル

    コードと説明は GitHub から入手可能です。 https://github.com/karamem0/decode2020
  5. Azure の Web アプリをセキュリティ保護する Azure App Service および Azure Functions

    ではコーディングなしで認証と承認を有 効にする組み込みの機能があります。 認証を実装するためにはセキュリティに対する深い理解が必要となりますが、この 機能を使うことで、開発者はその労力を割くことなく、ビジネス価値を提供するこ とに集中することはできます。 この機能は "Easy Auth" と呼ばれることがあります。
  6. 認証/承認を提供するサービス

  7. 認証/承認のアーキテクチャ (Windows) https://docs.microsoft.com/ja-jp/azure/app-service/overview-authentication-authorization

  8. 認証/承認のエンドポイント 種類 エンドポイント ログイン /.auth/login/<provider> ログアウト /.auth/logout トークンの取得 (*) /.auth/me

    トークンの更新 (*) /.auth/refresh (*) トークン ストアが有効である必要があります
  9. DEMO Azure AD の認証/承認を有効にする

  10. Azure AD による Web アプリのセキュリティ保護 Azure AD をプロバイダーとして Web アプリをセキュリティ保護する場合、Azure

    AD に新しいアプリを作成が作成され、OpenID Connect による認証が行われます。 認証後の各種トークンは HTTP 要求ヘッダーまたは "/.auth/me" へのリクエストに よって取得できます。このトークンを使うことで、Microsoft Graph をはじめとし たさまざまなサービスに追加のアクセス許可の要求を行うことができます。
  11. トークンの種類 種類 説明 ID トークン ユーザーの認証情報を含むトークン アクセス トークン 特定のリソースへのアクセス許可を含むトークン リフレッシュ

    トークン アクセス トークンを更新するためのトークン
  12. JWT (Json Web Token) eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNT E2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c Base64 エンコードされたヘッダー { "alg":

    "HS256", "typ": "JWT" } Base64 エンコードされたペイロード { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } ヘッダーとペイロードからなる署名
  13. アクセス トークンを取得する OpenID Connect による認証のときに取得されるアクセス トークンには Microsoft Graph などのサービスへのアクセス許可は含まれません。Microsoft Graph

    を使う ためにはアクセス トークンを取得しなおす必要があります。 今回のサンプル コードではリフレッシュ トークンを使ってアクセス トークンを更 新する方法を使います。アクセス トークンを取得する方法は他にも存在します。
  14. DEMO サンプル コードを動かしてみる

  15. まとめ Azure の Web アプリケーションは Azure AD で簡単に認証をかけられます。 Azure AD

    の認証情報を使って Microsoft Graph をはじめとした API にアクセスする ことが可能です。Microsoft Graph を使うことで組織のさまざまなリソースを操作 することができ、エンタープライズ アプリケーションの構築を容易にします。
  16. ありがとうございました