SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
OAuth 2.0 による
Web API の保護
2016.12.21
Japan Web API Community #1
Naohiro Fujie
@phr_eidentity
自己紹介
• 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
Agenda
1. WebAPI に求められるセキュリティ
• 利用者から見た課題
• API 提供者から見た課題
2. OAuth 2.0 の概要と課題への対応
3. デモ
• Azure AD による WebAPI の保護
• ADAL による API クライアントの実装
© 2016 Naohiro Fujie 3
WebAPI に求められる
セキュリティ
© 2016 Naohiro Fujie 4
WebAPI 利用・提供時の課題
• いかにして API クライアントを信頼するか?
• 利用者の視点
• API を通して提供される自身のデータを悪用されたくない
• API 提供者の視点
• 誰が利用しているのかを明確にしたい(例:課金)
• 人の識別
• API クライアントの識別
• 提供するデータを悪用されたくない
© 2016 Naohiro Fujie 5
http(s)でインターネット上に
公開しているので、Firewall
等による分離は難しい
API クライアントは便利だけ
ど、間接的に自身のデータへ
アクセスされるのは怖い
API の基本は単機能。ユーザ
認証・認可機能を API 毎に開
発したくない
適切な API クライアントから
だけアクセスさせたい
利用者から見た課題
© 2016 Naohiro Fujie 6
従来の Web アプリケーションの利用
• ユーザ自身によりコンテキストの使い分けが可能
• Facebookの友達からはアプリA、Twitter上のアイデンティティとの紐
づけをされても良いが、反対は嫌
• 情報は二重管理
© 2016 Naohiro Fujie 7
実名、電話番号を登録
ニックネームを登録
Twitterには同僚に知られたく
ない性癖を投稿しているので、
実名は登録したくない
Facebookの友達は近しい人
ばかりなので、実名や電話番
号を登録しておきたい
アプリA
ニックネームと電話番号を登録
アプリAにはニックネームと
電話番号を登録したい・・・
二重管理は面倒
上手く API を使って二重管理をやめたい
• アプリにFacebookとTwitterのIDとパスワードを登録する?
© 2016 Naohiro Fujie 8
実名、電話番号を登録
ニックネームを登録
アプリA
(APIクラ
イアント)
ニックネームと
電話番号を使わせたい
ユーザのID/PWDを使って
Facebookへアクセス
複数のサービスに同じ情報を
登録するのは面倒なので便利
なマッシュアップ・アプリを
使いたい
ユーザのID/PWDを使って
Twitterへアクセス
パスワード?
• アプリ上に個人のパスワードを登録するのは・・・
© 2016 Naohiro Fujie 9
実名、電話番号を登録
ニックネームを登録
アプリA
(APIクラ
イアント)
ニックネームと
電話番号を使わせたい
ユーザのID/PWDを使って
Facebookへアクセス
ユーザのID/PWDを使って
Twitterへアクセス
パスワードを登録しておくの
はかなり嫌・・・
漏えい?変更時の運用?
コンテキストが混ざる
• せっかく分けていたコンテキストがアプリで混ざる
© 2016 Naohiro Fujie 10
実名、電話番号を登録
ニックネームを登録
アプリA
(APIクラ
イアント)
ニックネームと
電話番号を使わせたい
電話番号だけが欲しいのに、
実名もとれてしまう?
このアプリ上でコンテキスト
が混ざってしまう
課題:パスワード、コンテキスト
パスワードを使わずに
どうやってユーザの代わりに
「望んだ範囲に限定して」
アクセスさせるか?
© 2016 Naohiro Fujie 11
実名、電話番号を登録
ニックネームを登録
アプリA
(APIクラ
イアント)
ニックネームと
電話番号を使わせたい
パスワードを登録しておくの
はかなり嫌・・・
漏えい?変更時の運用?
このアプリ上でコンテキスト
が混ざってしまう
API 提供者から見た課題
© 2016 Naohiro Fujie 12
従来の Web アプリケーションの利用
• ユーザが直接アプリを利用していたので識別は簡単
• 個々に認証機能や UI 開発が必要
© 2016 Naohiro Fujie 13
直接ログイン
直接ログイン
アプリA
直接ログイン
個々に運用・管理。
識別は簡単だが、個々に機能
開発が必要
API を公開してシンプルにしたい
• ユーザが直接アプリを利用していたので識別は簡単
• 個々に認証機能や UI 開発が必要
© 2016 Naohiro Fujie 14
アプリA
(APIクラ
イアント) シンプルな機能・データ提供
だけを API で行いたい
利用
アプリ経由で利用
アプリ経由で利用
アクセス元の特定・真贋が難しい
• アクセス元アプリの信頼性の担保が難しい
© 2016 Naohiro Fujie 15
アプリA
(APIクラ
イアント) 誰がどのアプリ経由が使って
いるのかわからない?
利用
アプリ経由で利用
アプリ経由で利用このアプリは信頼できるの
か?
特定アプリ以外からの
アクセスを防げない?
課題:利用元の特定と管理
• どうやって「許可された」
アプリからのみ
アクセスを許可
するか?
© 2016 Naohiro Fujie 16
アプリA
(APIクラ
イアント)
利用
アプリ経由で利用
アプリ経由で利用このアプリは信頼できるの
か?
特定アプリ以外からの
アクセスを防げない?
誰がどのアプリ経由が使って
いるのかわからない?
OAuth 2.0 の概要と
課題への対応
© 2016 Naohiro Fujie 17
OAuth の概要と基本的な考え方
• 目的
• リソースへのアクセスを安全に認可(委譲)すること
• 基本的な考え方
• リソース(API を通して提供される機能やデータ)の持ち主はユーザ
である
• ユーザの同意に基づき API クライアントに対してリソースへのアクセ
ス権限を認可(委譲)する
• 認証(検証)された API クライアントに対してのみリソースを提供す
る
© 2016 Naohiro Fujie 18
構成要素
• 保護対象リソース
• API を経由して提供される機能やデータなどのリソース
• リソース・オーナー
• 保護対象となるリソースの持ち主(ユーザ)
• クライアント
• 保護対象リソースへアクセスする主体(API クライアント)
• 認可サーバ
• 保護対象リソースへのアクセスを認可するためのサーバ
© 2016 Naohiro Fujie 19
保護対象リソース
(API 、データ)
各構成要素の関係性
© 2016 Naohiro Fujie 20
クライアント
認可サーバ
リソース・オーナー
所有
登録
認可 利用
登録
保護
利用
保護対象リソース
(API 、データ)
実際の動き(認可コードグラント)
© 2016 Naohiro Fujie 21
クライアント
認可サーバ
リソース・オーナー
所有
登録
認可 利用
登録
保護
利用
1.利用したい
2.認可要求
3.認可要求
(同意)
4.認可コードの
発行
5.認可コードの
提供
6.認可コードと
アクセストークン
の交換
8.アクセストー
クンの検証
7.アクセストー
クンの提示
9.リソースの
提供
シーケンス(認可コードグラント)
© 2016 Naohiro Fujie 22
リソース・オーナー
(利用者/UserAgent)
クライアント
(アプリケーション)
認可サーバ
(OAuthサーバ)
保護対象リソース
(API・データ)
フロー開始
ユーザ認証・同意
認可エンドポイントへリダイレクト
(クライアントID、スコープを含む)
クライアントへリダイレクト
(認可コードを含む)
アクセストークンを要求
(認可コード、クライアントID、Secretを含む)
アクセストークンを発行
リソース要求(アクセストークンを含む)
アクセストークンの検証
リソースの提供
クライアントに許可する範囲
(スコープ)指定が可能
オーナー(ユーザ)の同意に
基づくアクセスが可能
許可されたクライアントのみ
からアクセスする為の認証
パスワードではなく、アクセ
ストークンでリソース利用
アクセストークンから利用
者を確認(JWTの場合)
ポイント
• スコープの指定とオーナーによる同意
• スコープが変わると再同意とアクセス・トークンの再取得が必要
• 登録されたクライアントだけにトークンを発行
• クライアントIDとクライアントSecretによる認証
• 期限付きのコード・トークンを利用(パスワードの保存なし)
• 認可コード
• アクセス・トークンとの交換用(ごく短時間有効)
• アクセス・トークン
• リソースへのアクセスに利用(短時間有効)
• リフレッシュ・トークン
• アクセス・トークンとの交換用(それなりの期間有効)
• アクセス・トークンの期限切れが発生した際に再度オーナーのインタラクションが無しにアク
セス・トークンを再取得
• アクセス・トークンの使い方により利用ユーザの特定も可能
• JWT(JSON Web Token)を利用する場合(Azure AD はこれ)
© 2016 Naohiro Fujie 23
デモ
Azure Active Directory による WebAPI の保護
Active Directory Authentication Library による API クライアントの実装
© 2016 Naohiro Fujie 24
保護対象リソース
(ASP.NET WebAPI)
デモ構成
© 2016 Naohiro Fujie 25
クライアント
(ASP.NET MVC
+ADAL)
認可サーバ
(Azure AD)
リソース・オーナー
(Azure AD 利用者)
所有
登録
認可 利用
登録
保護
利用
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
WebAPI の作成
© 2016 Naohiro Fujie 27
プロジェクトの作成
© 2016 Naohiro Fujie 28
Web API を選択
© 2016 Naohiro Fujie 29
Azure ADドメインを指定
© 2016 Naohiro Fujie 30
完成
© 2016 Naohiro Fujie 31
Azure ADに自動で登録される
© 2016 Naohiro Fujie 32
※テスト用)非HTTPS化しておく
© 2016 Naohiro Fujie 33
API Client の作成
© 2016 Naohiro Fujie 34
プロジェクトの作成
© 2016 Naohiro Fujie 35
MVC を選択
© 2016 Naohiro Fujie 36
Azure ADドメインを指定
© 2016 Naohiro Fujie 37
完成
© 2016 Naohiro Fujie 38
Azure ADに自動で登録される
© 2016 Naohiro Fujie 39
取り敢えず実行するとユーザ認証
© 2016 Naohiro Fujie 40
プロファイル取得に関する同意
(Azure AD リソースへのアクセス)
© 2016 Naohiro Fujie 41
サインイン完了
© 2016 Naohiro Fujie 42
API アクセス
© 2016 Naohiro Fujie 43
API Client ⇒ WebAPI へアクセス許可
© 2016 Naohiro Fujie 44
登録された WebAPI を選択
© 2016 Naohiro Fujie 45
スコープを選択
© 2016 Naohiro Fujie 46
許可設定
© 2016 Naohiro Fujie 47
API Client のキーを生成(client_secret)
© 2016 Naohiro Fujie 48
保存するとキーが表示される
© 2016 Naohiro Fujie 49
nuget で ADAL をインストール
© 2016 Naohiro Fujie 50
Web.config に必要な情報を入れる
© 2016 Naohiro Fujie 51
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
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
HomeController へのコード追加
• Using ディレクティブ
• using System.Configuration;
• using Microsoft.IdentityModel.Clients.ActiveDirectory;
• using System.Net.Http;
• using System.Net.Http.Headers;
© 2016 Naohiro Fujie 54
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
API Client を起動すると WebAPI への
アクセスについて同意を求められる
© 2016 Naohiro Fujie 56
サインイン完了
© 2016 Naohiro Fujie 57
WebAPI を実行
© 2016 Naohiro Fujie 58
参考資料
• 脱オンプレミス! クラウド時代の認証基盤 Azure Active
Directory 完全解説
• 著 : Vittorio Bertocci
• 監訳 : 安納 順一、富士榮 尚寛
• ¥3,996
• Kindle 版もあり〼
• http://amzn.to/2h01o2h
© 2016 Naohiro Fujie 59
まとめ
• OAuth を使って安全に API を使いましょう
• 利用者にとって
• パスワードの氾濫を防ぐ
• 権限の絞り込みを適切に行う
• API 提供者にとって
• 適切な API クライアントへ提供する
• Azure AD、ADAL を使うと結構簡単に実装できます。
• 本買ってね
© 2016 Naohiro Fujie 60

