Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Naohiro Fujie
PDF, PPTX
13,938 views
OAuth2.0によるWeb APIの保護
Japan Web API Community #01 で使った資料です。 OAuth 2.0 の概要と Azure AD を使った API 保護の紹介をしています。
Technology
◦
Read more
22
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 60
2
/ 60
3
/ 60
4
/ 60
5
/ 60
6
/ 60
7
/ 60
8
/ 60
9
/ 60
10
/ 60
11
/ 60
12
/ 60
13
/ 60
14
/ 60
15
/ 60
16
/ 60
17
/ 60
18
/ 60
19
/ 60
20
/ 60
21
/ 60
22
/ 60
23
/ 60
24
/ 60
25
/ 60
26
/ 60
27
/ 60
28
/ 60
29
/ 60
30
/ 60
31
/ 60
32
/ 60
33
/ 60
34
/ 60
35
/ 60
36
/ 60
37
/ 60
38
/ 60
39
/ 60
40
/ 60
41
/ 60
42
/ 60
43
/ 60
44
/ 60
45
/ 60
46
/ 60
47
/ 60
48
/ 60
49
/ 60
50
/ 60
51
/ 60
52
/ 60
53
/ 60
54
/ 60
55
/ 60
56
/ 60
57
/ 60
58
/ 60
59
/ 60
60
/ 60
More Related Content
PDF
OpenID Connect入門
by
土岐 孝平
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
by
Shin Ohno
PPTX
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PDF
インフラエンジニアってなんでしたっけ(仮)
by
Akihiro Kuwano
PDF
なぜOpenID Connectが必要となったのか、その歴史的背景
by
Tatsuo Kudo
PDF
Keycloakの最近のトピック
by
Hitachi, Ltd. OSS Solution Center.
PDF
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
by
Amazon Web Services Japan
OpenID Connect入門
by
土岐 孝平
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
by
Shin Ohno
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
マイクロにしすぎた結果がこれだよ!
by
mosa siru
インフラエンジニアってなんでしたっけ(仮)
by
Akihiro Kuwano
なぜOpenID Connectが必要となったのか、その歴史的背景
by
Tatsuo Kudo
Keycloakの最近のトピック
by
Hitachi, Ltd. OSS Solution Center.
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
by
Amazon Web Services Japan
What's hot
PDF
AWS Black Belt Online Seminar 2017 Amazon Athena
by
Amazon Web Services Japan
PDF
Azure AD B2CにIdPを色々と繋いでみる
by
Naohiro Fujie
PPTX
Amazon EKS への道 ~ EKS 再入門 ~
by
Hideaki Aoyagi
PDF
実装して理解するLINE LoginとOpenID Connect入門
by
Naohiro Fujie
PDF
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
by
Amazon Web Services Japan
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
PDF
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
by
Kazumi OHIRA
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
by
Amazon Web Services Japan
PPTX
NGINXをBFF (Backend for Frontend)として利用した話
by
Hitachi, Ltd. OSS Solution Center.
PDF
Kuberneteの運用を支えるGitOps
by
shunki fujiwara
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
by
Amazon Web Services Japan
PDF
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
by
Amazon Web Services Japan
PDF
OpenIDConnectを活用したgBizID(法人共通認証基盤)の現状と今後の展望 - OpenID Summit 2020
by
OpenID Foundation Japan
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
by
Amazon Web Services Japan
PDF
DevOps with Database on AWS
by
Amazon Web Services Japan
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
by
Amazon Web Services Japan
PDF
MicrosoftのDID/VC実装概要
by
Naohiro Fujie
PPTX
Hybrid Azure AD Join 動作の仕組みを徹底解説
by
Yusuke Kodama
PDF
AWS CognitoからAuth0への移行パターン4つ
by
株式会社スタジオメッシュ
AWS Black Belt Online Seminar 2017 Amazon Athena
by
Amazon Web Services Japan
Azure AD B2CにIdPを色々と繋いでみる
by
Naohiro Fujie
Amazon EKS への道 ~ EKS 再入門 ~
by
Hideaki Aoyagi
実装して理解するLINE LoginとOpenID Connect入門
by
Naohiro Fujie
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
by
Amazon Web Services Japan
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
by
Kazumi OHIRA
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
by
Amazon Web Services Japan
NGINXをBFF (Backend for Frontend)として利用した話
by
Hitachi, Ltd. OSS Solution Center.
Kuberneteの運用を支えるGitOps
by
shunki fujiwara
20190911 AWS Black Belt Online Seminar AWS Batch
by
Amazon Web Services Japan
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
by
Amazon Web Services Japan
OpenIDConnectを活用したgBizID(法人共通認証基盤)の現状と今後の展望 - OpenID Summit 2020
by
OpenID Foundation Japan
AWS Black Belt Online Seminar 2017 Amazon Kinesis
by
Amazon Web Services Japan
DevOps with Database on AWS
by
Amazon Web Services Japan
20220409 AWS BLEA 開発にあたって検討したこと
by
Amazon Web Services Japan
MicrosoftのDID/VC実装概要
by
Naohiro Fujie
Hybrid Azure AD Join 動作の仕組みを徹底解説
by
Yusuke Kodama
AWS CognitoからAuth0への移行パターン4つ
by
株式会社スタジオメッシュ
Viewers also liked
PDF
ID管理/認証システム導入の理想と現実
by
Naohiro Fujie
PPTX
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
by
Ken Morishita
PDF
The Social-Engineer Village at DEF CON 24 : Does Cultural Differences Become ...
by
Tomohisa Ishikawa, CISSP, CSSLP, CISA, CISM, CFE
PDF
AWS Black Belt Online Seminar 2016 AWS Key Management Service
by
Amazon Web Services Japan
KEY
capybara で快適なテスト生活を
by
Ryunosuke SATO
PPTX
HLSについて知っていることを話します
by
Moriyoshi Koizumi
ID管理/認証システム導入の理想と現実
by
Naohiro Fujie
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
by
Ken Morishita
The Social-Engineer Village at DEF CON 24 : Does Cultural Differences Become ...
by
Tomohisa Ishikawa, CISSP, CSSLP, CISA, CISM, CFE
AWS Black Belt Online Seminar 2016 AWS Key Management Service
by
Amazon Web Services Japan
capybara で快適なテスト生活を
by
Ryunosuke SATO
HLSについて知っていることを話します
by
Moriyoshi Koizumi
Similar to OAuth2.0によるWeb APIの保護
PDF
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
by
Tatsuo Kudo
PDF
Azure ADとIdentity管理
by
Naohiro Fujie
PDF
API提供におけるOAuthの役割 #apijp
by
Tatsuo Kudo
PDF
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
by
Tatsuo Kudo
PDF
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
by
Tatsuo Kudo
PDF
株式会社カサレアル 山本による講演「認証・認可におけるKeycloakの活用」の資料
by
CASAREAL, Inc.
PPTX
FAPI and beyond - よりよいセキュリティのために
by
Nat Sakimura
PDF
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
by
Tatsuo Kudo
PDF
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
by
Tatsuo Kudo
PDF
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
by
FinTechLabs.io
PPTX
FIWARE の ID 管理、アクセス制御、API 管理
by
fisuda
PDF
Financial-grade API Hands-on with Authlete
by
Tatsuo Kudo
PDF
FAPI Security について聞いてきた話(2017/08/18 社内勉強会)
by
Yoko TAMADA
PPTX
NGINXでの認可について考える
by
Hitachi, Ltd. OSS Solution Center.
PPTX
.NET ラボ~開発者のためのアイデンティティテクノロジーw/ Windows Phone
by
junichi anno
PDF
オープン API と Authlete のソリューション
by
Tatsuo Kudo
PDF
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
by
Nat Sakimura
PDF
認証技術、デジタルアイデンティティ技術の最新動向
by
Tatsuo Kudo
PPTX
「Windows Phone アプリ と 認証」のまとめ
by
junichi anno
PDF
Microsoft Graph APIを活用した社内アプリケーション開発
by
Yuki Hattori
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
by
Tatsuo Kudo
Azure ADとIdentity管理
by
Naohiro Fujie
API提供におけるOAuthの役割 #apijp
by
Tatsuo Kudo
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
by
Tatsuo Kudo
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
by
Tatsuo Kudo
株式会社カサレアル 山本による講演「認証・認可におけるKeycloakの活用」の資料
by
CASAREAL, Inc.
FAPI and beyond - よりよいセキュリティのために
by
Nat Sakimura
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
by
Tatsuo Kudo
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
by
Tatsuo Kudo
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
by
FinTechLabs.io
FIWARE の ID 管理、アクセス制御、API 管理
by
fisuda
Financial-grade API Hands-on with Authlete
by
Tatsuo Kudo
FAPI Security について聞いてきた話(2017/08/18 社内勉強会)
by
Yoko TAMADA
NGINXでの認可について考える
by
Hitachi, Ltd. OSS Solution Center.
.NET ラボ~開発者のためのアイデンティティテクノロジーw/ Windows Phone
by
junichi anno
オープン API と Authlete のソリューション
by
Tatsuo Kudo
金融 API 時代のセキュリティ: OpenID Financial API (FAPI) WG
by
Nat Sakimura
認証技術、デジタルアイデンティティ技術の最新動向
by
Tatsuo Kudo
「Windows Phone アプリ と 認証」のまとめ
by
junichi anno
Microsoft Graph APIを活用した社内アプリケーション開発
by
Yuki Hattori
More from Naohiro Fujie
PDF
分散型IDと検証可能なアイデンティティ技術概要
by
Naohiro Fujie
PDF
今なら間に合う分散型IDとEntra Verified ID
by
Naohiro Fujie
PDF
LINE Login総復習
by
Naohiro Fujie
PDF
LINEログインの最新アップデートとアプリ連携ウォークスルー
by
Naohiro Fujie
PDF
ざっくり解説 LINE ログイン
by
Naohiro Fujie
PDF
Azure AD x LINE x Auth0
by
Naohiro Fujie
PDF
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
by
Naohiro Fujie
PDF
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
by
Naohiro Fujie
PDF
自己主権型IDと分散型ID
by
Naohiro Fujie
PDF
Azure ADの外部コラボレーションとBYOID
by
Naohiro Fujie
PDF
祝!公式サポート Auth0 + LINE Login
by
Naohiro Fujie
PDF
IDaaSにSign in with Appleをつないでみた
by
Naohiro Fujie
PDF
次世代KYCと自己主権型アイデンティティの動向
by
Naohiro Fujie
PDF
これからの KYC と Identity on Blockchain の動向
by
Naohiro Fujie
PDF
SSIとDIDで何を解決したいのか?(β版)
by
Naohiro Fujie
PDF
教育機関におけるBYOIDとKYC
by
Naohiro Fujie
PDF
組織におけるアイデンティティ管理の基本的な考え方
by
Naohiro Fujie
PDF
コンシューマIDのエンタープライズ領域での活用
by
Naohiro Fujie
PDF
大学等におけるAzure AD B2Cを使用したSNS認証の活用
by
Naohiro Fujie
PDF
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
by
Naohiro Fujie
分散型IDと検証可能なアイデンティティ技術概要
by
Naohiro Fujie
今なら間に合う分散型IDとEntra Verified ID
by
Naohiro Fujie
LINE Login総復習
by
Naohiro Fujie
LINEログインの最新アップデートとアプリ連携ウォークスルー
by
Naohiro Fujie
ざっくり解説 LINE ログイン
by
Naohiro Fujie
Azure AD x LINE x Auth0
by
Naohiro Fujie
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
by
Naohiro Fujie
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
by
Naohiro Fujie
自己主権型IDと分散型ID
by
Naohiro Fujie
Azure ADの外部コラボレーションとBYOID
by
Naohiro Fujie
祝!公式サポート Auth0 + LINE Login
by
Naohiro Fujie
IDaaSにSign in with Appleをつないでみた
by
Naohiro Fujie
次世代KYCと自己主権型アイデンティティの動向
by
Naohiro Fujie
これからの KYC と Identity on Blockchain の動向
by
Naohiro Fujie
SSIとDIDで何を解決したいのか?(β版)
by
Naohiro Fujie
教育機関におけるBYOIDとKYC
by
Naohiro Fujie
組織におけるアイデンティティ管理の基本的な考え方
by
Naohiro Fujie
コンシューマIDのエンタープライズ領域での活用
by
Naohiro Fujie
大学等におけるAzure AD B2Cを使用したSNS認証の活用
by
Naohiro Fujie
Azure AD B2C + LINE 学校や企業における次世代 ID/ メッセージ基盤
by
Naohiro Fujie
OAuth2.0によるWeb APIの保護
1.
OAuth 2.0 による Web
API の保護 2016.12.21 Japan Web API Community #1 Naohiro Fujie @phr_eidentity
2.
自己紹介 • Blog • IdM実験室:http://idmlab.eidentity.jp •
Modules(codeplex) • Generic REST MA for FIM/MIM:https://restmafim.codeplex.com/ • 記事 / 書籍 • 記事 : @IT/企業のID管理/シングルサインオンの新しい選択肢「IDaaS」の活用 他 • 監訳 : クラウド時代の認証基盤 Azure Active Directory 完全解説 • 共著 : クラウド環境におけるアイデンティティ管理ガイドライン • その他 • JNSA アイデンティティ管理WG • OpenID Foundation Japan 教育・翻訳WG、エンタープライズ・アイデンティティWG • Microsoft MVP for Enterprise Mobility(Jan 2010 -) © 2016 Naohiro Fujie 2
3.
Agenda 1. WebAPI に求められるセキュリティ •
利用者から見た課題 • API 提供者から見た課題 2. OAuth 2.0 の概要と課題への対応 3. デモ • Azure AD による WebAPI の保護 • ADAL による API クライアントの実装 © 2016 Naohiro Fujie 3
4.
WebAPI に求められる セキュリティ © 2016
Naohiro Fujie 4
5.
WebAPI 利用・提供時の課題 • いかにして
API クライアントを信頼するか? • 利用者の視点 • API を通して提供される自身のデータを悪用されたくない • API 提供者の視点 • 誰が利用しているのかを明確にしたい(例:課金) • 人の識別 • API クライアントの識別 • 提供するデータを悪用されたくない © 2016 Naohiro Fujie 5 http(s)でインターネット上に 公開しているので、Firewall 等による分離は難しい API クライアントは便利だけ ど、間接的に自身のデータへ アクセスされるのは怖い API の基本は単機能。ユーザ 認証・認可機能を API 毎に開 発したくない 適切な API クライアントから だけアクセスさせたい
6.
利用者から見た課題 © 2016 Naohiro
Fujie 6
7.
従来の Web アプリケーションの利用 •
ユーザ自身によりコンテキストの使い分けが可能 • Facebookの友達からはアプリA、Twitter上のアイデンティティとの紐 づけをされても良いが、反対は嫌 • 情報は二重管理 © 2016 Naohiro Fujie 7 実名、電話番号を登録 ニックネームを登録 Twitterには同僚に知られたく ない性癖を投稿しているので、 実名は登録したくない Facebookの友達は近しい人 ばかりなので、実名や電話番 号を登録しておきたい アプリA ニックネームと電話番号を登録 アプリAにはニックネームと 電話番号を登録したい・・・ 二重管理は面倒
8.
上手く API を使って二重管理をやめたい •
アプリにFacebookとTwitterのIDとパスワードを登録する? © 2016 Naohiro Fujie 8 実名、電話番号を登録 ニックネームを登録 アプリA (APIクラ イアント) ニックネームと 電話番号を使わせたい ユーザのID/PWDを使って Facebookへアクセス 複数のサービスに同じ情報を 登録するのは面倒なので便利 なマッシュアップ・アプリを 使いたい ユーザのID/PWDを使って Twitterへアクセス
9.
パスワード? • アプリ上に個人のパスワードを登録するのは・・・ © 2016
Naohiro Fujie 9 実名、電話番号を登録 ニックネームを登録 アプリA (APIクラ イアント) ニックネームと 電話番号を使わせたい ユーザのID/PWDを使って Facebookへアクセス ユーザのID/PWDを使って Twitterへアクセス パスワードを登録しておくの はかなり嫌・・・ 漏えい?変更時の運用?
10.
コンテキストが混ざる • せっかく分けていたコンテキストがアプリで混ざる © 2016
Naohiro Fujie 10 実名、電話番号を登録 ニックネームを登録 アプリA (APIクラ イアント) ニックネームと 電話番号を使わせたい 電話番号だけが欲しいのに、 実名もとれてしまう? このアプリ上でコンテキスト が混ざってしまう
11.
課題:パスワード、コンテキスト パスワードを使わずに どうやってユーザの代わりに 「望んだ範囲に限定して」 アクセスさせるか? © 2016 Naohiro
Fujie 11 実名、電話番号を登録 ニックネームを登録 アプリA (APIクラ イアント) ニックネームと 電話番号を使わせたい パスワードを登録しておくの はかなり嫌・・・ 漏えい?変更時の運用? このアプリ上でコンテキスト が混ざってしまう
12.
API 提供者から見た課題 © 2016
Naohiro Fujie 12
13.
従来の Web アプリケーションの利用 •
ユーザが直接アプリを利用していたので識別は簡単 • 個々に認証機能や UI 開発が必要 © 2016 Naohiro Fujie 13 直接ログイン 直接ログイン アプリA 直接ログイン 個々に運用・管理。 識別は簡単だが、個々に機能 開発が必要
14.
API を公開してシンプルにしたい • ユーザが直接アプリを利用していたので識別は簡単 •
個々に認証機能や UI 開発が必要 © 2016 Naohiro Fujie 14 アプリA (APIクラ イアント) シンプルな機能・データ提供 だけを API で行いたい 利用 アプリ経由で利用 アプリ経由で利用
15.
アクセス元の特定・真贋が難しい • アクセス元アプリの信頼性の担保が難しい © 2016
Naohiro Fujie 15 アプリA (APIクラ イアント) 誰がどのアプリ経由が使って いるのかわからない? 利用 アプリ経由で利用 アプリ経由で利用このアプリは信頼できるの か? 特定アプリ以外からの アクセスを防げない?
16.
課題:利用元の特定と管理 • どうやって「許可された」 アプリからのみ アクセスを許可 するか? © 2016
Naohiro Fujie 16 アプリA (APIクラ イアント) 利用 アプリ経由で利用 アプリ経由で利用このアプリは信頼できるの か? 特定アプリ以外からの アクセスを防げない? 誰がどのアプリ経由が使って いるのかわからない?
17.
OAuth 2.0 の概要と 課題への対応 ©
2016 Naohiro Fujie 17
18.
OAuth の概要と基本的な考え方 • 目的 •
リソースへのアクセスを安全に認可(委譲)すること • 基本的な考え方 • リソース(API を通して提供される機能やデータ)の持ち主はユーザ である • ユーザの同意に基づき API クライアントに対してリソースへのアクセ ス権限を認可(委譲)する • 認証(検証)された API クライアントに対してのみリソースを提供す る © 2016 Naohiro Fujie 18
19.
構成要素 • 保護対象リソース • API
を経由して提供される機能やデータなどのリソース • リソース・オーナー • 保護対象となるリソースの持ち主(ユーザ) • クライアント • 保護対象リソースへアクセスする主体(API クライアント) • 認可サーバ • 保護対象リソースへのアクセスを認可するためのサーバ © 2016 Naohiro Fujie 19
20.
保護対象リソース (API 、データ) 各構成要素の関係性 © 2016
Naohiro Fujie 20 クライアント 認可サーバ リソース・オーナー 所有 登録 認可 利用 登録 保護 利用
21.
保護対象リソース (API 、データ) 実際の動き(認可コードグラント) © 2016
Naohiro Fujie 21 クライアント 認可サーバ リソース・オーナー 所有 登録 認可 利用 登録 保護 利用 1.利用したい 2.認可要求 3.認可要求 (同意) 4.認可コードの 発行 5.認可コードの 提供 6.認可コードと アクセストークン の交換 8.アクセストー クンの検証 7.アクセストー クンの提示 9.リソースの 提供
22.
シーケンス(認可コードグラント) © 2016 Naohiro
Fujie 22 リソース・オーナー (利用者/UserAgent) クライアント (アプリケーション) 認可サーバ (OAuthサーバ) 保護対象リソース (API・データ) フロー開始 ユーザ認証・同意 認可エンドポイントへリダイレクト (クライアントID、スコープを含む) クライアントへリダイレクト (認可コードを含む) アクセストークンを要求 (認可コード、クライアントID、Secretを含む) アクセストークンを発行 リソース要求(アクセストークンを含む) アクセストークンの検証 リソースの提供 クライアントに許可する範囲 (スコープ)指定が可能 オーナー(ユーザ)の同意に 基づくアクセスが可能 許可されたクライアントのみ からアクセスする為の認証 パスワードではなく、アクセ ストークンでリソース利用 アクセストークンから利用 者を確認(JWTの場合)
23.
ポイント • スコープの指定とオーナーによる同意 • スコープが変わると再同意とアクセス・トークンの再取得が必要 •
登録されたクライアントだけにトークンを発行 • クライアントIDとクライアントSecretによる認証 • 期限付きのコード・トークンを利用(パスワードの保存なし) • 認可コード • アクセス・トークンとの交換用(ごく短時間有効) • アクセス・トークン • リソースへのアクセスに利用(短時間有効) • リフレッシュ・トークン • アクセス・トークンとの交換用(それなりの期間有効) • アクセス・トークンの期限切れが発生した際に再度オーナーのインタラクションが無しにアク セス・トークンを再取得 • アクセス・トークンの使い方により利用ユーザの特定も可能 • JWT(JSON Web Token)を利用する場合(Azure AD はこれ) © 2016 Naohiro Fujie 23
24.
デモ Azure Active Directory
による WebAPI の保護 Active Directory Authentication Library による API クライアントの実装 © 2016 Naohiro Fujie 24
25.
保護対象リソース (ASP.NET WebAPI) デモ構成 © 2016
Naohiro Fujie 25 クライアント (ASP.NET MVC +ADAL) 認可サーバ (Azure AD) リソース・オーナー (Azure AD 利用者) 所有 登録 認可 利用 登録 保護 利用
26.
Azure AD の
OAuth と ADAL • Azure AD(Azure Active Directory)の OAuth • Facebook などコンシューマの OAuth 実装との差は「Azure AD 以 外のリソース」へのアクセスを認可する点 ※Facebook などは自身が OAuth サーバでありリソースサーバ • そのため、Resource パラメータが必須となっている • ADAL(Active Directory Authentication Library) • Azure AD、AD FS 向けの認証ライブラリ • .NET 以外にも Java や JavaScript、Ruby、objective-C などに対応 • OAuth、OpenID Connect、ws-federation への対応 • トークンのキャッシュの自動管理(必要に応じてリフレッシュ・トー クンでアクセス・トークンを再取得)など、超便利 © 2016 Naohiro Fujie 26
27.
WebAPI の作成 © 2016
Naohiro Fujie 27
28.
プロジェクトの作成 © 2016 Naohiro
Fujie 28
29.
Web API を選択 ©
2016 Naohiro Fujie 29
30.
Azure ADドメインを指定 © 2016
Naohiro Fujie 30
31.
完成 © 2016 Naohiro
Fujie 31
32.
Azure ADに自動で登録される © 2016
Naohiro Fujie 32
33.
※テスト用)非HTTPS化しておく © 2016 Naohiro
Fujie 33
34.
API Client の作成 ©
2016 Naohiro Fujie 34
35.
プロジェクトの作成 © 2016 Naohiro
Fujie 35
36.
MVC を選択 © 2016
Naohiro Fujie 36
37.
Azure ADドメインを指定 © 2016
Naohiro Fujie 37
38.
完成 © 2016 Naohiro
Fujie 38
39.
Azure ADに自動で登録される © 2016
Naohiro Fujie 39
40.
取り敢えず実行するとユーザ認証 © 2016 Naohiro
Fujie 40
41.
プロファイル取得に関する同意 (Azure AD リソースへのアクセス) ©
2016 Naohiro Fujie 41
42.
サインイン完了 © 2016 Naohiro
Fujie 42
43.
API アクセス © 2016
Naohiro Fujie 43
44.
API Client ⇒
WebAPI へアクセス許可 © 2016 Naohiro Fujie 44
45.
登録された WebAPI を選択 ©
2016 Naohiro Fujie 45
46.
スコープを選択 © 2016 Naohiro
Fujie 46
47.
許可設定 © 2016 Naohiro
Fujie 47
48.
API Client のキーを生成(client_secret) ©
2016 Naohiro Fujie 48
49.
保存するとキーが表示される © 2016 Naohiro
Fujie 49
50.
nuget で ADAL
をインストール © 2016 Naohiro Fujie 50
51.
Web.config に必要な情報を入れる © 2016
Naohiro Fujie 51
52.
Web.config に設定する情報 • appSetting
に以下を追加 • Azure AD ポータルで取得したAPI Client のキー • <add key="ida:ClientSecret" value="WrVNTezVxZBjXPQBEMQ6VhKuJ9Ell1+An1cLCHZGmAo=" /> • アクセス先の API の識別子(リソースID) • <add key="ida:ResourceId" value="https://pharaoh.onmicrosoft.com/testWebAPI" /> © 2016 Naohiro Fujie 52
53.
Startup.Auth へのコード追加 • Using
ディレクティブ • using Microsoft.IdentityModel.Clients.ActiveDirectory; • OpenIdConnectAuthenticationOptions // WebAPIリソースへのアクセスを要求 Resource = ConfigurationManager.AppSettings["ida:ResourceId"], Notifications = new OpenIdConnectAuthenticationNotifications { // ADALのトークンキャッシュにアクセストークンを乗せるため、認可コードでアクセストークンを取得 AuthorizationCodeReceived = async (context) => { string code = context.Code; AuthenticationContext authContext = new AuthenticationContext(authority); AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync( code, new Uri(postLogoutRedirectUri), new ClientCredential( clientId, ConfigurationManager.AppSettings["ida:ClientSecret"])); } } © 2016 Naohiro Fujie 53
54.
HomeController へのコード追加 • Using
ディレクティブ • using System.Configuration; • using Microsoft.IdentityModel.Clients.ActiveDirectory; • using System.Net.Http; • using System.Net.Http.Headers; © 2016 Naohiro Fujie 54
55.
HttpClient httpClient =
new HttpClient(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); HttpResponseMessage response = httpClient.GetAsync("http://localhost:1867/api/values").Result; if (response.IsSuccessStatusCode){ ViewBag.Message = response.Content.ReadAsStringAsync().Result; } } catch (AdalException ex) { ViewBag.Message = ex.Message; } return View(); } public async System.Threading.Tasks.Task<ActionResult> About() { string clientId = ConfigurationManager.AppSettings["ida:ClientId"]; string clientSecret = ConfigurationManager.AppSettings["ida:ClientSecret"]; string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"]; string tenantId = ConfigurationManager.AppSettings["ida:TenantId"]; string authority = aadInstance + tenantId; var resourceId = ConfigurationManager.AppSettings["ida:ResourceId"]; try { ClientCredential credential = new ClientCredential(clientId, clientSecret); AuthenticationContext authContext = new AuthenticationContext(authority); AuthenticationResult result = await authContext.AcquireTokenSilentAsync( resourceId, credential, UserIdentifier.AnyUser); © 2016 Naohiro Fujie 55
56.
API Client を起動すると
WebAPI への アクセスについて同意を求められる © 2016 Naohiro Fujie 56
57.
サインイン完了 © 2016 Naohiro
Fujie 57
58.
WebAPI を実行 © 2016
Naohiro Fujie 58
59.
参考資料 • 脱オンプレミス! クラウド時代の認証基盤
Azure Active Directory 完全解説 • 著 : Vittorio Bertocci • 監訳 : 安納 順一、富士榮 尚寛 • ¥3,996 • Kindle 版もあり〼 • http://amzn.to/2h01o2h © 2016 Naohiro Fujie 59
60.
まとめ • OAuth を使って安全に
API を使いましょう • 利用者にとって • パスワードの氾濫を防ぐ • 権限の絞り込みを適切に行う • API 提供者にとって • 適切な API クライアントへ提供する • Azure AD、ADAL を使うと結構簡単に実装できます。 • 本買ってね © 2016 Naohiro Fujie 60
Download