SlideShare a Scribd company logo
1 of 48
Download to read offline
Copyright©2016 NTT corp. All Rights Reserved.
Microservices /w Spring Security
OAuth
NTT ソフトウェアイノベーションセンタ
角田誠
2016年3月9日
2Copyright©2016 NTT corp. All Rights Reserved.
• 認可フレームワークであるOAuthを,マイクロサービ
ス・アーキテクチャで構築されたアプリケーションを構
成する各サービスへのアクセス時に利用することを想定
して,OAuthの実装であるSpring Security OAuth
を用いて行ったいくつかの実験についての報告。
本日の内容
3Copyright©2016 NTT corp. All Rights Reserved.
• 「In short, the microservice architectural
style is an approach to developing a single
application as a suite of small services, each
running in its own process and
communicating with lightweight mechanisms,
often an HTTP resource API.」
• James Lewis, Martin Fowler,
• “Microservices a definition of this new architectual
term”,
• http://martinfowler.com/articles/microservices.html
おさらい(Microservices)
4Copyright©2016 NTT corp. All Rights Reserved.
• 単一のアプリケーションを小さなサービス群の組み合わ
せとして構築する手法。
• 個々のサービスは自身のプロセス上で動作する。
おさらい(Microservices)
5Copyright©2016 NTT corp. All Rights Reserved.
• スケールさせるときは,アプリケーション全体ではな
く,個々のサービスごとに多重化できるので効率が良
い。
おさらい(Microservices)
6Copyright©2016 NTT corp. All Rights Reserved.
• サードパーティ製のアプリケーション(≒クライアント)
から,Webサービスを提供するサーバ(≒リソース,
サービス)への,限定的なアクセスを可能にする認可フ
レームワーク。
• RFC6749(OAuth2)
おさらい(OAuth)
7Copyright©2016 NTT corp. All Rights Reserved.
• OAuth以前 - クライアントサーバ型の認証モデル
• エンドユーザは,Webサービスにアクセスするための認証情報
をサードパーティ製のアプリケーションに伝える。
おさらい(OAuth)
サードパーティ製の
アプリケーション
(クライアント)
Webサービス
エンドユーザの権限の
範囲内での
無制限のアクセス
8Copyright©2016 NTT corp. All Rights Reserved.
• OAuthの認証・認可モデル
• エンドユーザは,Webサービスにアクセスするための認証情報
をサードパーティ製のアプリケーションに伝える必要がない。
おさらい(OAuth)
Webサービス限定されたアクセス
アクセスの限定
サードパーティ製の
アプリケーション
(クライアント)
9Copyright©2016 NTT corp. All Rights Reserved.
• OAuthの四つのロール
おさらい(OAuth)
クライアント
認可サーバ
リソースサーバ
・リソースオーナの許可を得てリソースサー
バにアクセスする,ブラウザ上またはWeb
サーバ上で動作するアプリケーション。
リソースオーナ
・保護されたリソースを
ホストするサーバ。
・リソースオーナの認証と,リソース
オーナから認可を取得し,クライアント
にアクセストークンを発行するサーバ。
・クライアントにリソースサーバ
へのアクセスを許可する。
・エンドユーザ。
アクセストークン
10Copyright©2016 NTT corp. All Rights Reserved.
• 認可グラント
• リソースオーナによる認可を示す。
• 認可サーバは認可グラントに基づき,クライアントにアクセス
トークンを発行する。
• 四つのタイプがあり,それぞれでアクセストークン発行手順が
異なる。
おさらい(OAuth)
クライアントがリソースサーバに
アクセスするときに必要なトークン
11Copyright©2016 NTT corp. All Rights Reserved.
• 四つのグラントタイプ
• 認可コード
• インプリシット
• リソースオーナパスワードクレデンシャル
• クライアントクレデンシャル
おさらい(OAuth)
OAuthといって普通にイメージするのはこのあたり。
エンドユーザはクライアントに対し認可の範囲を限定
できる。
12Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラント
• クライアントからリソースサーバへのアクセスを,エンドユー
ザが認可することで,アクセストークンを発行する。
おさらい(OAuth)
クライアント
認可サーバ
ユーザ
エージェント
(Webブラウザ)
(1)リソースサーバへのアクセス事象発生
(2)認可サーバへの
リダイレクト指示
(3)リダイレクト
(4)認可要求
(5)認可
要求
(7)認可
(8)認可コード + クライアントへのリダイレクト指示
(10)認可コードによりア
クセストークン要求
(9)リダイレクト
/w 認可コード (11)アクセストークン
(6)認可(エンドユーザはクライアントに対して認可の範囲を限定できる。)
リソースサーバ(12)リソースサーバへのアクセス
13Copyright©2016 NTT corp. All Rights Reserved.
• クライアントクレデンシャルグラント
• エンドユーザとは関係なく,クライアントを認証し,アクセス
トークンを発行する。
おさらい(OAuth)
クライアント 認可サーバ
(1)リソースサーバへの
アクセス事象発生
(2)クライアントの認証情報
(3)アクセストークン
リソースサーバ(4)リソースサーバへのアクセス
14Copyright©2016 NTT corp. All Rights Reserved.
• Spring Bootによるサービスの実現
• Eurekaによるサービスの登録・発見
SpringとMicroservices
15Copyright©2016 NTT corp. All Rights Reserved.
• Spring Security OAuth
• Spring Securityの関連プロジェクト
• 認可サーバ,リソースサーバ,クライアントの作成をサポート
• 今回は,Spring Security OAuthの細かな設定などの説明は割
愛。
SpringとOAuth
16Copyright©2016 NTT corp. All Rights Reserved.
• Spring BootやSpring Security OAuthを使った
Microservicesなアプリケーションで,サービス(リ
ソースサーバ)から他のサービスの呼び出しでも,エン
ドユーザが認可した範囲に限定したアクセスを行う。
実現したいこと(1)
クライアント
エンドユーザが認可した範囲での限定したアクセス
Microservicesでいうところのサービスを
OAuthのリソースサーバとして実現
17Copyright©2016 NTT corp. All Rights Reserved.
認可サーバ
認可サーバ
• Spring Security OAuthで作ったクライアントやリ
ソースサーバが,Eurekaサーバに登録された,多重化
されたリソースサーバや認可サーバのうちのどれかを選
んでアクセスする。
実現したいこと(2)
クライアント
18Copyright©2016 NTT corp. All Rights Reserved.
• クライアントからリソースサーバへのアクセス
• リソースサーバはクライアントに対して,REST APIを提供す
る。
• クライアントは,REST APIに普通にアクセスするときに使う
RestTemplateの代わりにOAuth2RestTemplateを使って,リ
ソースサーバにアクセスする。
Spring Security OAuth
@RestController
public class ClientController {
@Value("${config.oauth2.resourceURI}")
private String resourceUri;
@Autowired
private OAuth2RestTemplate restTemplate;
@RequestMapping("/")
public String home() {
return restTemplate.getForObject(resourceUri, String.class);
}
}
19Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• クライアントからリソースサーバへのアクセスが必要になる。
Spring Security OAuth
クライアント
リソースサーバ
20Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• クライアントからリソースサーバへのアクセスが必要になる。
• クライアントは,OAuth2RestTemplateを使いリソースサー
バにアクセスしようとする。
Spring Security OAuth
クライアント
リソースサーバOAuth2
RestTemplate
Controller
21Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• クライアントからリソースサーバへのアクセスが必要になる。
• クライアントは,OAuth2RestTemplateを使いリソースサー
バにアクセスしようとする。
• UserRedirectRequiredExceptionが投げられる。
Spring Security OAuth
クライアント
リソースサーバOAuth2
RestTemplate
Controller UserRedirect
RequiredException
22Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• OAuth2ClientContextFilterがキャッチしてブラウザのロケー
ションを認可サーバにリダイレクトさせる。
Spring Security OAuth
クライアント
リソースサーバOAuth2
RestTemplate
Controller
OAuth2
ClientContextFilter
UserRedirect
RequiredException
認可サーバ
23Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• OAuth2ClientContextFilterがキャッチしてブラウザのロケー
ションを認可サーバにリダイレクトさせる。
• ユーザの認証・認可が行われる。
Spring Security OAuth
クライアント
リソースサーバOAuth2
RestTemplate
Controller
OAuth2
ClientContextFilter
認可サーバ認証・認可
24Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• OAuth2ClientContextFilterがキャッチしてブラウザのロケー
ションを認可サーバにリダイレクトさせる。
• ユーザの認証・認可が行われる。
• 元のクライアントのURLにリダイレクトされ,再度コントロー
ラが呼ばれる。
Spring Security OAuth
クライアント
リソースサーバOAuth2
RestTemplate
Controller
OAuth2
ClientContextFilter
認可サーバ
認可コード
25Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• 再度,OAuth2RestTemplateを使いリソースサーバにアクセ
スしようとする。
Spring Security OAuth
クライアント
リソースサーバOAuth2
RestTemplate
Controller
OAuth2
ClientContextFilter
認可サーバ
認可コード
26Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• 再度,OAuth2RestTemplateを使いリソースサーバにアクセ
スしようとする。
• 認可サーバからアクセストークンを取得する。
Spring Security OAuth
クライアント
リソースサーバOAuth2
RestTemplate
Controller
OAuth2
ClientContextFilter
認可サーバ
認可コード
認可コード
アクセストークン
27Copyright©2016 NTT corp. All Rights Reserved.
• 認可コードグラントによるリソースサーバへのアクセス
の流れ
• 再度,OAuth2RestTemplateを使いリソースサーバにアクセ
スしようとする。
• 認可サーバからアクセストークンを取得する。
• リソースサーバにアクセスする。
Spring Security OAuth
クライアント
リソースサーバOAuth2
RestTemplate
Controller
OAuth2
ClientContextFilter
認可サーバ
認可コード
認可コード
アクセストークン
アクセストークン
28Copyright©2016 NTT corp. All Rights Reserved.
• Spring BootやSpring Security OAuthを使った
Microservicesなアプリケーションで,サービス(リ
ソースサーバ)から他のサービスの呼び出しでも,エン
ドユーザが認可した範囲に限定したアクセスを行う。
実現したいこと(1)
クライアント
エンドユーザが認可した範囲での限定したアクセス
Microservicesでいうところのサービスを
OAuthのリソースサーバとして実現
29Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバ(A)(サービス)から他のリソースサーバ
(B)へのアクセスにOAuthを使うには…。
リソースサーバ(A)から他のリソースサーバ(B)へのアクセス
クライアント
リソースサーバ
(B)
リソースサーバ
(A)
アクセストークン
アクセストークン
認可サーバ
30Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバ(A)(サービス)から他のリソースサーバ
(B)へのアクセスにOAuthを使うには…。
• 認可コードグラント?
• リソースサーバ(A)にアクセスしているのはクライアントや他のリ
ソースサーバであって,エンドユーザではない。
• エンドユーザに認可を求めることができない。
リソースサーバ(A)から他のリソースサーバ(B)へのアクセス
クライアント
リソースサーバ
(B)
リソースサーバ
(A)
アクセストークン
アクセストークン
認証・認可 認可サーバ
31Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバ(A)(サービス)から他のリソースサーバ
(B)へのアクセスにOAuthを使うには…。
• クライアントクレデンシャルグラントを使うのが普通(多分)。
• エンドユーザは介入しない。
• リソースサーバ(A)をクライアントとして認可サーバが認証でき
る。
• リソースサーバ(A)に与えられたスコープで,リソースサーバ(B)
にアクセスできる。
• つまり,エンドユーザの認可は反映されない。
リソースサーバ(A)から他のリソースサーバ(B)へのアクセス
認可サーバ
リソースサーバ(A)の認証情報
アクセストークン
リソースサーバ
(B)
リソースサーバ(B)へのアクセス
リソースサーバ
(A)
32Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバ(A)(サービス)から他のリソースサーバ
(B)へのアクセスにOAuthを使うには…。
• エンドユーザの認可を反映しつつ,リソースサーバ(A)からリ
ソースサーバ(B)にアクセスしたい。
リソースサーバ(A)から他のリソースサーバ(B)へのアクセス
33Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバ(A)(サービス)から他のリソースサーバ
(B)へのアクセスにOAuthを使うには…。
• クライアントは,リソースサーバ(A)にアクセスするとき,認
可コードグラントで,ユーザの認可が反映されたアクセストー
クンを受け取ることができる。
• リソースサーバ(A)はこのアクセストークンをクライアントか
ら受け取る。
リソースサーバ(A)から他のリソースサーバ(B)へのアクセス
クライアント
リソースサーバ
(B)
リソースサーバ
(A)
アクセストークン
アクセストークン
認可サーバ
34Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバ(A)(サービス)から他のリソースサーバ
(B)へのアクセスにOAuthを使うには…。
• リソースサーバ(A)がクライアントから受け取ったアクセス
トークンをそのままリソースサーバ(B)へのアクセスに使えば
…。
• JWT(JSON Web Token)なアクセストークンを使えば,改ざん防
止とリソースサーバ内での検証が可能。
リソースサーバ(A)から他のリソースサーバ(B)へのアクセス
クライアント
リソースサーバ
(B)
リソースサーバ
(A)
アクセストークン
アクセストークン
認可サーバ
アクセストークン
35Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバ(A)(サービス)から他のリソースサーバ
(B)へのアクセスにOAuthを使うには…。
• リソースサーバ(A)がクライアントから受け取ったアクセス
トークンをそのままリソースサーバ(B)へのアクセスに使えば
…。
リソースサーバから他のリソースサーバへのアクセス
@RequestMapping("/")
public String resource(OAuth2Authentication principal) {
// 認証情報に含まれるアクセストークンを取得し,
String tokenValue =
((OAuth2AuthenticationDetails)principal.getDetails()).getTokenValue();
// リソーサーバ(B)へのアクセスに使う
// OAuth2RestTemplateのOAuth2ClientContextに埋め込む
OAuth2ClientContext context =
((OAuth2RestTemplate)restTemplate).getOAuth2ClientContext();
context.setAccessToken(new DefaultOAuth2AccessToken(tokenValue));
return "resource server! -> " +
restTemplate.getForObject(resourceUri, String.class);
}
36Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバ(A)(サービス)から他のリソースサーバ
(B)へのアクセスにOAuthを使うには…。
• リソースサーバ(A)がクライアントから受け取ったアクセス
トークンをそのままリソースサーバ(B)へのアクセスに使えば
…。
• 期待通りにエンドユーザが認可した権限の範囲で,リソース
サーバ(A)からリソースサーバ(B)へのアクセスが可能になる。
リソースサーバから他のリソースサーバへのアクセス
37Copyright©2016 NTT corp. All Rights Reserved.
認可サーバ
認可サーバ
• Spring Security OAuthで作ったクライアントやリ
ソースサーバが,Eurekaサーバに登録された,多重化
されたリソースサーバや認可サーバのうちのどれかを選
んでアクセスする。
実現したいこと(2)
クライアント
38Copyright©2016 NTT corp. All Rights Reserved.
• クライアントから多重化されたリソースサーバにアクセ
スする。
EurekaとSpring Security OAuth
認可サーバ
認可サーバ
クライアント
39Copyright©2016 NTT corp. All Rights Reserved.
• クライアントから多重化されたリソースサーバにアクセ
スする。
• クライアントから多重化された認可サーバにアクセスす
る。
EurekaとSpring Security OAuth
認可サーバ
認可サーバ
クライアント
40Copyright©2016 NTT corp. All Rights Reserved.
• クライアントから多重化されたリソースサーバにアクセ
スする。
• クライアントから多重化された認可サーバにアクセスす
る。
• リソースサーバから多重化された認可サーバにアクセス
する。
EurekaとSpring Security OAuth
認可サーバ
認可サーバ
クライアント
41Copyright©2016 NTT corp. All Rights Reserved.
• クライアントから多重化されたリソースサーバにアクセ
スする。
EurekaとSpring Security OAuth
認可サーバ
認可サーバ
クライアント
42Copyright©2016 NTT corp. All Rights Reserved.
• クライアントから多重化されたリソースサーバにアクセ
スする。
• Eurekaに登録されたサービスに普通にアクセスするときとほぼ
一緒。
EurekaとSpring Security OAuth
@Autowired
private OAuth2RestOperations restTemplate;
@Autowired
private LoadBalancerClient loadBalancer;
@RequestMapping("/")
public String home() {
// resourceNameに該当するサービスを一つ選択しURIを構築する。
String uri = loadBalancer.choose(resourceName).getUri() + resourcePath;
return restTemplate.getForObject(uri, String.class);
}
43Copyright©2016 NTT corp. All Rights Reserved.
• クライアントから多重化された認可サーバにアクセスす
る。
EurekaとSpring Security OAuth
認可サーバ
認可サーバ
クライアント
44Copyright©2016 NTT corp. All Rights Reserved.
• クライアントから多重化された認可サーバにアクセスす
る。
EurekaとSpring Security OAuth
あらかじめ設定した内容に
基づいてSpring Security
OAuthが勝手に認可サーバ
にアクセスする。
45Copyright©2016 NTT corp. All Rights Reserved.
• クライアントから多重化された認可サーバにアクセスす
る。
EurekaとSpring Security OAuth
Spring Security OAuth
で提供されているクラス
を拡張する必要がある。
あらかじめ設定した内容に
基づいてSpring Security
OAuthが勝手に認可サーバ
にアクセスする。
46Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバから多重化された認可サーバにアクセス
する。
EurekaとSpring Security OAuth
認可サーバ
認可サーバ
クライアント
47Copyright©2016 NTT corp. All Rights Reserved.
• リソースサーバから多重化された認可サーバにアクセス
する。
• JWT使用時,リソースサーバから認可サーバにアクセスするの
は,起動時の一度のみ。
• アクセストークン検証用の鍵を認可サーバに取りに行く。
• org.springframework.boot.autoconfigure.security.oauth2.r
esource.ResourceServerTokenServicesConfigurationの中
• リソースサーバ起動時に,Eurekaで見つけた認可サーバに鍵を
取りに行くようにすればOK。
• そもそも,設定ファイル(e.g. application.yml)に鍵を書いて
おけば,認可サーバにアクセスする必要はない…。
EurekaとSpring Security OAuth
48Copyright©2016 NTT corp. All Rights Reserved.
• OAuthで,リソースサーバ(A)が他のリソースサーバ
(B)にアクセスするときに必要となるアクセストークン
は,リソースサーバ(A)がクライアントから受け取った
アクセストークンを流用できる。
• OAuthで,クライアントから多重化されたリソース
サーバへのアクセスは,多重化されたサービスに普通に
アクセスするときとほぼ一緒。
• クライアントやリソースサーバから多重化された認可
サーバへのアクセスは,少し頑張れば可能。
まとめ