Mais conteúdo relacionado

Mais procurados

OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門土岐 孝平
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護 junichi anno
 
認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜Masaru Kurahayashi
 
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Hiroyuki Wada
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてHiroyuki Wada
 
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karateマイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with KarateTakanori Suzuki
 
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteいまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteTatsuo Kudo
 
認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向Tatsuo Kudo
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceToru Makabe
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理Naohiro Fujie
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified IDNaohiro Fujie
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したことAmazon Web Services Japan
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例briscola-tokyo
 
ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎Naohiro Fujie
 
Azure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるNaohiro Fujie
 

Mais procurados (20)

OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
Azure AD による Web API の 保護
Azure AD による Web API の 保護 Azure AD による Web API の 保護
Azure AD による Web API の 保護
 
認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜
 
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Keycloak & midPoint の紹介
Keycloak & midPoint の紹介
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
 
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karateマイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karate
 
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authleteいまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
いまどきの OAuth / OpenID Connect (OIDC) 一挙おさらい (2020 年 2 月) #authlete
 
認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向
 
Ingress on Azure Kubernetes Service
Ingress on Azure Kubernetes ServiceIngress on Azure Kubernetes Service
Ingress on Azure Kubernetes Service
 
Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例
 
ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎
 
Azure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみる
 
Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 

