SlideShare a Scribd company logo
Azure ADアプリケーションを使用した認証のあれやこれ
ASP.NET Core編
2021.05 .NETラボ
誰?
Takas(@DevTakas)
Angular / Azure / .NET Core / Azure DevOps / Microsoft Graph
Microsoft MVP Office Development
誰?
ブログやってます
http://takasdev.hatenablog.com/
「はまったりひらめいたり…とか…」
おしながき
1. Azure ADアプリケーションを使用した認証について
2. 認証の種類と使い分け
3. 認証フローを助けてくれるライブラリ
4. Demo & Tips
5. まとめ
1. Azure ADアプリケーションを使用した認証について
- Azure ADアプリケーションとは
• Azure ADアプリケーションを介してID認証を行うことが可能
• M365ログイン時のユーザーID/パスワード/2FAで認証可能
• ユーザー管理や認証設計の多くが不要になるのが個人的には嬉しい
• 認証にはApplicationID/TenantID/Scopeを使用して認証を行う
• Secretも使用することはある
• 現在v1/v2エンドポイントが提供されている
• v1は非推奨となっている
• jsで認証を行う話はM365VMで話したので今回はASP.NETCore
1. Azure ADアプリケーションを使用した認証について
- バージョンの違い
• v1はAzure Active Directoryベース
• 組織アカウントのみのサポート
• 認証に使用するライブラリはADALと呼ばれる
• v2はMicrosoft IDプラットフォームベース
• 組織/個人/B2Cアカウントをサポートしている
• 認証に使用するライブラリはMSALと呼ばれる
保護されたアプリケーション
保護されたアプリケーション
1. Azure ADアプリケーションを使用した認証について
- API Permission
Azure AD
アプリケーション
Graphリソース
他Azure AD
アプリケーション
アクセス許可
①
保護されたアプリケーション
保護されたアプリケーション
1. Azure ADアプリケーションを使用した認証について
- API Permission
Azure AD
アプリケーション
Graphリソース
他Azure AD
アプリケーション
トークン要求
②
保護されたアプリケーション
保護されたアプリケーション
1. Azure ADアプリケーションを使用した認証について
- API Permission
Azure AD
アプリケーション
Graphリソース
他Azure AD
アプリケーション
保護アプリにアクセス可能に
③
2.認証の種類と使い分け
-OAuth/Open ID Connectのフロー
• M365のユーザーID/PASSを使用し保護リソースにアクセスする際に
• アプリ使用ユーザーがM365のログインをする必要がある
• 逆にいうとシークレットなどは不要。基本Client Idのみで良い。
• ユーザーに紐づく情報の取得を行いたい場合はこれを使う
• Graphの強力な権限をこれで取得するのはおすすめできない
2.認証の種類と使い分け
-OAuth/Open ID Connectのフロー
2.認証の種類と使い分け
-資格情報のフロー
• ユーザーID/パスワード入力を介さない認証
• Azure AD で発行したシークレットを使用する
• どちらかというとWebAPI(バックエンド)で認証が必要な際に使用
• 「アプリケーションのアクセス許可」扱い
• 比較的強力な権限が必要な場合にこれを使うことが多い
• AD内のメールやイベント情報の全閲覧権限など…
2.認証の種類と使い分け
-資格情報のフロー
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow
2.認証の種類と使い分け
-On-Behalf-Of
• WebAPIから別のWebAPIを呼び出すような時に使用する
• WebAPIアクセス時のアクセストークン情報を引き回したい時に使用
• 例えば保護されたWebAPIでアクセスユーザーのGraphにアクセスしたいときなど
• アクセス元のAzureADで再認証が行われるためシークレットが必要となる
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow
3.認証フローを助けてくれるライブラリ
-なぜライブラリが必要なのか
• 先の説明の通り認証のフローはややこしい
• これに加えてセキュリティ標準を満たすための様々なルールが存在
• stateとかPKCEのchalengeとか…
• リダイレクトなど含むので素でやろうとすると処理が複雑になる
• ライブラリはそれらの要件を満たす処理をよしなにしてくれる
3. ASP.NETの保護を助けてくれるライブラリ
-Microsoft.AspNetCore.Authentication.AzureAD.UI
• 一昔まえのWebAPIのAzureAD保護ライブラリ
• V1エンドポイントで保護する場合はこれ?
• 昨今あまり使わない。
• ただVisualStudioのテンプレートはいまだにこっちみたい…
3. ASP.NETの保護を助けてくれるライブラリ
-Microsoft.Identity.Web
• Microsoftから提供されるASP.NET Coreライブラリ
• MicrosoftIDプラットフォームと統合されるWebアプリ/WebAPIの
認証/承認サポートを簡略化してくれる
• 「MicrosoftIDプラットフォーム」からわかる通りv2エンドポイント想定
• WebAPIの保護をこれを使用して行う事が可能
• dotnetコマンドでプロジェクトテンプレートを使用することが可能
3. ASP.NETの保護を助けてくれるライブラリ
-Microsoft.Identity.Web
• サポートされるアプリケーションの種類
• WebAPI
• MVC WebApp
• Razor WebApp
• Blazor Server
• Blazor WebAssembly
3.認証フローを助けてくれるライブラリ
-Microsoft.Identity.Client
• MSALにあたる。
• ユーザー認証やシークレットを使用した認証を利用してアクセストークンを取得したい場合に使用
• ユーザー認証を伴うもの:PublicClientApplicationBuilder
• シークレット認証を伴うもの:ConfidentialClientApplicationBuilder
4.Demo&Tips
-アプリケーションからGraph/WebAPIデータにアクセスする
Front
Console
Application
MS Graph
Original
Web API
AD App1
AD App2
User.read
データ取得
ユーザー認証
4.Demo&Tips
-AzureFunctionsからGraph/WebAPIデータにアクセスする
Functions
MS Graph
Original
Web API
AD App1
AD App2
User.read
データ取得
Secret認証
4.Demo&Tips
-OBHFでGraph/WebAPIデータにアクセスする
Original
Web API1
MS Graph
Original
Web API2
AD App1
AD App2
User.read
データ取得
ユーザー認証
Front
Console
Application
まとめ
• ASP.NET CoreのアプリケーションはMicrosoft ID プラット
フォームで保護できる
• Microsoft IDプラットフォームでASP.NETアプリを
保護したい場合はMicrosoft.Identity.Webが鉄板
• .NETでMicrosoft IDプラットフォームを利用した
認証を行いたい場合はMicrosoft.Identity.Client
• .NETでも気軽に認証と承認、保護が行えるので活用しよう
参考ページ
• Microsoft Identity Web 認証ライブラリ
• https://docs.microsoft.com/ja-jp/azure/active-directory/develop/microsoft-identity-web
• AzureAD/microsoft-identity-web
• https://github.com/AzureAD/microsoft-identity-web/wiki
• Microsoft ID プラットフォームと OAuth 2.0 認証コード フロー
• https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-auth-code-flow
• Microsoft ID プラットフォームと OAuth 2.0 クライアント資格情報フロー
• https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow
• Microsoft ID プラットフォームと OAuth2.0 On-Behalf-Of フロー
• https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow

More Related Content

PPTX
Azure ADアプリケーションを使用した認証のあれやこれ
PDF
OAuth2.0によるWeb APIの保護
PDF
Keycloak拡張入門
PDF
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
PPTX
Azure AD による Web API の 保護
PDF
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
PPTX
AKS と ACI を組み合わせて使ってみた
PDF
KeycloakのDevice Flow、CIBAについて
Azure ADアプリケーションを使用した認証のあれやこれ
OAuth2.0によるWeb APIの保護
Keycloak拡張入門
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
Azure AD による Web API の 保護
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
AKS と ACI を組み合わせて使ってみた
KeycloakのDevice Flow、CIBAについて

What's hot (20)

PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
PDF
Kongの概要と導入事例
PDF
認証の課題とID連携の実装 〜ハンズオン〜
PDF
AWS Systems manager 入門
PDF
Azure Monitor Logで実現するモダンな管理手法
PDF
これからのネイティブアプリにおけるOpenID Connectの活用
PPTX
Azure Api Management 俺的マニュアル 2020年3月版
PPTX
Keycloak入門
PPTX
AAD B2Cでゆるっと真面目に認証しよう【Interact2019】
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
PPTX
Azure API Management 俺的マニュアル
PDF
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
PPTX
Azureの学習にオススメな動画コンテンツまとめ.pptx
PPTX
Spring boot 勉強会
PDF
小さなサービスも契約する時代
PDF
OpenIDConnectを活用したgBizID(法人共通認証基盤)の現状と今後の展望 - OpenID Summit 2020
PDF
Azure ADとIdentity管理
PDF
Windows スクリプトセミナー WMI編 VBScript&WMI
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
Kongの概要と導入事例
認証の課題とID連携の実装 〜ハンズオン〜
AWS Systems manager 入門
Azure Monitor Logで実現するモダンな管理手法
これからのネイティブアプリにおけるOpenID Connectの活用
Azure Api Management 俺的マニュアル 2020年3月版
Keycloak入門
AAD B2Cでゆるっと真面目に認証しよう【Interact2019】
分散トレーシング技術について(Open tracingやjaeger)
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Azure API Management 俺的マニュアル
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
Azureの学習にオススメな動画コンテンツまとめ.pptx
Spring boot 勉強会
小さなサービスも契約する時代
OpenIDConnectを活用したgBizID(法人共通認証基盤)の現状と今後の展望 - OpenID Summit 2020
Azure ADとIdentity管理
Windows スクリプトセミナー WMI編 VBScript&WMI
Ad