More Related Content

What's hot

100121 Scis2010 Itoh
100121 Scis2010 Itoh100121 Scis2010 Itoh
100121 Scis2010 ItohHiroki Itoh
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護Naohiro Fujie
 
[SC07] Azure AD と Ruby で学ぶ OpenID Connect!
[SC07] Azure AD と Ruby で学ぶ OpenID Connect![SC07] Azure AD と Ruby で学ぶ OpenID Connect!
[SC07] Azure AD と Ruby で学ぶ OpenID Connect!de:code 2017
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてHiroyuki Wada
 
Latest Status of Identity Federation
Latest Status of Identity FederationLatest Status of Identity Federation
Latest Status of Identity FederationAtsushi Kambara
 
Idcon11 implicit demo
Idcon11 implicit demoIdcon11 implicit demo
Idcon11 implicit demoRyo Ito
 
LINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーLINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーNaohiro Fujie
 
OAuth認証について
OAuth認証についてOAuth認証について
OAuth認証についてYoshifumi Sato
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりShinichi Tomita
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要Naohiro Fujie
 
Share point における id管理と認証・認可
Share point における id管理と認証・認可Share point における id管理と認証・認可
Share point における id管理と認証・認可Naohiro Fujie
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティjunichi anno
 
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
 