Semelhante a OAuth2.0によるWeb APIの保護

FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理fisuda
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティjunichi anno
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideTatsuo Kudo
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon Web Services Japan
 
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADAzure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADjunichi anno
 
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~decode2016
 
Introduction to application architecture on asp.net mvc
Introduction to application architecture on asp.net mvcIntroduction to application architecture on asp.net mvc
Introduction to application architecture on asp.net mvcAtsushi Fukui
 
【日商USA】webinar 2022.6.24 RSAカンファレンス2022 フィードバック
【日商USA】webinar 2022.6.24 RSAカンファレンス2022 フィードバック【日商USA】webinar 2022.6.24 RSAカンファレンス2022 フィードバック
【日商USA】webinar 2022.6.24 RSAカンファレンス2022 フィードバックNISSHO USA
 
Serverless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すServerless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すMasayuki Kato
 
「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめjunichi anno
 
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #apiTatsuo Kudo
 
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsTatsuo Kudo
 
DevOps with Dynatrace
DevOps with DynatraceDevOps with Dynatrace
DevOps with DynatraceHarry Hiyoshi
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without ServersKeisuke Nishitani
 
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜Yahoo!デベロッパーネットワーク
 
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細オラクルエンジニア通信
 
Microsoft Azure で実現するAIとIoT最新情報
Microsoft Azure で実現するAIとIoT最新情報Microsoft Azure で実現するAIとIoT最新情報
Microsoft Azure で実現するAIとIoT最新情報Yasuhiro Kobayashi
 

