SlideShare a Scribd company logo
1 of 27
msal.js v2を触る
2020.08 .NETラボ
誰?
@DevTakas
Angular / Azure / .NET Core / Azure DevOps / Microsoft Graph
Microsoft MVP Office Development(新人)
誰?
ブログやってます
http://takasdev.hatenablog.com/
「はまったりひらめいたり…とか…」
おしながき
1. msal.jsとは
2. v2になって変わったこと
3. PKCEについて
4. msal.js v2の使い方
5. まとめ
6. 参考文献
(そもそも)msal.jsとは
• Micro Soft Authentication Library
• Azure ADアプリケーションで保護されたWeb APIリソースなど
にアクセスするためのトークン取得支援を行うライブラリ
• Js以外にも.NET/Java等の様々な言語のライブラリが存在
• AzureAD v2.0エンドポイント対応ライブラリ
• V1.0対応エンドポイント対応ライブラリはADAL
(そもそも)msal.jsとは
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-auth-code-flow より抜粋
V2のリリース
• 2020年7月20日に2.0.0リリース
• 現在(2020年8月22日)は2.0.2
• Azure AD B2Cにはまだ使えないらしい
• 2.1.0の実装予定の機能なんかももう予告されている
• https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser
V2になって変わったこと
- 構成の変化
https://github.com/AzureAD/microsoft-authentication-library-for-js より抜粋
msal-core
V2になって変わったこと
-機能面
• いくつかのインタフェース変更
• PublicClientApplicationへの変更等…(v2の使い方で紹介)
• PKCE(ピクシー)に対応
PKCE
- Implicit Flowの問題点
• Proof Key for Code Exchange
• AngularやVueといったSPA構成でよく使用される
「暗黙的な許可フロー(Implicit Flow)」
• Implicit Flowには認可コード横取り攻撃が可能な問題が存在
• Implicit Flowは認可コードを用いることで認証なしに
アクセストークンを取得するフロー
• Implicit Flowは認可コードを用いてアクセストークンを取得する。
悪意のあるアプリケーションは認可コードを横取りすることで
認証なしにアクセストークンを取得することができるようになる
PKCE
- Implicit Flowの問題点
認可コード合って
るしおk
PKCE
- 改善内容
• code_verifier を使用する
1. 認証時
• 下記を付与した通信を行い認可コード取得
• 「code_verifierを変換した値(code_challenge)」
• 「変換方法(code_challenge_method)」
2. アクセストークン取得時
• 「code_verifier」を付与した通信を行う
• 認可サーバー上で下記を実施し検証を行う。
• 1.で送付されたcode_challenge_methodで、送付されたcode_verifierを変換
• code_challengeと一致するか検証
PKCE
- Implicit Flowの問題点
code_verifier
code_challenge_method
code_challenge
code_verifier
code_challenge_method
変換
比較
code_challenge
code_verifier
code_challenge_method
変換
PKCE
- Implicit Flowの問題点
code_verifierは?
code_challenge / code_challenge_method
Browserインスタンスにしか存在しない
PKCE
-使用されているVerifierについて(msal.js)
• initializeAuthorizationCodeRequestがエントリ
• ここから追いかければCodeVerifierなどの生成手順がわかる
• https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/84a5f5aed0ad1626e6d918fb2ef0393837aac3c6/lib/msal-browser/src/app/PublicClientApplication.ts#L733
• より具体的にはPkceGenerator
• 32バイト長のUTF-8ランダム配列
• Code Challenge
• SubtleCrypt.Digestを使用しSHA256ハッシュ変換
• SubtleCrypt.Digestは↓参照
• https://developer.mozilla.org/ja/docs/Web/API/SubtleCrypto/digest
• RFC7636 Section-4.1のドキュメント準拠な設定
• sessionStorageなどに保存している気配はないので
インスタンスのライフサイクルと同等?
PKCE
-使用されているVerifierについて(msal.js)
code_challenge=-sv8RwaJ1xym7g-lYKudrBLa1Lvc3Ufn6enfhdpXXk8&code_challenge_method=S256
PKCE
-使用されているVerifierについて
• あくまで「認可コード要求」と「トークン要求」の
クライアントが一致しているかを検証するもの
• 認可コード要求時点から攻撃されている状態だと
対処できないので注意
• 攻撃用サイトでログイン要求されるとか…
• redirect_url/CORSなど基本の設定はしっかり行っておく
msal.js v2の使い方
- Azure AD アプリケーションの設定
• 認可サーバー(Azure AD)でコード検証フローが発生するので
専用の設定を行う必要がある
msal.js v2の使い方
- コードの実装
• 基本の流れはv1のときと同じ
1. クライアントインスタンスの生成
2. ログイン
3. アカウント情報の取得
4. アクセストークンの取得
msal.js v2の使い方
- 1.クライアントインスタンスの生成
• PublicClientApplication インスタンスの生成
• V1同様生成時に使用するADアプリの設定情報が必要
• アプリケーションクライアントID
• 特定テナントの指定(任意)
• リダイレクトURI(任意)
const _client = new PublicClientApplication({
auth: {
clientId: ‘xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx’,
authority: ‘https://login.microsoftonline.com/<テナントID>/’,
redirectUri: ‘<リダイレクトURI>’
}
})
msal.js v2の使い方
- 1.クライアントインスタンスの生成(設定内容)
export declare type Configuration = {
auth?: {
clientId: string – AzureADアプリケーションID(必須)
authority?: string – 特定のテナントを使用したい場合に使用
knownAuthorities?: Array<string> - 有効URI配列(B2Cで使用)
cloudDiscoveryMetadata?: string – クラウド検出文字列※1
redirectUri?: string – 認証画面後戻ってくるURL。AzureADアプリに設定されているURLでないといけない
postLogoutRedirectUri?: string – ログアウト後遷移するURL
navigateToLoginRequestUrl?: boolean – リダイレクトページを固定させたいかどうかの指定
};
cache?: {
cacheLocation?: string – トークン格納ストレージの選択 ‘sessionStorage/localStorage’
storeAuthStateInCookie?: boolean – 認証状態のCookie格納
};
system?: {
loggerOptions?: LoggerOptions – ロギング設定※3
networkClient?: INetworkModule – ネットワークうインタフェースの実装(詳細調査中)
windowHashTimeout?: number – ポップアップの待機時間の変更
iframeHashTimeout?: number – iFrameの待機時間の変更
loadFrameTimeout?: number – Frameロード待機時間の変更
};
};
※1:詳細はhttps://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/performance.md 参照
※2: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/09243eb985138d9c39194c3eb84b28cf7a8d8f25/lib/msal-browser/src/request/RedirectRequest.ts 参照
※3: https://docs.microsoft.com/ja-jp/azure/active-directory/develop/msal-logging?tabs=javascript 参照
msal.js v2の使い方
- 2.ログイン
• 1.で作成したクライアントを使用してログインする
• これもv1時代と流れは大きくは変わらない
• ポップアップかリダイレクト
• リダイレクトの場合はcallbackを引っ掛ける仕掛けが必要
• V1と違ってcallbackがpromise(handleRedirectPromise)になっている
• ポップアップはPromise返却されるので、awaitかthenで引っ掛ける
• スコープの指定やリダイレクトURIの指定など…
//リダイレクト:asyncなFunctionの中で実行した場合。結果はresに格納される
const res = await this._client.handleRedirectPromise();
this._client.loginRedirect({ scopes: [‘user.read’]});
// ポップアップ:asyncなFunctionの中で実行した場合。結果はresに格納される
const res = await this._client.loginPopup({ scopes: [‘user.read’]});
msal.js v2の使い方
- 3.アカウントの取得
• v1とログインアカウントの取得の仕方が大きく違う
• v1はユーザー取得インターフェースがクライアントにあったが
v2からは消されている。
• ログイン時に返却される情報から抜いてこないといけなくなった
//リダイレクト:asyncなFunctionの中で実行した場合。結果はresに格納されるのでそこから取得
const res = await this._client.handleRedirectPromise();
const account = res.account;
// ポップアップ:asyncなFunctionの中で実行した場合。結果はresに格納されるのでそこから取得
const res = await this._client.loginPopup({ scopes: [‘user.read’]});
const account = res.account;
msal.js v2の使い方
- 4.アクセストークンの取得
• v1と大きく変わらない
• acquireToken(Silent/Redirect/Popup)で取得する
• Silent/Popupは例のごとくPromiseで値返却
• RedirectはhandleRedirectPromiseで
//リダイレクト:asyncなFunctionの中で実行した場合。結果はresに格納されるのでそこから取得
const res = await this._client.handleRedirectPromise();
const accessToken = res.accessToken;
this._client.acquireTokenRedirect({scopes:[‘user.read’]})
// ポップアップ:asyncなFunctionの中で実行した場合。結果はresに格納されるのでそこから取得
const res = this._client.acquireTokenSilent({scopes:[‘user.read’]})
const accessToken = res.accessToken;
msal.js v2の使い方
- コードの実装
• msal.js を使用したv1との違いを実際に見てみる
まとめ
• msal.js v2がリリースされた
• v2の大きな変更はPKCEへの対応が一番大きい
• セキュリティ上、PKCE対応を行っておくほうが良い
• はよv2に移行しようね
• v2の使い方は大きくは変わらない
• はよv2に(ry
参考文献
• AzureAD/microsoft-authentication-library-for-js
• https://github.com/AzureAD/microsoft-authentication-library-for-js
• Microsoft ID プラットフォームの認証ライブラリ
• https://docs.microsoft.com/ja-jp/azure/active-directory/develop/reference-v2-libraries
• Microsoft ID プラットフォームと暗黙的な許可のフロー
• https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-implicit-grant-flow
• RFC6749 - 4.1.2. Authorization Response
• https://tools.ietf.org/html/rfc6749#section-4.1.2
• RFC7636
• https://tools.ietf.org/html/rfc7636
• OAuth 2.0 Security Best Current Practice
• https://tools.ietf.org/html/draft-ietf-oauth-security-topics-14#section-2.1.2
• PKCE で防げる「認可コード横取り攻撃」とはどのような攻撃か
• https://qiita.com/samiii/items/9574d1e237228c718cd6
• Auth0を利用してOAuth 2.0のPKCEを理解する
• https://dev.classmethod.jp/articles/oauth-2-0-pkce-by-auth0/

More Related Content

What's hot

What's hot (20)

プロトコルから見るID連携
プロトコルから見るID連携プロトコルから見るID連携
プロトコルから見るID連携
 
適切な Azure AD 認証方式の選択の決め手
適切な Azure AD 認証方式の選択の決め手適切な Azure AD 認証方式の選択の決め手
適切な Azure AD 認証方式の選択の決め手
 
Azure active directory によるデバイス管理の種類とトラブルシュート事例について
Azure active directory によるデバイス管理の種類とトラブルシュート事例についてAzure active directory によるデバイス管理の種類とトラブルシュート事例について
Azure active directory によるデバイス管理の種類とトラブルシュート事例について
 
詳説!Azure AD 条件付きアクセス - 動作の仕組みを理解する編
詳説!Azure AD 条件付きアクセス - 動作の仕組みを理解する編詳説!Azure AD 条件付きアクセス - 動作の仕組みを理解する編
詳説!Azure AD 条件付きアクセス - 動作の仕組みを理解する編
 
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
 
ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎
 
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
GoodBye AD FS - Azure Active Directory Only の認証方式へ切り替えよう!
 
IDaaS を正しく活用するための認証基盤設計 ~Azure Active Directory の構成パターン詳細~
IDaaS を正しく活用するための認証基盤設計 ~Azure Active Directory の構成パターン詳細~IDaaS を正しく活用するための認証基盤設計 ~Azure Active Directory の構成パターン詳細~
IDaaS を正しく活用するための認証基盤設計 ~Azure Active Directory の構成パターン詳細~
 
Azure Active Directory 利用開始への第一歩
Azure Active Directory 利用開始への第一歩Azure Active Directory 利用開始への第一歩
Azure Active Directory 利用開始への第一歩
 
現実的な「WordPress on Azure App Service」 クイックスタート
現実的な「WordPress on Azure App Service」 クイックスタート現実的な「WordPress on Azure App Service」 クイックスタート
現実的な「WordPress on Azure App Service」 クイックスタート
 
Azure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれAzure ADアプリケーションを使用した認証のあれやこれ
Azure ADアプリケーションを使用した認証のあれやこれ
 
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法
 
MuleSoft Anypoint Platformのコンセプトとサービス
MuleSoft Anypoint PlatformのコンセプトとサービスMuleSoft Anypoint Platformのコンセプトとサービス
MuleSoft Anypoint Platformのコンセプトとサービス
 
Azure load testingを利用したパフォーマンステスト
Azure load testingを利用したパフォーマンステストAzure load testingを利用したパフォーマンステスト
Azure load testingを利用したパフォーマンステスト
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ 【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
 
失敗しない条件付きアクセス Season2
失敗しない条件付きアクセス Season2失敗しない条件付きアクセス Season2
失敗しない条件付きアクセス Season2
 
Azure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロAzure Cosmos DB のキホンと使いドコロ
Azure Cosmos DB のキホンと使いドコロ
 
PCI DSSにおける認証認可 インフラ編
PCI DSSにおける認証認可 インフラ編PCI DSSにおける認証認可 インフラ編
PCI DSSにおける認証認可 インフラ編
 
MS Interact 2019 - Azureサービスで実現するセキュリティ全体像
MS Interact 2019 - Azureサービスで実現するセキュリティ全体像 MS Interact 2019 - Azureサービスで実現するセキュリティ全体像
MS Interact 2019 - Azureサービスで実現するセキュリティ全体像
 

Similar to msal.js v2を触る

開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
Suguru Ito
 
Microsoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondockerMicrosoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondocker
Tsukasa Kato
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
Microsoft
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3
科 黄
 
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
日本マイクロソフト株式会社
 

Similar to msal.js v2を触る (20)

G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントG tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Microsoft Azure の概要と最近のアップデート(2016年6月25日)
Microsoft Azure の概要と最近のアップデート(2016年6月25日)Microsoft Azure の概要と最近のアップデート(2016年6月25日)
Microsoft Azure の概要と最近のアップデート(2016年6月25日)
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
俺とKubernetes
俺とKubernetes俺とKubernetes
俺とKubernetes
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
 
Microsoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondockerMicrosoft azureで実装するwebserviceondocker
Microsoft azureで実装するwebserviceondocker
 
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
.NET Core と Docker コンテナー、そして Azure を使用したマイクロサービスのアーキテクチャ
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発
 
Azure IaaS update (2018年6月~7月 発表版)
Azure IaaS update (2018年6月~7月 発表版) Azure IaaS update (2018年6月~7月 発表版)
Azure IaaS update (2018年6月~7月 発表版)
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 
[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション[MW11] OSS on Azure で構築する ウェブアプリケーション
[MW11] OSS on Azure で構築する ウェブアプリケーション
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3
 
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
M20_Azure SQL Database 最新アップデートをまとめてキャッチアップ [Microsoft Japan Digital Days]
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
 

More from DevTakas

More from DevTakas (17)

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

msal.js v2を触る