今更聞けないOAuth2.0
今更聞けないOAuth2.0今更聞けないOAuth2.0
今更聞けないOAuth2.0Takahiro Sato
 
プロトコルから見るID連携
プロトコルから見るID連携プロトコルから見るID連携
プロトコルから見るID連携Naohiro Fujie
 
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...junichi anno
 
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京Masayuki Abe
 
Azure ADとWindows 10によるドメイン環境の拡張
Azure ADとWindows 10によるドメイン環境の拡張Azure ADとWindows 10によるドメイン環境の拡張
Azure ADとWindows 10によるドメイン環境の拡張Naohiro Fujie
 
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編なべ
 

What's hot (20)

100121 Scis2010 Itoh
100121 Scis2010 Itoh100121 Scis2010 Itoh
100121 Scis2010 Itoh
 
CSS2020 Client Policies on keycloak
CSS2020 Client Policies on keycloak CSS2020 Client Policies on keycloak
CSS2020 Client Policies on keycloak
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
 
[SC07] Azure AD と Ruby で学ぶ OpenID Connect!
[SC07] Azure AD と Ruby で学ぶ OpenID Connect![SC07] Azure AD と Ruby で学ぶ OpenID Connect!
[SC07] Azure AD と Ruby で学ぶ OpenID Connect!
 
KeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについてKeycloakのDevice Flow、CIBAについて
KeycloakのDevice Flow、CIBAについて
 
Latest Status of Identity Federation
Latest Status of Identity FederationLatest Status of Identity Federation
Latest Status of Identity Federation
 
Idcon11 implicit demo
Idcon11 implicit demoIdcon11 implicit demo
Idcon11 implicit demo
 
LINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルーLINEログインの最新アップデートとアプリ連携ウォークスルー
LINEログインの最新アップデートとアプリ連携ウォークスルー
 
OAuth認証について
OAuth認証についてOAuth認証について
OAuth認証について
 
シングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のりシングルサインオンの歴史とSAMLへの道のり
シングルサインオンの歴史とSAMLへの道のり
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要
 
Share point における id管理と認証・認可
Share point における id管理と認証・認可Share point における id管理と認証・認可
Share point における id管理と認証・認可
 
Microsoft Azure のセキュリティ
Microsoft Azure のセキュリティMicrosoft Azure のセキュリティ
Microsoft Azure のセキュリティ
 
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
 
今更聞けないOAuth2.0
今更聞けないOAuth2.0今更聞けないOAuth2.0
今更聞けないOAuth2.0
 
プロトコルから見るID連携
プロトコルから見るID連携プロトコルから見るID連携
プロトコルから見るID連携
 
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
V1.1 CD03 Azure Active Directory B2C/B2B コラボレーションによる Customer Identity and Ac...
 
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
 
Azure ADとWindows 10によるドメイン環境の拡張
Azure ADとWindows 10によるドメイン環境の拡張Azure ADとWindows 10によるドメイン環境の拡張
Azure ADとWindows 10によるドメイン環境の拡張
 
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
 

Viewers also liked

Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring SecurityDzmitry Naskou
 
STUDY ON CUSTOMER EXPECTATION AND EXPERIENCE ON MOBILE NUMBER PORTABILITY
STUDY ON CUSTOMER EXPECTATION AND EXPERIENCE ON MOBILE NUMBER PORTABILITYSTUDY ON CUSTOMER EXPECTATION AND EXPERIENCE ON MOBILE NUMBER PORTABILITY
STUDY ON CUSTOMER EXPECTATION AND EXPERIENCE ON MOBILE NUMBER PORTABILITYMehul Rathod
 
Etude Métiers et Compétences du marketing et de la communication dans un cont...
Etude Métiers et Compétences du marketing et de la communication dans un cont...Etude Métiers et Compétences du marketing et de la communication dans un cont...
Etude Métiers et Compétences du marketing et de la communication dans un cont...Nicolas Bariteau
 
Go conference 2017 Lightning talk
Go conference 2017 Lightning talkGo conference 2017 Lightning talk
Go conference 2017 Lightning talkmokelab
 
〇〇なかった話
〇〇なかった話〇〇なかった話
〇〇なかった話h k
 
Alpaca EEF2017 slides
Alpaca EEF2017 slidesAlpaca EEF2017 slides
Alpaca EEF2017 slidesj14159
 
Balancing cost, quality and access with care in online education: the role of...
Balancing cost, quality and access with care in online education: the role of...Balancing cost, quality and access with care in online education: the role of...
Balancing cost, quality and access with care in online education: the role of...University of South Africa (Unisa)
 
New Directions for Digital Branding and Marketing
New Directions for Digital Branding and MarketingNew Directions for Digital Branding and Marketing
New Directions for Digital Branding and MarketingAnandan Pillai
 
The Meaning of the Platform Organization
The Meaning of the Platform OrganizationThe Meaning of the Platform Organization
The Meaning of the Platform OrganizationSimone Cicero
 
IoT Applications based on LoRaWan
IoT Applications based on LoRaWanIoT Applications based on LoRaWan
IoT Applications based on LoRaWanDaniel Koller
 
New base 1014 special 26 march 2017 energy news
New base 1014 special 26 march 2017 energy newsNew base 1014 special 26 march 2017 energy news
New base 1014 special 26 march 2017 energy newsKhaled Al Awadi
 
Understanding deep learning requires rethinking generalization (2017) 2 2(2)
Understanding deep learning requires rethinking generalization (2017)    2 2(2)Understanding deep learning requires rethinking generalization (2017)    2 2(2)
Understanding deep learning requires rethinking generalization (2017) 2 2(2)정훈 서
 
Boostez votre carrière avec AXA ! - Épisode 1 : LinkedIn
Boostez votre carrière avec AXA ! - Épisode 1 : LinkedInBoostez votre carrière avec AXA ! - Épisode 1 : LinkedIn
Boostez votre carrière avec AXA ! - Épisode 1 : LinkedInAXA en France
 
Feeding Florida Together flyer
Feeding Florida Together flyer Feeding Florida Together flyer
Feeding Florida Together flyer Sheila Cassidy
 
2017 ITRC Databreach Summary Report 03212017
2017 ITRC Databreach Summary Report 032120172017 ITRC Databreach Summary Report 03212017
2017 ITRC Databreach Summary Report 03212017CRUZ CERDA
 
What Makes Stanford Special
What Makes Stanford SpecialWhat Makes Stanford Special
What Makes Stanford SpecialChris Yeh
 
Lic. Abel Jimenez, JMS Marketing SEO Tijuana, Resume
Lic. Abel Jimenez, JMS Marketing SEO Tijuana, ResumeLic. Abel Jimenez, JMS Marketing SEO Tijuana, Resume
Lic. Abel Jimenez, JMS Marketing SEO Tijuana, ResumeAbel Cardenas
 