Semelhante a OAuth2.0によるWeb APIの保護 (20)

FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティ
 
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure ADAzure AD によるリソースの保護 how to protect and govern resources under the Azure AD
Azure AD によるリソースの保護 how to protect and govern resources under the Azure AD
 
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
CLT-009_Windows 10 アプリとシングルサインオン ~Microsoft Passport の意義とその実装方法~
 
Introduction to application architecture on asp.net mvc
Introduction to application architecture on asp.net mvcIntroduction to application architecture on asp.net mvc
Introduction to application architecture on asp.net mvc
 
【日商USA】webinar 2022.6.24 RSAカンファレンス2022 フィードバック
【日商USA】webinar 2022.6.24 RSAカンファレンス2022 フィードバック【日商USA】webinar 2022.6.24 RSAカンファレンス2022 フィードバック
【日商USA】webinar 2022.6.24 RSAカンファレンス2022 フィードバック
 
Serverless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すServerless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指す
 
「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ
 
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
「金融API向けOAuth」にみるOAuthプロファイリングの実際 #secjaws #finsecjaws01 #oauth #oidc #api
 
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
 
DevOps with Dynatrace
DevOps with DynatraceDevOps with Dynatrace
DevOps with Dynatrace
 
How FIDO Works
How FIDO WorksHow FIDO Works
How FIDO Works
 
