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) に登壇したときのスライドです。

Takashi Shinohara

July 25, 2020
Tweet

More Decks by Takashi Shinohara

Other Decks in Programming

Transcript

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

    View Slide

  2. 自己紹介
    Name 篠原敬志 (Takashi Shinohara)
    Company アバナード株式会社 シニアコンサルタント
    Award Microsoft MVP for Office Development (2018-)
    Twitter @karamem0
    Facebook t.shinohara.56
    Blog https://blog.karamem0.jp

    View Slide

  3. Japan M365 Dev User Group 勉強会開催します!

    View Slide

  4. 本セッションについて
    de:code 2020 の MVP パーソナル スポンサーとして提供したサンプル コードにつ
    いて前提の話から含めて解説します。
    サンプル コードと説明は GitHub から入手可能です。
    https://github.com/karamem0/decode2020

    View Slide

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

    View Slide

  6. 認証/承認を提供するサービス

    View Slide

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

    View Slide

  8. 認証/承認のエンドポイント
    種類 エンドポイント
    ログイン /.auth/login/
    ログアウト /.auth/logout
    トークンの取得 (*) /.auth/me
    トークンの更新 (*) /.auth/refresh
    (*) トークン ストアが有効である必要があります

    View Slide

  9. DEMO
    Azure AD の認証/承認を有効にする

    View Slide

  10. Azure AD による Web アプリのセキュリティ保護
    Azure AD をプロバイダーとして Web アプリをセキュリティ保護する場合、Azure
    AD に新しいアプリを作成が作成され、OpenID Connect による認証が行われます。
    認証後の各種トークンは HTTP 要求ヘッダーまたは "/.auth/me" へのリクエストに
    よって取得できます。このトークンを使うことで、Microsoft Graph をはじめとし
    たさまざまなサービスに追加のアクセス許可の要求を行うことができます。

    View Slide

  11. トークンの種類
    種類 説明
    ID トークン ユーザーの認証情報を含むトークン
    アクセス トークン 特定のリソースへのアクセス許可を含むトークン
    リフレッシュ トークン アクセス トークンを更新するためのトークン

    View Slide

  12. JWT (Json Web Token)
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNT
    E2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
    Base64 エンコードされたヘッダー
    {
    "alg": "HS256",
    "typ": "JWT"
    }
    Base64 エンコードされたペイロード
    {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
    }
    ヘッダーとペイロードからなる署名

    View Slide

  13. アクセス トークンを取得する
    OpenID Connect による認証のときに取得されるアクセス トークンには Microsoft
    Graph などのサービスへのアクセス許可は含まれません。Microsoft Graph を使う
    ためにはアクセス トークンを取得しなおす必要があります。
    今回のサンプル コードではリフレッシュ トークンを使ってアクセス トークンを更
    新する方法を使います。アクセス トークンを取得する方法は他にも存在します。

    View Slide

  14. DEMO
    サンプル コードを動かしてみる

    View Slide

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

    View Slide

  16. ありがとうございました

    View Slide