Event Report - SAP Ariba Live - The quest to make procurement awesome
Event Report - SAP Ariba Live - The quest to make procurement awesomeEvent Report - SAP Ariba Live - The quest to make procurement awesome
Event Report - SAP Ariba Live - The quest to make procurement awesomeHolger Mueller
 
El trastorno mental del Omelette
El trastorno mental del OmeletteEl trastorno mental del Omelette
El trastorno mental del OmeletteAlberto Levy
 

Viewers also liked (20)

Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
 
Estrategia empresarial
Estrategia empresarial Estrategia empresarial
Estrategia empresarial
 
STUDY ON CUSTOMER EXPECTATION AND EXPERIENCE ON MOBILE NUMBER PORTABILITY
STUDY ON CUSTOMER EXPECTATION AND EXPERIENCE ON MOBILE NUMBER PORTABILITYSTUDY ON CUSTOMER EXPECTATION AND EXPERIENCE ON MOBILE NUMBER PORTABILITY
STUDY ON CUSTOMER EXPECTATION AND EXPERIENCE ON MOBILE NUMBER PORTABILITY
 
Etude Métiers et Compétences du marketing et de la communication dans un cont...
Etude Métiers et Compétences du marketing et de la communication dans un cont...Etude Métiers et Compétences du marketing et de la communication dans un cont...
Etude Métiers et Compétences du marketing et de la communication dans un cont...
 
Go conference 2017 Lightning talk
Go conference 2017 Lightning talkGo conference 2017 Lightning talk
Go conference 2017 Lightning talk
 
〇〇なかった話
〇〇なかった話〇〇なかった話
〇〇なかった話
 
Alpaca EEF2017 slides
Alpaca EEF2017 slidesAlpaca EEF2017 slides
Alpaca EEF2017 slides
 
Balancing cost, quality and access with care in online education: the role of...
Balancing cost, quality and access with care in online education: the role of...Balancing cost, quality and access with care in online education: the role of...
Balancing cost, quality and access with care in online education: the role of...
 
New Directions for Digital Branding and Marketing
New Directions for Digital Branding and MarketingNew Directions for Digital Branding and Marketing
New Directions for Digital Branding and Marketing
 
The Meaning of the Platform Organization
The Meaning of the Platform OrganizationThe Meaning of the Platform Organization
The Meaning of the Platform Organization
 
IoT Applications based on LoRaWan
IoT Applications based on LoRaWanIoT Applications based on LoRaWan
IoT Applications based on LoRaWan
 
New base 1014 special 26 march 2017 energy news
New base 1014 special 26 march 2017 energy newsNew base 1014 special 26 march 2017 energy news
New base 1014 special 26 march 2017 energy news
 
Understanding deep learning requires rethinking generalization (2017) 2 2(2)
Understanding deep learning requires rethinking generalization (2017)    2 2(2)Understanding deep learning requires rethinking generalization (2017)    2 2(2)
Understanding deep learning requires rethinking generalization (2017) 2 2(2)
 
Boostez votre carrière avec AXA ! - Épisode 1 : LinkedIn
Boostez votre carrière avec AXA ! - Épisode 1 : LinkedInBoostez votre carrière avec AXA ! - Épisode 1 : LinkedIn
Boostez votre carrière avec AXA ! - Épisode 1 : LinkedIn
 
Feeding Florida Together flyer
Feeding Florida Together flyer Feeding Florida Together flyer
Feeding Florida Together flyer
 
2017 ITRC Databreach Summary Report 03212017
2017 ITRC Databreach Summary Report 032120172017 ITRC Databreach Summary Report 03212017
2017 ITRC Databreach Summary Report 03212017
 
What Makes Stanford Special
What Makes Stanford SpecialWhat Makes Stanford Special
What Makes Stanford Special
 
Lic. Abel Jimenez, JMS Marketing SEO Tijuana, Resume
Lic. Abel Jimenez, JMS Marketing SEO Tijuana, ResumeLic. Abel Jimenez, JMS Marketing SEO Tijuana, Resume
Lic. Abel Jimenez, JMS Marketing SEO Tijuana, Resume
 
Event Report - SAP Ariba Live - The quest to make procurement awesome
Event Report - SAP Ariba Live - The quest to make procurement awesomeEvent Report - SAP Ariba Live - The quest to make procurement awesome
Event Report - SAP Ariba Live - The quest to make procurement awesome
 
El trastorno mental del Omelette
El trastorno mental del OmeletteEl trastorno mental del Omelette
El trastorno mental del Omelette
 

Similar to Microservices /w Spring Security OAuth

開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリングAmazon Web Services Japan
 
FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理fisuda
 
App012 linux java_にも対応!_azure_service_fabric_を
App012 linux java_にも対応!_azure_service_fabric_をApp012 linux java_にも対応!_azure_service_fabric_を
App012 linux java_にも対応!_azure_service_fabric_をTech Summit 2016
 
App012 linux java_にも対応!_azure_service_fabric_を
App012 linux java_にも対応!_azure_service_fabric_をApp012 linux java_にも対応!_azure_service_fabric_を
App012 linux java_にも対応!_azure_service_fabric_をTech Summit 2016
 
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォームAWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォームHiroki Takeda
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門土岐 孝平
 
Serverless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すServerless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すMasayuki Kato
 
【AWS共催】"Hosted Rancher on AWS" オンラインミートアップ
【AWS共催】"Hosted Rancher on AWS" オンラインミートアップ【AWS共催】"Hosted Rancher on AWS" オンラインミートアップ
【AWS共催】"Hosted Rancher on AWS" オンラインミートアップJunji Nishihara
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.Kensaku Komatsu
 
「金融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
 
サーバーレス時代の システム設計ワークショップ
サーバーレス時代の システム設計ワークショップサーバーレス時代の システム設計ワークショップ
サーバーレス時代の システム設計ワークショップMasahiro NAKAYAMA
 
Chromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそうChromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそうmganeko
 
動画配信プラットフォームOn AWS
動画配信プラットフォームOn AWS動画配信プラットフォームOn AWS
動画配信プラットフォームOn AWSKiyonori Kitasako
 
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...Tatsuo Kudo
 
「Swagger」によるAPI仕様の管理と標準化
「Swagger」によるAPI仕様の管理と標準化「Swagger」によるAPI仕様の管理と標準化
「Swagger」によるAPI仕様の管理と標準化Masatoshi Tsuchino
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みShinichiro Arai
 
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースMasaaki Nabeshima
 

Similar to Microservices /w Spring Security OAuth (20)

開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング開発者におくるサーバーレスモニタリング
開発者におくるサーバーレスモニタリング
 
FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理FIWARE の ID 管理、アクセス制御、API 管理
FIWARE の ID 管理、アクセス制御、API 管理
 
Spring social の基礎
Spring social の基礎Spring social の基礎
Spring social の基礎
 