Scale Your Business without Servers
Scale Your Business without ServersScale Your Business without Servers
Scale Your Business without Servers
 
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
YJTC18 D-1 安心安全な次世代認証を目指して 〜社会に溶け込む認証技術〜
 
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
 
AWS Black Belt Online Seminar AWS Amplify
AWS Black Belt Online Seminar AWS AmplifyAWS Black Belt Online Seminar AWS Amplify
AWS Black Belt Online Seminar AWS Amplify
 
Microsoft Azure で実現するAIとIoT最新情報
Microsoft Azure で実現するAIとIoT最新情報Microsoft Azure で実現するAIとIoT最新情報
Microsoft Azure で実現するAIとIoT最新情報
 

Mais de Naohiro Fujie

分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要Naohiro Fujie
 
LINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーLINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーNaohiro Fujie
 
ざっくり解説 LINE ログイン
ざっくり解説 LINE ログインざっくり解説 LINE ログイン
ざっくり解説 LINE ログインNaohiro Fujie
 
Azure AD x LINE x Auth0
Azure AD x LINE x Auth0Azure AD x LINE x Auth0
Azure AD x LINE x Auth0Naohiro Fujie
 
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向Naohiro Fujie
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要Naohiro Fujie
 
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
LIFFとの連携でさらに強力に。こんなに使えるLINEログインLIFFとの連携でさらに強力に。こんなに使えるLINEログイン
LIFFとの連携でさらに強力に。こんなに使えるLINEログインNaohiro Fujie
 
自己主権型IDと分散型ID
自己主権型IDと分散型ID自己主権型IDと分散型ID
自己主権型IDと分散型IDNaohiro Fujie
 
Azure ADの外部コラボレーションとBYOID
Azure ADの外部コラボレーションとBYOIDAzure ADの外部コラボレーションとBYOID
Azure ADの外部コラボレーションとBYOIDNaohiro Fujie
 
祝!公式サポート Auth0 + LINE Login
祝!公式サポート Auth0 + LINE Login祝!公式サポート Auth0 + LINE Login
祝!公式サポート Auth0 + LINE LoginNaohiro Fujie
 
IDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたIDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたNaohiro Fujie
 
次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向Naohiro Fujie
 
これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向Naohiro Fujie
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)Naohiro Fujie
 
教育機関におけるBYOIDとKYC
教育機関におけるBYOIDとKYC教育機関におけるBYOIDとKYC
教育機関におけるBYOIDとKYCNaohiro Fujie
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門Naohiro Fujie
 
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方Naohiro Fujie
 
コンシューマIDのエンタープライズ領域での活用
コンシューマIDのエンタープライズ領域での活用コンシューマIDのエンタープライズ領域での活用
コンシューマIDのエンタープライズ領域での活用Naohiro Fujie
 
大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用Naohiro Fujie
 

Mais de Naohiro Fujie (20)

分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要
 
LINE Login総復習
LINE Login総復習LINE Login総復習
LINE Login総復習
 
LINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーLINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルー
 