Similar to Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編 (20)

PPTX
AzureADの認証で失敗した話
PPTX
Azure AD Application を使用した認証のアレコレ
PPTX
Azure Active Directory 利用開始への第一歩
PPTX
Java EE 7 multi factor authentiaction with Microsoft Azure AD
PPTX
適切な Azure AD 認証方式の選択の決め手
PDF
【de:code 2020】 Apps on Azure AD - アプリケーション連携 WHY と HOW
PDF
VPN・証明書はもう不要? Azure ADによるデバイス認証 at Tech Summit 2018
PPTX
Azure AD の新しいデバイス管理パターンを理解しよう
PPTX
Microsoft Azure のセキュリティ
PDF
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
PPTX
Azure AD の SaaS アプリケーション認証への活用
PDF
[Japan Tech summit 2017] SEC 006
PPTX
詳説!Azure AD 条件付きアクセス - 動作の仕組みを理解する編
PDF
Azure DevOpsとセキュリティ
PDF
msal.jsを使う
PDF
Continuous access evaluation
PPTX
Continuous access evaluation
PDF
Azure AD B2CにIdPを色々と繋いでみる
PPTX
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
PDF
AAD authentication for azure app v0.1.20.0317
AzureADの認証で失敗した話
Azure AD Application を使用した認証のアレコレ
Azure Active Directory 利用開始への第一歩
Java EE 7 multi factor authentiaction with Microsoft Azure AD
適切な Azure AD 認証方式の選択の決め手
【de:code 2020】 Apps on Azure AD - アプリケーション連携 WHY と HOW
VPN・証明書はもう不要? Azure ADによるデバイス認証 at Tech Summit 2018
Azure AD の新しいデバイス管理パターンを理解しよう
Microsoft Azure のセキュリティ
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
Azure AD の SaaS アプリケーション認証への活用
[Japan Tech summit 2017] SEC 006
詳説!Azure AD 条件付きアクセス - 動作の仕組みを理解する編
Azure DevOpsとセキュリティ
msal.jsを使う
Continuous access evaluation
Continuous access evaluation
Azure AD B2CにIdPを色々と繋いでみる
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
AAD authentication for azure app v0.1.20.0317
Ad

More from DevTakas (14)

PPTX
Microsoft Graph Toolkitで手軽にM365フロント開発
PPTX
Azure Artifactsを触ってみよう
PPTX
Azure Web PubSub Serviceを触ってみた
PPTX
Microsoft Graph Toolkitを使ってGraph開発を体験しよう
PPTX
ASP.NET Core WebAPIでODataを使おう
PPTX
Microsoft Graphのことはじめ
PPTX
Azure Event HubsでGraph変更通知を受け取る
PPTX
msal.js v2を触る
PPTX
僕はあなたを監視する(MS Graph Subscriptionのβで公開されたpresencesを使おう!)
PPTX
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
PPTX
Microsoft Graphの変更通知で遊ぶ
PPTX
Microsoft Graphを使ってアプリケーションを作った時の話
PPTX
Microsoft Graphことはじめ クエリパラメータ編
PPTX
Microsoft Graph完全に理解した気がしてた
Microsoft Graph Toolkitで手軽にM365フロント開発
Azure Artifactsを触ってみよう
Azure Web PubSub Serviceを触ってみた
Microsoft Graph Toolkitを使ってGraph開発を体験しよう
ASP.NET Core WebAPIでODataを使おう
Microsoft Graphのことはじめ
Azure Event HubsでGraph変更通知を受け取る
msal.js v2を触る
僕はあなたを監視する(MS Graph Subscriptionのβで公開されたpresencesを使おう!)
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
Microsoft Graphの変更通知で遊ぶ
Microsoft Graphを使ってアプリケーションを作った時の話
Microsoft Graphことはじめ クエリパラメータ編
Microsoft Graph完全に理解した気がしてた

Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編