App012 linux java_にも対応!_azure_service_fabric_を
App012 linux java_にも対応!_azure_service_fabric_をApp012 linux java_にも対応!_azure_service_fabric_を
App012 linux java_にも対応!_azure_service_fabric_を
 
App012 linux java_にも対応!_azure_service_fabric_を
App012 linux java_にも対応!_azure_service_fabric_をApp012 linux java_にも対応!_azure_service_fabric_を
App012 linux java_にも対応!_azure_service_fabric_を
 
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォームAWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
Serverless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すServerless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指す
 
【AWS共催】"Hosted Rancher on AWS" オンラインミートアップ
【AWS共催】"Hosted Rancher on AWS" オンラインミートアップ【AWS共催】"Hosted Rancher on AWS" オンラインミートアップ
【AWS共催】"Hosted Rancher on AWS" オンラインミートアップ
 
Ietf95 http2
Ietf95 http2Ietf95 http2
Ietf95 http2
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
 
「金融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
 
サーバーレス時代の システム設計ワークショップ
サーバーレス時代の システム設計ワークショップサーバーレス時代の システム設計ワークショップ
サーバーレス時代の システム設計ワークショップ
 
Chromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそうChromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそう
 
動画配信プラットフォームOn AWS
動画配信プラットフォームOn AWS動画配信プラットフォームOn AWS
動画配信プラットフォームOn AWS
 
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
FAPI (Financial-grade API) and CIBA (Client Initiated Backchannel Authenticat...
 
「Swagger」によるAPI仕様の管理と標準化
「Swagger」によるAPI仕様の管理と標準化「Swagger」によるAPI仕様の管理と標準化
「Swagger」によるAPI仕様の管理と標準化
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
 
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
 

Microservices /w Spring Security OAuth

  • 1. Copyright©2016 NTT corp. All Rights Reserved. Microservices /w Spring Security OAuth NTT ソフトウェアイノベーションセンタ 角田誠 2016年3月9日
  • 2. 2Copyright©2016 NTT corp. All Rights Reserved. • 認可フレームワークであるOAuthを,マイクロサービ ス・アーキテクチャで構築されたアプリケーションを構 成する各サービスへのアクセス時に利用することを想定 して,OAuthの実装であるSpring Security OAuth を用いて行ったいくつかの実験についての報告。 本日の内容
  • 3. 3Copyright©2016 NTT corp. All Rights Reserved. • 「In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.」 • James Lewis, Martin Fowler, • “Microservices a definition of this new architectual term”, • http://martinfowler.com/articles/microservices.html おさらい(Microservices)
  • 4. 4Copyright©2016 NTT corp. All Rights Reserved. • 単一のアプリケーションを小さなサービス群の組み合わ せとして構築する手法。 • 個々のサービスは自身のプロセス上で動作する。 おさらい(Microservices)
  • 5. 5Copyright©2016 NTT corp. All Rights Reserved. • スケールさせるときは,アプリケーション全体ではな く,個々のサービスごとに多重化できるので効率が良 い。 おさらい(Microservices)
  • 6. 6Copyright©2016 NTT corp. All Rights Reserved. • サードパーティ製のアプリケーション(≒クライアント) から,Webサービスを提供するサーバ(≒リソース, サービス)への,限定的なアクセスを可能にする認可フ レームワーク。 • RFC6749(OAuth2) おさらい(OAuth)
  • 7. 7Copyright©2016 NTT corp. All Rights Reserved. • OAuth以前 - クライアントサーバ型の認証モデル • エンドユーザは,Webサービスにアクセスするための認証情報 をサードパーティ製のアプリケーションに伝える。 おさらい(OAuth) サードパーティ製の アプリケーション (クライアント) Webサービス エンドユーザの権限の 範囲内での 無制限のアクセス
  • 8. 8Copyright©2016 NTT corp. All Rights Reserved. • OAuthの認証・認可モデル • エンドユーザは,Webサービスにアクセスするための認証情報 をサードパーティ製のアプリケーションに伝える必要がない。 おさらい(OAuth) Webサービス限定されたアクセス アクセスの限定 サードパーティ製の アプリケーション (クライアント)
  • 9. 9Copyright©2016 NTT corp. All Rights Reserved. • OAuthの四つのロール おさらい(OAuth) クライアント 認可サーバ リソースサーバ ・リソースオーナの許可を得てリソースサー バにアクセスする,ブラウザ上またはWeb サーバ上で動作するアプリケーション。 リソースオーナ ・保護されたリソースを ホストするサーバ。 ・リソースオーナの認証と,リソース オーナから認可を取得し,クライアント にアクセストークンを発行するサーバ。 ・クライアントにリソースサーバ へのアクセスを許可する。 ・エンドユーザ。 アクセストークン
  • 10. 10Copyright©2016 NTT corp. All Rights Reserved. • 認可グラント • リソースオーナによる認可を示す。 • 認可サーバは認可グラントに基づき,クライアントにアクセス トークンを発行する。 • 四つのタイプがあり,それぞれでアクセストークン発行手順が 異なる。 おさらい(OAuth) クライアントがリソースサーバに アクセスするときに必要なトークン
  • 11. 11Copyright©2016 NTT corp. All Rights Reserved. • 四つのグラントタイプ • 認可コード • インプリシット • リソースオーナパスワードクレデンシャル • クライアントクレデンシャル おさらい(OAuth) OAuthといって普通にイメージするのはこのあたり。 エンドユーザはクライアントに対し認可の範囲を限定 できる。
  • 12. 12Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラント • クライアントからリソースサーバへのアクセスを,エンドユー ザが認可することで,アクセストークンを発行する。 おさらい(OAuth) クライアント 認可サーバ ユーザ エージェント (Webブラウザ) (1)リソースサーバへのアクセス事象発生 (2)認可サーバへの リダイレクト指示 (3)リダイレクト (4)認可要求 (5)認可 要求 (7)認可 (8)認可コード + クライアントへのリダイレクト指示 (10)認可コードによりア クセストークン要求 (9)リダイレクト /w 認可コード (11)アクセストークン (6)認可(エンドユーザはクライアントに対して認可の範囲を限定できる。) リソースサーバ(12)リソースサーバへのアクセス
  • 13. 13Copyright©2016 NTT corp. All Rights Reserved. • クライアントクレデンシャルグラント • エンドユーザとは関係なく,クライアントを認証し,アクセス トークンを発行する。 おさらい(OAuth) クライアント 認可サーバ (1)リソースサーバへの アクセス事象発生 (2)クライアントの認証情報 (3)アクセストークン リソースサーバ(4)リソースサーバへのアクセス
  • 14. 14Copyright©2016 NTT corp. All Rights Reserved. • Spring Bootによるサービスの実現 • Eurekaによるサービスの登録・発見 SpringとMicroservices
  • 15. 15Copyright©2016 NTT corp. All Rights Reserved. • Spring Security OAuth • Spring Securityの関連プロジェクト • 認可サーバ,リソースサーバ,クライアントの作成をサポート • 今回は,Spring Security OAuthの細かな設定などの説明は割 愛。 SpringとOAuth
  • 16. 16Copyright©2016 NTT corp. All Rights Reserved. • Spring BootやSpring Security OAuthを使った Microservicesなアプリケーションで,サービス(リ ソースサーバ)から他のサービスの呼び出しでも,エン ドユーザが認可した範囲に限定したアクセスを行う。 実現したいこと(1) クライアント エンドユーザが認可した範囲での限定したアクセス Microservicesでいうところのサービスを OAuthのリソースサーバとして実現
  • 17. 17Copyright©2016 NTT corp. All Rights Reserved. 認可サーバ 認可サーバ • Spring Security OAuthで作ったクライアントやリ ソースサーバが,Eurekaサーバに登録された,多重化 されたリソースサーバや認可サーバのうちのどれかを選 んでアクセスする。 実現したいこと(2) クライアント
  • 18. 18Copyright©2016 NTT corp. All Rights Reserved. • クライアントからリソースサーバへのアクセス • リソースサーバはクライアントに対して,REST APIを提供す る。 • クライアントは,REST APIに普通にアクセスするときに使う RestTemplateの代わりにOAuth2RestTemplateを使って,リ ソースサーバにアクセスする。 Spring Security OAuth @RestController public class ClientController { @Value("${config.oauth2.resourceURI}") private String resourceUri; @Autowired private OAuth2RestTemplate restTemplate; @RequestMapping("/") public String home() { return restTemplate.getForObject(resourceUri, String.class); } }
  • 19. 19Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • クライアントからリソースサーバへのアクセスが必要になる。 Spring Security OAuth クライアント リソースサーバ
  • 20. 20Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • クライアントからリソースサーバへのアクセスが必要になる。 • クライアントは,OAuth2RestTemplateを使いリソースサー バにアクセスしようとする。 Spring Security OAuth クライアント リソースサーバOAuth2 RestTemplate Controller
  • 21. 21Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • クライアントからリソースサーバへのアクセスが必要になる。 • クライアントは,OAuth2RestTemplateを使いリソースサー バにアクセスしようとする。 • UserRedirectRequiredExceptionが投げられる。 Spring Security OAuth クライアント リソースサーバOAuth2 RestTemplate Controller UserRedirect RequiredException
  • 22. 22Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • OAuth2ClientContextFilterがキャッチしてブラウザのロケー ションを認可サーバにリダイレクトさせる。 Spring Security OAuth クライアント リソースサーバOAuth2 RestTemplate Controller OAuth2 ClientContextFilter UserRedirect RequiredException 認可サーバ
  • 23. 23Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • OAuth2ClientContextFilterがキャッチしてブラウザのロケー ションを認可サーバにリダイレクトさせる。 • ユーザの認証・認可が行われる。 Spring Security OAuth クライアント リソースサーバOAuth2 RestTemplate Controller OAuth2 ClientContextFilter 認可サーバ認証・認可
  • 24. 24Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • OAuth2ClientContextFilterがキャッチしてブラウザのロケー ションを認可サーバにリダイレクトさせる。 • ユーザの認証・認可が行われる。 • 元のクライアントのURLにリダイレクトされ,再度コントロー ラが呼ばれる。 Spring Security OAuth クライアント リソースサーバOAuth2 RestTemplate Controller OAuth2 ClientContextFilter 認可サーバ 認可コード
  • 25. 25Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • 再度,OAuth2RestTemplateを使いリソースサーバにアクセ スしようとする。 Spring Security OAuth クライアント リソースサーバOAuth2 RestTemplate Controller OAuth2 ClientContextFilter 認可サーバ 認可コード
  • 26. 26Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • 再度,OAuth2RestTemplateを使いリソースサーバにアクセ スしようとする。 • 認可サーバからアクセストークンを取得する。 Spring Security OAuth クライアント リソースサーバOAuth2 RestTemplate Controller OAuth2 ClientContextFilter 認可サーバ 認可コード 認可コード アクセストークン
  • 27. 27Copyright©2016 NTT corp. All Rights Reserved. • 認可コードグラントによるリソースサーバへのアクセス の流れ • 再度,OAuth2RestTemplateを使いリソースサーバにアクセ スしようとする。 • 認可サーバからアクセストークンを取得する。 • リソースサーバにアクセスする。 Spring Security OAuth クライアント リソースサーバOAuth2 RestTemplate Controller OAuth2 ClientContextFilter 認可サーバ 認可コード 認可コード アクセストークン アクセストークン
  • 28. 28Copyright©2016 NTT corp. All Rights Reserved. • Spring BootやSpring Security OAuthを使った Microservicesなアプリケーションで,サービス(リ ソースサーバ)から他のサービスの呼び出しでも,エン ドユーザが認可した範囲に限定したアクセスを行う。 実現したいこと(1) クライアント エンドユーザが認可した範囲での限定したアクセス Microservicesでいうところのサービスを OAuthのリソースサーバとして実現
  • 29. 29Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバ(A)(サービス)から他のリソースサーバ (B)へのアクセスにOAuthを使うには…。 リソースサーバ(A)から他のリソースサーバ(B)へのアクセス クライアント リソースサーバ (B) リソースサーバ (A) アクセストークン アクセストークン 認可サーバ
  • 30. 30Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバ(A)(サービス)から他のリソースサーバ (B)へのアクセスにOAuthを使うには…。 • 認可コードグラント? • リソースサーバ(A)にアクセスしているのはクライアントや他のリ ソースサーバであって,エンドユーザではない。 • エンドユーザに認可を求めることができない。 リソースサーバ(A)から他のリソースサーバ(B)へのアクセス クライアント リソースサーバ (B) リソースサーバ (A) アクセストークン アクセストークン 認証・認可 認可サーバ
  • 31. 31Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバ(A)(サービス)から他のリソースサーバ (B)へのアクセスにOAuthを使うには…。 • クライアントクレデンシャルグラントを使うのが普通(多分)。 • エンドユーザは介入しない。 • リソースサーバ(A)をクライアントとして認可サーバが認証でき る。 • リソースサーバ(A)に与えられたスコープで,リソースサーバ(B) にアクセスできる。 • つまり,エンドユーザの認可は反映されない。 リソースサーバ(A)から他のリソースサーバ(B)へのアクセス 認可サーバ リソースサーバ(A)の認証情報 アクセストークン リソースサーバ (B) リソースサーバ(B)へのアクセス リソースサーバ (A)
  • 32. 32Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバ(A)(サービス)から他のリソースサーバ (B)へのアクセスにOAuthを使うには…。 • エンドユーザの認可を反映しつつ,リソースサーバ(A)からリ ソースサーバ(B)にアクセスしたい。 リソースサーバ(A)から他のリソースサーバ(B)へのアクセス
  • 33. 33Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバ(A)(サービス)から他のリソースサーバ (B)へのアクセスにOAuthを使うには…。 • クライアントは,リソースサーバ(A)にアクセスするとき,認 可コードグラントで,ユーザの認可が反映されたアクセストー クンを受け取ることができる。 • リソースサーバ(A)はこのアクセストークンをクライアントか ら受け取る。 リソースサーバ(A)から他のリソースサーバ(B)へのアクセス クライアント リソースサーバ (B) リソースサーバ (A) アクセストークン アクセストークン 認可サーバ
  • 34. 34Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバ(A)(サービス)から他のリソースサーバ (B)へのアクセスにOAuthを使うには…。 • リソースサーバ(A)がクライアントから受け取ったアクセス トークンをそのままリソースサーバ(B)へのアクセスに使えば …。 • JWT(JSON Web Token)なアクセストークンを使えば,改ざん防 止とリソースサーバ内での検証が可能。 リソースサーバ(A)から他のリソースサーバ(B)へのアクセス クライアント リソースサーバ (B) リソースサーバ (A) アクセストークン アクセストークン 認可サーバ アクセストークン
  • 35. 35Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバ(A)(サービス)から他のリソースサーバ (B)へのアクセスにOAuthを使うには…。 • リソースサーバ(A)がクライアントから受け取ったアクセス トークンをそのままリソースサーバ(B)へのアクセスに使えば …。 リソースサーバから他のリソースサーバへのアクセス @RequestMapping("/") public String resource(OAuth2Authentication principal) { // 認証情報に含まれるアクセストークンを取得し, String tokenValue = ((OAuth2AuthenticationDetails)principal.getDetails()).getTokenValue(); // リソーサーバ(B)へのアクセスに使う // OAuth2RestTemplateのOAuth2ClientContextに埋め込む OAuth2ClientContext context = ((OAuth2RestTemplate)restTemplate).getOAuth2ClientContext(); context.setAccessToken(new DefaultOAuth2AccessToken(tokenValue)); return "resource server! -> " + restTemplate.getForObject(resourceUri, String.class); }
  • 36. 36Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバ(A)(サービス)から他のリソースサーバ (B)へのアクセスにOAuthを使うには…。 • リソースサーバ(A)がクライアントから受け取ったアクセス トークンをそのままリソースサーバ(B)へのアクセスに使えば …。 • 期待通りにエンドユーザが認可した権限の範囲で,リソース サーバ(A)からリソースサーバ(B)へのアクセスが可能になる。 リソースサーバから他のリソースサーバへのアクセス
  • 37. 37Copyright©2016 NTT corp. All Rights Reserved. 認可サーバ 認可サーバ • Spring Security OAuthで作ったクライアントやリ ソースサーバが,Eurekaサーバに登録された,多重化 されたリソースサーバや認可サーバのうちのどれかを選 んでアクセスする。 実現したいこと(2) クライアント
  • 38. 38Copyright©2016 NTT corp. All Rights Reserved. • クライアントから多重化されたリソースサーバにアクセ スする。 EurekaとSpring Security OAuth 認可サーバ 認可サーバ クライアント
  • 39. 39Copyright©2016 NTT corp. All Rights Reserved. • クライアントから多重化されたリソースサーバにアクセ スする。 • クライアントから多重化された認可サーバにアクセスす る。 EurekaとSpring Security OAuth 認可サーバ 認可サーバ クライアント
  • 40. 40Copyright©2016 NTT corp. All Rights Reserved. • クライアントから多重化されたリソースサーバにアクセ スする。 • クライアントから多重化された認可サーバにアクセスす る。 • リソースサーバから多重化された認可サーバにアクセス する。 EurekaとSpring Security OAuth 認可サーバ 認可サーバ クライアント
  • 41. 41Copyright©2016 NTT corp. All Rights Reserved. • クライアントから多重化されたリソースサーバにアクセ スする。 EurekaとSpring Security OAuth 認可サーバ 認可サーバ クライアント
  • 42. 42Copyright©2016 NTT corp. All Rights Reserved. • クライアントから多重化されたリソースサーバにアクセ スする。 • Eurekaに登録されたサービスに普通にアクセスするときとほぼ 一緒。 EurekaとSpring Security OAuth @Autowired private OAuth2RestOperations restTemplate; @Autowired private LoadBalancerClient loadBalancer; @RequestMapping("/") public String home() { // resourceNameに該当するサービスを一つ選択しURIを構築する。 String uri = loadBalancer.choose(resourceName).getUri() + resourcePath; return restTemplate.getForObject(uri, String.class); }
  • 43. 43Copyright©2016 NTT corp. All Rights Reserved. • クライアントから多重化された認可サーバにアクセスす る。 EurekaとSpring Security OAuth 認可サーバ 認可サーバ クライアント
  • 44. 44Copyright©2016 NTT corp. All Rights Reserved. • クライアントから多重化された認可サーバにアクセスす る。 EurekaとSpring Security OAuth あらかじめ設定した内容に 基づいてSpring Security OAuthが勝手に認可サーバ にアクセスする。
  • 45. 45Copyright©2016 NTT corp. All Rights Reserved. • クライアントから多重化された認可サーバにアクセスす る。 EurekaとSpring Security OAuth Spring Security OAuth で提供されているクラス を拡張する必要がある。 あらかじめ設定した内容に 基づいてSpring Security OAuthが勝手に認可サーバ にアクセスする。
  • 46. 46Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバから多重化された認可サーバにアクセス する。 EurekaとSpring Security OAuth 認可サーバ 認可サーバ クライアント
  • 47. 47Copyright©2016 NTT corp. All Rights Reserved. • リソースサーバから多重化された認可サーバにアクセス する。 • JWT使用時,リソースサーバから認可サーバにアクセスするの は,起動時の一度のみ。 • アクセストークン検証用の鍵を認可サーバに取りに行く。 • org.springframework.boot.autoconfigure.security.oauth2.r esource.ResourceServerTokenServicesConfigurationの中 • リソースサーバ起動時に,Eurekaで見つけた認可サーバに鍵を 取りに行くようにすればOK。 • そもそも,設定ファイル(e.g. application.yml)に鍵を書いて おけば,認可サーバにアクセスする必要はない…。 EurekaとSpring Security OAuth
  • 48. 48Copyright©2016 NTT corp. All Rights Reserved. • OAuthで,リソースサーバ(A)が他のリソースサーバ (B)にアクセスするときに必要となるアクセストークン は,リソースサーバ(A)がクライアントから受け取った アクセストークンを流用できる。 • OAuthで,クライアントから多重化されたリソース サーバへのアクセスは,多重化されたサービスに普通に アクセスするときとほぼ一緒。 • クライアントやリソースサーバから多重化された認可 サーバへのアクセスは,少し頑張れば可能。 まとめ