ざっくり解説 LINE ログイン
ざっくり解説 LINE ログインざっくり解説 LINE ログイン
ざっくり解説 LINE ログイン
 
Azure AD x LINE x Auth0
Azure AD x LINE x Auth0Azure AD x LINE x Auth0
Azure AD x LINE x Auth0
 
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
LINE Payも取り組んでいるKYCってなんだろう?KYCの基本と最近の動向
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要
 
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
LIFFとの連携でさらに強力に。こんなに使えるLINEログインLIFFとの連携でさらに強力に。こんなに使えるLINEログイン
LIFFとの連携でさらに強力に。こんなに使えるLINEログイン
 
自己主権型IDと分散型ID
自己主権型IDと分散型ID自己主権型IDと分散型ID
自己主権型IDと分散型ID
 
Azure ADの外部コラボレーションとBYOID
Azure ADの外部コラボレーションとBYOIDAzure ADの外部コラボレーションとBYOID
Azure ADの外部コラボレーションとBYOID
 
祝!公式サポート Auth0 + LINE Login
祝!公式サポート Auth0 + LINE Login祝!公式サポート Auth0 + LINE Login
祝!公式サポート Auth0 + LINE Login
 
IDaaSにSign in with Appleをつないでみた
IDaaSにSign in with AppleをつないでみたIDaaSにSign in with Appleをつないでみた
IDaaSにSign in with Appleをつないでみた
 
次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向次世代KYCと自己主権型アイデンティティの動向
次世代KYCと自己主権型アイデンティティの動向
 
これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
 
教育機関におけるBYOIDとKYC
教育機関におけるBYOIDとKYC教育機関におけるBYOIDとKYC
教育機関におけるBYOIDとKYC
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門
 
組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方組織におけるアイデンティティ管理の基本的な考え方
組織におけるアイデンティティ管理の基本的な考え方
 
コンシューマIDのエンタープライズ領域での活用
コンシューマIDのエンタープライズ領域での活用コンシューマIDのエンタープライズ領域での活用
コンシューマIDのエンタープライズ領域での活用
 
大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用大学等におけるAzure AD B2Cを使用したSNS認証の活用
大学等におけるAzure AD B2Cを使用したSNS認証の活用
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Último (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

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
  • 5. WebAPI 利用・提供時の課題 • いかにして API クライアントを信頼するか? • 利用者の視点 • API を通して提供される自身のデータを悪用されたくない • API 提供者の視点 • 誰が利用しているのかを明確にしたい(例:課金) • 人の識別 • API クライアントの識別 • 提供するデータを悪用されたくない © 2016 Naohiro Fujie 5 http(s)でインターネット上に 公開しているので、Firewall 等による分離は難しい API クライアントは便利だけ ど、間接的に自身のデータへ アクセスされるのは怖い API の基本は単機能。ユーザ 認証・認可機能を API 毎に開 発したくない 適切な API クライアントから だけアクセスさせたい
  • 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クラ イアント) ニックネームと 電話番号を使わせたい パスワードを登録しておくの はかなり嫌・・・ 漏えい?変更時の運用? このアプリ上でコンテキスト が混ざってしまう
  • 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クラ イアント) 利用 アプリ経由で利用 アプリ経由で利用このアプリは信頼できるの か? 特定アプリ以外からの アクセスを防げない? 誰がどのアプリ経由が使って いるのかわからない?
  • 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
  • 29. Web API を選択 © 2016 Naohiro Fujie 29
  • 34. API Client の作成 © 2016 Naohiro Fujie 34
  • 36. MVC を選択 © 2016 Naohiro Fujie 36
  • 43. API アクセス © 2016 Naohiro Fujie 43
  • 44. API Client ⇒ WebAPI へアクセス許可 © 2016 Naohiro Fujie 44
  • 45. 登録された WebAPI を選択 © 2016 Naohiro Fujie 45
  • 50. nuget で ADAL をインストール © 2016 Naohiro Fujie 50
  • 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
  • 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