SlideShare a Scribd company logo
1 of 34
Download to read offline
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OCHaCafe#5
避けては通れない 認証・認可
日本オラクル株式会社
2019年 4月19日
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
本日の内容
1. 認証・認可の仕組み
- OAuth
- OpenID Connect
2. Oracleの提供する認証・認可サービス
- Oracle Identity Cloud Service
3. OpenID Connectの実装実践とデモ
2
休憩
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | 3
1.認証・認可の仕組み
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
認証・認可の“連携“プロトコル
• 認証プロトコル
– IDとパスワードを直接渡して、照合(認証)すること。
– 例: LDAPによる認証(bind操作)
• 認証・認可の“連携“プロトコル
– 自サイトで認証を行わない。
– 他サイトに認証を委託し、結果(認証情報)をもってユーザを識別する。自サイトでは
パスワードを持たなくてよい。
• SAML 1.1, 2.0
• WS-Federation
• OpenID 2.0
• OAuth 2.0
• OpenID Connect 1.0
4
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
主流のアクセス情報連携のプロトコル
5
SAML 2.0
構造: JSON、RESTベースでメッセージ交換構造:XMLでメッセージ交換
エンタープライズ向け
・開発容易性
・モバイルアプリやSPA(JavaScript)アプリの開発もし易い
社内のSSO(SAML IdP)と連携ニーズ
-ADFSや各社SSOサーバ
-SAMLにしか対応していないことも
他社サービス間での
情報連携
コンシューマー向け用途
・技術自体は確立されている。
標準で容易な実装 エンタープライズ向けサービス
でももちろん可
幅広いユースケースに対応できる。
用途次第ですが、今、アプリを開発するならこっちかなぁ、
という感覚
目的: 認証情報連携 目的: 認証情報 + 認可情報連携
OpenID Connect
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OAuth/OpenID Connectの誕生の背景
• ユーザーのリソースを他のアプリ(パートナーアプリ)に安全に共有したい。
• パートナーアプリにパスワードは教えたくない。
6
従来のWeb SSO
SSOサーバー
アプリA アプリB
アプリAとBが情報を
共有してくれれば便利
なのに
シングルサインオン
?
システム間でユーザーの情報(リソース)の
共有方法
ユーザーのパスワードを登録する
連携用のアプリユーザーを作成
-家計簿サイトに銀行口座のパスワー
ドを教えたいですか?
-ユーザーごとの許可制御が難しい
ユーザーの許可(認可)を
得て、システム間でリソー
スを連携する方式を策定
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OAuthの策定 :
• ユーザーとシステム間で認可情報を扱うプロトコルとして策定
• Facebook, Yahoo!, AOLやGoogleが主導で策定を開始
• 2007年にOAuth 1.0が策定
• 脆弱性が発見され、2009年にOAuth 1.0として改訂
• 改良版として、2012年 OAuth 2.0が策定された。
– RFC 6749: The OAuth 2.0 Authorization Framework
7
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
ところで、本日のお題 “認証・認可”
8
認証
認可
IDやパスワードでユーザーを識別(認証処理)
認証処理によって確定された
ユーザー情報を提供
システムがあるユーザーに特定の処理を
行うことを許可
ユーザーがシステムに自分のリソースに操作
を行うことを許可
OpenID Connect
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OAuth認証?
• 認可は認証が前提
– 認可サーバは、認可情報(アクセストークン)を発行する際に、まずユーザーの認証を行う。
– 簡単だから認証に使ってしまえ! (=OAuth認証)
• アクセストークンの悪用のリスク
– Implicitフローでは、悪意のあるアプリがあっさりユーザーのアクセストークンを取得して、悪用が可能。
– アクセストークンは、Bearer型(持参人式)のトークン
• “誰のトークン“ではなく、持っていれば誰でもトークンが使えてしまう。
– 発行されたアクセストークンは、誰でも利用可能
• 成り済まし
9
OAuthの使い方を誤るとリソースサーバーの不正操作、情報の流出が発生
拡張版として、認証のためにOpenID Connectを策定
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OAuth と OpenID Connectの関係
10
OAuth OpenID Connect
認可 認可 認証 ユーザー属性
・別なプロトコルではなく、OAuthの拡張がOpenID Connect
・リクエストのパラメータで、OAuthかOpenID Connectとしての動作(レスポンス)が決まる。
OpenID Connect 1.0 は, OAuth 2.0 プロトコルの上にシンプルなアイデンティティレイヤーを付与したもの
である. このプロトコルは Client が Authorization Server の認証結果に基づいて End-User のアイデン
ティティを検証可能にする. また同時に End-User の必要最低限のプロフィール情報を, 相互運用可能かつ
RESTful な形で取得することも可能にする.
OpenID Connect Core 1.0 incorporating errata set 1より
http://www.openid.or.jp/document/ より引用
http://openid.net/specs/openid-connect-core-1_0.html
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OAuth / OpenID Connectのシナリオ例
11
街の写真屋さん
リソース・オーナー
ネットの写真サイト
ネットに置いてある
自分の写真を、街の
写真屋さんに印刷し
て欲しい。
写真ファイル
をきれいに
印刷
オーナーさん達
の写真ファイル
を預かってます。
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OAuth / OpenID Connectのアクター(登場人物)
12
クライアント
リソース・オーナー
リソースサーバー
認可サーバー
(OAuth Server)
③写真屋さん(クライアント)にア
クセスを承諾(認可)し、承諾書
の引換券(認可トークン)を取得
⑥承諾書(アクセス・トークン)
を提示して、写真ファイル
(リソース)にアクセス
認可を委任
(例:街の写真屋さん)
リソース・オーナー
クライアント
リソース・サーバー
認可サーバー
(例:ネットの写真サイト)
オーナーさんの承諾
書(アクセストークン)
があれば、ファイルを
出しますよ。
⑤引き換え券を
正式な承諾書(アク
セス・トークン)に引
き換え
②承諾があればで
きますよ
①ネットから自分の
写真をダウンロード
して印刷して!
引換券
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
認可コードフローのシーケンス例
13
リソース・オーナー
(Webブラウザ) 認可サーバー
リソース・サーバー
(写真共有サイト)
クライアント
(写真印刷サイト)
写真共有サイトから画像を参照
認可リクエスト(リダイレクト)
認可エンドポイント
認証(ログイン画面)
認証情報(ID/Pass)
コンセント画面
コンセント応答
認可コードを発行(リダイレクト)
トークンエンドポイント
アクセストークン
リソース(写真一覧)
トークンリクエスト
アクセストークン + リソース取得API(写真一覧) ・アクセス
トークン検証
・認可判断
写真サイトから
写真を取得
写真印刷サイトが
次の権限を求め
てきます。
・写真の参照
はい いいえ
ID
PWD
写真一覧の表示
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
①認可コードリクエスト(OAuthフローの開始)
• リクエスト(GET)
• レスポンス(303 See Other)
14
https://認可サーバー/認可エンドポイント
?client_id=2b0c89ed177d42858d48747f97f03b56
&response_type=code
&redirect_uri=https://localhost:8181/cquotes/return
&scope=get_list view_photo
&state=b621b8e1-eeff-487c-9ef3-ab92a178a720
Location:
https://クライアント/<return_uri>
?code=AQIDBAWaII5T42Sle5s63NpsgF-kEt8GzJI….
OAuthクライアントのID
OAuthのフローのタイプ:認可コードフロー
クライアントへのリダイレクトURL
要求するリソースのスコープ
state(セッション単位で使う乱数値)
クライアントへのリダイレクトURL
認可コード
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
②アクセストークンのリクエスト
• リクエスト(POST)
• レスポンス(200)
15
https://認可サーバー/トークンエンドポイント
リクエスト・ボディ
grant_type=authorization_code
&code= AQIDBAWaII5T42Sle5s63NpsgF-kEt8GzJI….
グラント・タイプ (リクエストの方式指定)
先ほど取得した認可コード
アクセス・トークン
リソースオーナーが提示した認可コードを、クライアントがアクセストークンに引き換え
{
"access_token":"eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRb3oKpEH9h6iqjpptaNnLsEG......",
"token_type":"Bearer",
"expires_in":3600,
"refresh_token":"AQIDBAX6-uRDWMb3oKpEH9h6iqjpptaNnLsEG_Qr4-xB7wYQrf.....",
}
リフレッシュ・トークン
(オプション、scopeにoffline_access
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
アクセストークンの実体…
16
eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRzUVVoeHZ3UnYyT0dSV0hqR24wTFk2ZTJleTJ1MjZOUDQiLCJ4NXQiOiJLUUJSb2pZWTQ3
ZlN2THp1YWRPWkZqcFFzeVUiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In0.eyJ1c2VyX3R6IjoiQXNpYVwvVG9re
W8iLCJzdWIiOiJtb3Rva2kuaXNha2FAb3JhY2xlLmNvbSIsInVzZXJfbG9jYWxlIjoiamEiLCJpZHBfbmFtZSI6ImxvY2FsSURQIiwidX
Nlci50ZW5hbnQubmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJpZHBfZ3VpZCI6ImxvY
2FsSURQIiwiYW1yIjpbIlVTRVJOQU1FX1BBU1NXT1JEIl0sImlzcyI6Imh0dHBzOlwvXC9pZGVudGl0eS5vcmFjbGVjbG91ZC5jb21
cLyIsInVzZXJfdGVuYW50bmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJjbGllbnRfaWQi
OiIwZDhhOTM1MGI1ZGQ0NzM3ODE5NzE0MGI1YjQ0OTc4NSIsInNpZCI6IjY4N2M5NDQzLTgxM2ItNDkzZS05NTY0LTRjYWJm
YjI3ZGU2YyIsInN1Yl90eXBlIjoidXNlciIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MgZW1haWwiLCJjbGllbnRfd
GVuYW50bmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJ1c2VyX2xhbmciOiJqYSIsImV4
cCI6MTU1NTU3MzIxNCwiaWF0IjoxNTU1NTY5NjE0LCJjbGllbnRfZ3VpZCI6ImM4YTI2ZjAxNGJlYjQ5ZjBhY2U0MzJlNDMxMTNh
ODJkIiwiY2xpZW50X25hbWUiOiJpc2FrYV9DdXN0b21lclF1b3RlcyIsImlkcF90eXBlIjoiTE9DQUwiLCJ0ZW5hbnQiOiJpZGNzLWJh
YTZkNDNjZjEwZDRmOTc4YjlmYTJhN2IzYTExZGZmIiwianRpIjoiMzU2ZTc5NmEtOTM3NC00ZWE1LWIyMTktODkxODA3MGY3
MDYyIiwidXNlcl9kaXNwbGF5bmFtZSI6Ik1vdG9raSBJc2FrYSIsInN1Yl9tYXBwaW5nYXR0ciI6InVzZXJOYW1lIiwidG9rX3R5cGUi
OiJBVCIsImF1ZCI6Imh0dHBzOlwvXC9pZGNzLWJhYTZkNDNjZjEwZDRmOTc4YjlmYTJhN2IzYTExZGZmLmlkZW50aXR5Lm9y
YWNsZWNsb3VkLmNvbSIsInVzZXJfaWQiOiI1YjUwM2Y0NmM3MWI0MmJiOGViZjMzOTQxMjQzNjdjYiIsInRlbmFudF9pc3MiOiJ
odHRwczpcL1wvaWRjcy1iYWE2ZDQzY2YxMGQ0Zjk3OGI5ZmEyYTdiM2ExMWRmZi5pZGVudGl0eS5vcmFjbGVjbG91ZC5jb20i
fQ.F0uL7hDRy6ZFds-ACvAxaXNOz04iiOuSdZpefVU-i0wnFOYtty-Qplo66UMlwCoAPxBrA-
__KKPAbve9N5prl6qFOe7QlsJ74hi6wfw4OTIEU4hVL9HsMS8nbSk_oRThIWuDDQ3U1Zp0C8ra5oQNuiz_oxfw0Aw7W7_Wa5yO
WeQgxPDMcvhjsfDpO5eHU5NUZDclurNU_SplaPx60PC4TdozOFCfhnICZYHmn0Gnp5le04UOnVOvQtVaY9vUP4tnjLMaOOFGT
DbcC79W8STfGRKsAqgyk7bZIYoOC8TT1e-lFhffIavkpdvvnOaYioJcNtq4nKgpCSRd4Ei0GRy9vw
eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRzUVVoeHZ3UnYyT0dSV0hqR24wTFk2ZTJleTJ1MjZOUDQiLCJ4NXQiOiJLUUJSb2pZWTQ3
ZlN2THp1YWRPWkZqcFFzeVUiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In0.eyJ1c2VyX3R6IjoiQXNpYVwvVG9re
W8iLCJzdWIiOiJtb3Rva2kuaXNha2FAb3JhY2xlLmNvbSIsInVzZXJfbG9jYWxlIjoiamEiLCJpZHBfbmFtZSI6ImxvY2FsSURQIiwidX
Nlci50ZW5hbnQubmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJpZHBfZ3VpZCI6ImxvY
2FsSURQIiwiYW1yIjpbIlVTRVJOQU1FX1BBU1NXT1JEIl0sImlzcyI6Imh0dHBzOlwvXC9pZGVudGl0eS5vcmFjbGVjbG91ZC5jb21
cLyIsInVzZXJfdGVuYW50bmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJjbGllbnRfaWQi
OiIwZDhhOTM1MGI1ZGQ0NzM3ODE5NzE0MGI1YjQ0OTc4NSIsInNpZCI6IjY4N2M5NDQzLTgxM2ItNDkzZS05NTY0LTRjYWJm
YjI3ZGU2YyIsInN1Yl90eXBlIjoidXNlciIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MgZW1haWwiLCJjbGllbnRfd
GVuYW50bmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJ1c2VyX2xhbmciOiJqYSIsImV4
cCI6MTU1NTU3MzIxNCwiaWF0IjoxNTU1NTY5NjE0LCJjbGllbnRfZ3VpZCI6ImM4YTI2ZjAxNGJlYjQ5ZjBhY2U0MzJlNDMxMTNh
ODJkIiwiY2xpZW50X25hbWUiOiJpc2FrYV9DdXN0b21lclF1b3RlcyIsImlkcF90eXBlIjoiTE9DQUwiLCJ0ZW5hbnQiOiJpZGNzLWJh
YTZkNDNjZjEwZDRmOTc4YjlmYTJhN2IzYTExZGZmIiwianRpIjoiMzU2ZTc5NmEtOTM3NC00ZWE1LWIyMTktODkxODA3MGY3
MDYyIiwidXNlcl9kaXNwbGF5bmFtZSI6Ik1vdG9raSBJc2FrYSIsInN1Yl9tYXBwaW5nYXR0ciI6InVzZXJOYW1lIiwidG9rX3R5cGUi
OiJBVCIsImF1ZCI6Imh0dHBzOlwvXC9pZGNzLWJhYTZkNDNjZjEwZDRmOTc4YjlmYTJhN2IzYTExZGZmLmlkZW50aXR5Lm9y
YWNsZWNsb3VkLmNvbSIsInVzZXJfaWQiOiI1YjUwM2Y0NmM3MWI0MmJiOGViZjMzOTQxMjQzNjdjYiIsInRlbmFudF9pc3MiOiJ
odHRwczpcL1wvaWRjcy1iYWE2ZDQzY2YxMGQ0Zjk3OGI5ZmEyYTdiM2ExMWRmZi5pZGVudGl0eS5vcmFjbGVjbG91ZC5jb20i
fQ.F0uL7hDRy6ZFds-ACvAxaXNOz04iiOuSdZpefVU-i0wnFOYtty-Qplo66UMlwCoAPxBrA-
__KKPAbve9N5prl6qFOe7QlsJ74hi6wfw4OTIEU4hVL9HsMS8nbSk_oRThIWuDDQ3U1Zp0C8ra5oQNuiz_oxfw0Aw7W7_Wa5yO
WeQgxPDMcvhjsfDpO5eHU5NUZDclurNU_SplaPx60PC4TdozOFCfhnICZYHmn0Gnp5le04UOnVOvQtVaY9vUP4tnjLMaOOFGT
DbcC79W8STfGRKsAqgyk7bZIYoOC8TT1e-lFhffIavkpdvvnOaYioJcNtq4nKgpCSRd4Ei0GRy9vw
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
アクセストークンのフォーマット: JWT (JSON Web Token)
RFC 7519 https://tools.ietf.org/html/rfc7519
17
• パーティ間で情報を安全に送信するための、コンパクトで自己定義的な方
法を定義する標準
• JSONの形で、必要なデータを全て含む
• JWTの構造 Base64(ヘッダー)+ ”." + Base64(ペイロード)+ ”." +署名
Header
{
"alg": ”HS256”,
"typ": "JWT"
}
Payload
{
"sub": " taro.suzuki",
"iss": "https://identity.oraclecloud.com/",
"scope": "urn:opc:idm:t.security.client"
}
Signature
RSASHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
アクセストークンの例(抜粋)
18
{
"user_tz": "Asia/Tokyo",
"sub": “taro.suzuki",
"idp_name": "localIDP",
"user.tenant.name": "idcs-1234",
"iss": "https://identity.oraclecloud.com/",
"user_tenantname": "idcs-1234",
"exp": 1535366702,
"iat": 1535363102,
"client_guid": "0af724545f624c18b85…",
“client_name”: “Local Print Service",
"tenant": "idcs-1234",
"jti": "bc8479c9-17e9-4430-b9b0-1cf51185f567",
"user_displayname": “Taro Tanaka",
"sub_mappingattr": "userName",
"tok_type": "AT",
"aud": "https://photo.com/view",
"scope": "quote"
"user_id": "5b503f46c71b"
}
Taro.Suzukiさん(リソース・オーナー)が、 Local Print Service(クライアント)に、
https://photo.com/view(リソース)にアクセスを許可(認可)
Audience(誰に)
スコープ(何を許可)
リソースオーナー (誰が)
認可サーバー
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
アクセストークンの検証
• リソース・サーバーではクライアントが提示したアクセストークンの有効性を検証する必要がある。
19
方法1:リソースサーバー自身で検証
・署名検証
認可サーバーが発行したものか?
改ざんされていないか?
・自分自身宛か?
Audienceの確認
・有効期限
・アクセストークンの取り消しの検知が
できない。
方法2: 認可サーバーの検証機能を利用
・イントロスペクション・エンドポイントを利用
アクセストークンを送付して検証実施
・実装が容易
・アクセストークンの取り消しの検知が可能
{
"active": true,
"client_id": "l238j323ds-23ij4",
"username": "jdoe",
“scope”: “view",
"sub": "Z5O3upPC88QrAjx00dis",
“aud”: “https://リソースサーバー/resource",
"iss": "https://server.example.com/",
"exp": 1419356238,
"iat": 1419350238,
"extension_field": "twenty-seven"
}
{
"active": false
}
有効時の応答例 無効時の応答例
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
クライアントのタイプとOAuthのフロー
20
機密クライアント
クレデンシャルを
機密に扱えない
パブリック・クライアント
トークンの取得には、クライアントに認証が必要。
正しく認可コードをクライアントに渡せば、安全に
アクセストークンが扱われる。
安全にクレデンシャルを保持的ないため、クライアント
を検証(認証)できない。クライアントを認証しない
フローが用いられる。
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
パブリッククライアントの認可コードフロー例
21
システム
ブラウザ
認可サーバー
リソース・サーバー
(写真共有サイト)
クライアント
(写真印刷サイト)
認可コードフローを開始
認可リクエスト
認可エンドポイント
認証(ログイン画面)
認証情報(ID/Pass)
コンセント画面
コンセント応答
認可コードを発行
トークンエンドポイント
アクセストークン
リソース(写真一覧)
認可コードでトークンリクエスト
アクセストークン + リソース取得API(写真一覧) ・アクセス
トークン検証
・認可判断
写真サイトから
写真を取得
写真印刷サイトが
次の権限を求め
てきます。
・写真の参照
はい いいえ
ID
PWD
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
パブリッククライアントの注意点
• クライアントを認証できないため、認可コードを盗難されたら、容易にアクセストークン
を取得されてします。
• モバイルアプリ(OAuthクライアント)とシステム・ブラウザの間に、マルウェアが入り、
認可コードを盗難できるリスクがある。
• 対策(推奨)
– PKCE(Proof Key for Code Exchange by OAuth Public Clients、RFC 7636)
– クライアントはcode_challengeとよばれるチャレンジ・コードを発行し、code_challenge_methodと呼ば
れる暗号化方式名を送付。 code_challenge認可コードに紐づけることで、盗難時されてもアクセス
トークンを取得ができないようにする。
• ご参考
– Identity cloud service : Mobile clients and PKCE support
• http://www.ateam-oracle.com/identity-cloud-service-mobile-clients-and-pkce-support/
22
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
PKCEを用いた認可コードフローのシーケンス例
23
システム
ブラウザ
認可サーバー
リソース・サーバー
(写真共有サイト)
クライアント
(写真印刷サイト)
認可コードフローを開始
認可リクエスト
認可エンドポイント
認証(ログイン画面)
認証情報(ID/Pass)
コンセント画面
コンセント応答
認可コードを発行
トークンエンドポイント
アクセストークン
認可コード+
アクセストークン + リソース取得API(写真一覧)
・アクセス
トークン検証
・認可判断
写真サイトから
写真を取得
写真印刷サイトが
次の権限を求め
てきます。
・写真の参照
はい いいえ
ID
PWD
認可コード発行、
に紐つけ
code_challenge
code_challenge
_method
code_virifier
に紐づく認可コード
の確認
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OAuthのフロー・タイプ
名称 認可コード・
フロー
インプリシット
・フロー
リソース・オー
ナー・クレデン
シャル・フロー
クライアント・ク
レデンシャル・
フロー
アサーション・
フロー
デバイス・
コード・
フロー
クライアント認証が必
須か
× × × 〇 × ×
クライアントがユー
ザーのPWDを必要と
するか
× × 〇 × × ー
ブラウザ 〇 〇 × × × 〇
アクセストークンのコ
ンテキスト
ユーザー ユーザー ユーザー クライアント アサーション
のサブジェクト
に依存
ー
リフレッシュ・トークン
の利用可否
〇 × 〇 × 〇 〇
24
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OAuth認証?
• 認可は認証が前提
– 認可サーバは、認可情報(アクセストークン)を発行する際に、まずユーザーの認証を行う。
– 簡単だから認証に使ってしまえ! (=OAuth認証)
• アクセストークンの悪用のリスク
– Implicitフローでは、悪意のあるアプリがあっさりユーザーのアクセストークンを取得して、悪用が可能。
– アクセストークンは、Bearer型(持参人式)のトークン
• “誰のトークン“ではなく、持っていれば誰でもトークンが使えてしまう。
– 発行されたアクセストークンは、誰でも利用可能
• 成り済まし
25
OAuthの使い方を誤るとリソースサーバーの不正操作、情報の流出が発生
認証目的には、OpenID Connectを利用
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OpenID Connectによる認証
26
リソース・オーナー
(Webブラウザ)
認証・認可サーバー クライアント
(写真印刷サイト)
ログインボタンをクリック
認可リクエスト(リダイレクト)
認可エンドポイント
認証(ログイン画面)
認可コードを発行(リダイレクト)
トークンエンドポイント
IDトークン、アクセストークン
トークンリクエスト
アクセストークン
+ ユーザー属性取得
IDトークン検証
ログイン状態を生成
/userinfo
必要に応じてより、
追加の取得属性
Sub(対象ユーザー)
Aud(宛先)
有効期限
署名
ログイン完了
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
OpenID Connect/Oauthと“認証”
• OpenID Connect、OAuthではユーザーそのものの認証方法は定めていな
い。
– 認可リクエスト後の認証画面は認可サーバー独自のもの
– 独自の認証方式を実装する
• ID/パスワード認証
• 各種2要素認証
• ソーシャルログイン
• FIDO2、など
• 認証した情報(IDトークン)をクライアントに提供し、クライアントはIDトーク
ンを検証することで、ユーザーを“認証”できる
27
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
①OpenID Connectの実施例
• OAuth / OpenID Connectの使い分け
– リクエストのパラメータで、 OAuthかOpenID Connectなのか決まる。
– scope = openidが必須。Profie、emailで追加情報が取得可能
28
• リクエスト(Get)
• レスポンス(303 See Other)
https://認可サーバー/認可エンドポイント
?client_id=2b0c89ed177d42858d48747f97f03b56
&response_type=code
&redirect_uri=https://クライアント/<return_uri>
&scope=openid
&nonce=b621b8e1-eeff-487c-9ef3-ab92a178a720
&state=ai2zjfie3!
クライアントのID
フローのタイプ
クライアントへのリダイレクトURL
要求するリソースのスコープ:openid
リプレイ攻撃対策(必須)
Location:
https://クライアント/<return_uri>
?code=AQIDBAWaII5T42Sle5s63NpsgF-kEt8GzJI….
クライアントへのリダイレクトURL
認可コード
CSRF対策(オプション)
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
②IDトークン、アクセストークンのリクエスト
• リクエスト(POST)
• レスポンス(200)
29
https://認可サーバー/トークンエンドポイント
リクエスト・ボディ
grant_type=authorization_code
&code= AQIDBAWaII5T42Sle5s63NpsgF-kEt8GzJI….
グラント・タイプ (リクエストの方式指定)
先ほど取得した認可コード
アクセス・トークン
リソースオーナーが提示した認可コードを、クライアントがアクセストークン、IDトークンに引き換え
{
"access_token":"eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRb3oKpEH9h6iqjpptaNnLsEG......",
“token_type”:“Bearer”, "expires_in":3600,
"id_token":"eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRzUVVoeHZ
}
IDトークン
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
IDトークンの例
30
{
"sub": “Taro.Suzuki",
"user_locale": "en",
"idp_name": "localIDP",
"idp_guid": "localIDP",
"amr": [
"USERNAME_PASSWORD"
],
"iss": "https://identity.oraclecloud.com/",
"user_tenantname": "idcs-1234",
"client_id": "2b0c89ed177d42858d48747f97f03b56",
"sid": "dcaffb07-165a-4b8b-9d94-4177cbe52ea9",
"authn_strength": "2",
"azp": "2b0c89ed177d42858d48747f97f03b56",
"auth_time": "1535362883",
"session_exp": 1535391683,
"user_lang": "en",
"exp": 1535391683,
"iat": 1535363102,
"idp_type": "LOCAL",
"tenant": "idcs-1234",
"jti": "29b1585b-fc76-410e-8166-728fbf2412a4",
"user_displayname": “Taro Suzuki",
"sub_mappingattr": "userName",
"tok_type": "IT",
"nonce": "1e1640da-e1c2-45c8-a656…",
"aud": [
"https://identity.oraclecloud.com/",
"2b0c89ed177d42858d48747f97f03b56"
],
"user_id": "5b503f46c71b42bb8ebf3394124367cb"
}
認証された
ユーザーID
宛先
クライアントID
リプレイ
アタック対策
IDトークンでは、aud(宛先)がクライアント
確かに自分(クライアント)向けに発行された認証情報だと分かる
(アクセストークンのaudはリソースサーバー)
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
まとめ
• OAuth
– 認可の仕組み
– アクセストークンのaudは、リソースサーバー
• OpenID Connect
– 認証・認可の仕組み
– アクセストークンのaudは、リソースサーバー
– IDトークンのaudは、クライアント
• 目的とクライアントのタイプで使い分ける。
31
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | 32
2. Oracle Identity Cloud Serviceのご紹介
Copyright © 2019 Oracle and/or its affiliates. All rights reserved. |
Oracle Identity Cloud Service
クラウドネイティブで実装されたIDaaS (ID as a Service)
33
• ID管理
• アクセス管理
• 多要素認証
• プロビジョニング
• モバイル
オンプレミス
Active Directory Oracle Identity
Cloud Service
Oracle IDM
SFDC, Office365
Workday
Box など
シングルサイオン
多要素認証
開発柔軟性
• SMSを用いたワンタイムパスワードや、
iPhone、Android等のモバイル アプリを提供
• 一度認証した端末は、一定期間第2認証
のスキップが可能
• 標準対応(SAML、OAuth 2.0、OpenID Connect)
• 各サービスはIDCSに対して認証することで
シングルサインオンを実現
• オンプレミス環境も含めたハイブリッド環境の
シングルサインオンを実現
• 各種機能をAPIで提供
• ユーザーログイン画面、管理画面などを開発可能
SAML, OAuth2.0, OpenID Connect, SCIMなど
標準技術・標準規格を採用
カスタムアプリ
@クラウド
@オンプレミス
OCHaCafe#5 - 避けては通れない!認証・認可

More Related Content

What's hot

API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細オラクルエンジニア通信
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCdisc99_
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例briscola-tokyo
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルMasaru Kurahayashi
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門土岐 孝平
 
Fido認証概要説明
Fido認証概要説明Fido認証概要説明
Fido認証概要説明FIDO Alliance
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService PrincipalToru Makabe
 
IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?大使 梶原
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Hiroyuki Wada
 
FIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO Alliance
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?Takuya Ueda
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理Naohiro Fujie
 
Azure ADと外部アプリのID連携/SSO - Deep Dive
Azure ADと外部アプリのID連携/SSO - Deep DiveAzure ADと外部アプリのID連携/SSO - Deep Dive
Azure ADと外部アプリのID連携/SSO - Deep DiveNaohiro Fujie
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するHitachi, Ltd. OSS Solution Center.
 
Azure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるNaohiro Fujie
 
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsTatsuo Kudo
 

What's hot (20)

API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
API Gateway - ヘッダー/クエリー変換、認証・認可機能詳細
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 
Fido認証概要説明
Fido認証概要説明Fido認証概要説明
Fido認証概要説明
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
 
FIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へFIDO2 ~ パスワードのいらない世界へ
FIDO2 ~ パスワードのいらない世界へ
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
Azure ADとIdentity管理
Azure ADとIdentity管理Azure ADとIdentity管理
Azure ADとIdentity管理
 
Azure ADと外部アプリのID連携/SSO - Deep Dive
Azure ADと外部アプリのID連携/SSO - Deep DiveAzure ADと外部アプリのID連携/SSO - Deep Dive
Azure ADと外部アプリのID連携/SSO - Deep Dive
 
Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開するKeycloakでFAPIに対応した高セキュリティなAPIを公開する
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
 
Azure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみるAzure AD B2CにIdPを色々と繋いでみる
Azure AD B2CにIdPを色々と繋いでみる
 
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawawsOAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
 

Similar to OCHaCafe#5 - 避けては通れない!認証・認可

The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9Ryo Ito
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションTatsuo Kudo
 
100121 Scis2010 Itoh
100121 Scis2010 Itoh100121 Scis2010 Itoh
100121 Scis2010 ItohHiroki Itoh
 
OpenID Connect, December 2011
OpenID Connect, December 2011OpenID Connect, December 2011
OpenID Connect, December 2011Tatsuo Kudo
 
「金融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
 
Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピング
Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピングAmazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピング
Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピングAmazon Web Services Japan
 
OIDC(OpenID Connect)について解説①
OIDC(OpenID Connect)について解説①OIDC(OpenID Connect)について解説①
OIDC(OpenID Connect)について解説①iPride Co., Ltd.
 
Financial-grade API Hands-on with Authlete
Financial-grade API Hands-on with AuthleteFinancial-grade API Hands-on with Authlete
Financial-grade API Hands-on with AuthleteTatsuo Kudo
 
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15OpenID Foundation Japan
 
「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめjunichi anno
 
FAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのためにFAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのためにNat Sakimura
 
認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向Tatsuo Kudo
 
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FinTechLabs.io
 
Windows Phone で Active Directory 認証 2011.12.1版
Windows Phone で Active Directory 認証 2011.12.1版Windows Phone で Active Directory 認証 2011.12.1版
Windows Phone で Active Directory 認証 2011.12.1版junichi anno
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideTatsuo Kudo
 
Authlete overview
Authlete overviewAuthlete overview
Authlete overviewmtisol
 
Oracle Integration Cloud Process Automation概要資料(20200507版)
Oracle Integration Cloud Process Automation概要資料(20200507版)Oracle Integration Cloud Process Automation概要資料(20200507版)
Oracle Integration Cloud Process Automation概要資料(20200507版)オラクルエンジニア通信
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護Naohiro Fujie
 
OAuth認証再考からのOpenID Connect #devlove
OAuth認証再考からのOpenID Connect #devloveOAuth認証再考からのOpenID Connect #devlove
OAuth認証再考からのOpenID Connect #devloveNov Matake
 

Similar to OCHaCafe#5 - 避けては通れない!認証・認可 (20)

The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9The Latest Specs of OpenID Connect at #idcon 9
The Latest Specs of OpenID Connect at #idcon 9
 
How FIDO Works
How FIDO WorksHow FIDO Works
How FIDO Works
 
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューションOAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
OAuth / OpenID Connect (OIDC) の最新動向と Authlete のソリューション
 
100121 Scis2010 Itoh
100121 Scis2010 Itoh100121 Scis2010 Itoh
100121 Scis2010 Itoh
 
OpenID Connect, December 2011
OpenID Connect, December 2011OpenID Connect, December 2011
OpenID Connect, December 2011
 
「金融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
 
Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピング
Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピングAmazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピング
Amazon FreeRTOSを用いた量産向けIoTマイコンデバイス開発プロトタイピング
 
OIDC(OpenID Connect)について解説①
OIDC(OpenID Connect)について解説①OIDC(OpenID Connect)について解説①
OIDC(OpenID Connect)について解説①
 
Financial-grade API Hands-on with Authlete
Financial-grade API Hands-on with AuthleteFinancial-grade API Hands-on with Authlete
Financial-grade API Hands-on with Authlete
 
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
 
「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ「Windows Phone アプリ と 認証」のまとめ
「Windows Phone アプリ と 認証」のまとめ
 
FAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのためにFAPI and beyond - よりよいセキュリティのために
FAPI and beyond - よりよいセキュリティのために
 
認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向認証技術、デジタルアイデンティティ技術の最新動向
認証技術、デジタルアイデンティティ技術の最新動向
 
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
FAPI and Beyond: From an specification author's point of view #fapisum - Japa...
 
Windows Phone で Active Directory 認証 2011.12.1版
Windows Phone で Active Directory 認証 2011.12.1版Windows Phone で Active Directory 認証 2011.12.1版
Windows Phone で Active Directory 認証 2011.12.1版
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
 
Authlete overview
Authlete overviewAuthlete overview
Authlete overview
 
Oracle Integration Cloud Process Automation概要資料(20200507版)
Oracle Integration Cloud Process Automation概要資料(20200507版)Oracle Integration Cloud Process Automation概要資料(20200507版)
Oracle Integration Cloud Process Automation概要資料(20200507版)
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
 
OAuth認証再考からのOpenID Connect #devlove
OAuth認証再考からのOpenID Connect #devloveOAuth認証再考からのOpenID Connect #devlove
OAuth認証再考からのOpenID Connect #devlove
 

More from オラクルエンジニア通信

Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
Oracle Cloud Infrastructure:2023年5月度サービス・アップデートOracle Cloud Infrastructure:2023年5月度サービス・アップデート
Oracle Cloud Infrastructure:2023年5月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデートOracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
Oracle Cloud Infrastructure:2023年2月度サービス・アップデートOracle Cloud Infrastructure:2023年2月度サービス・アップデート
Oracle Cloud Infrastructure:2023年2月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2023年1月度サービス・アップデート
Oracle Cloud Infrastructure:2023年1月度サービス・アップデートOracle Cloud Infrastructure:2023年1月度サービス・アップデート
Oracle Cloud Infrastructure:2023年1月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年12月度サービス・アップデート
Oracle Cloud Infrastructure:2022年12月度サービス・アップデートOracle Cloud Infrastructure:2022年12月度サービス・アップデート
Oracle Cloud Infrastructure:2022年12月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年11月度サービス・アップデート
Oracle Cloud Infrastructure:2022年11月度サービス・アップデートOracle Cloud Infrastructure:2022年11月度サービス・アップデート
Oracle Cloud Infrastructure:2022年11月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
Oracle Cloud Infrastructure:2022年10月度サービス・アップデートOracle Cloud Infrastructure:2022年10月度サービス・アップデート
Oracle Cloud Infrastructure:2022年10月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデートOracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年8月度サービス・アップデート
Oracle Cloud Infrastructure:2022年8月度サービス・アップデートOracle Cloud Infrastructure:2022年8月度サービス・アップデート
Oracle Cloud Infrastructure:2022年8月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年7月度サービス・アップデート
Oracle Cloud Infrastructure:2022年7月度サービス・アップデートOracle Cloud Infrastructure:2022年7月度サービス・アップデート
Oracle Cloud Infrastructure:2022年7月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
Oracle Cloud Infrastructure:2022年6月度サービス・アップデートOracle Cloud Infrastructure:2022年6月度サービス・アップデート
Oracle Cloud Infrastructure:2022年6月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
Oracle Cloud Infrastructure:2022年5月度サービス・アップデートOracle Cloud Infrastructure:2022年5月度サービス・アップデート
Oracle Cloud Infrastructure:2022年5月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
Oracle Cloud Infrastructure:2022年4月度サービス・アップデートOracle Cloud Infrastructure:2022年4月度サービス・アップデート
Oracle Cloud Infrastructure:2022年4月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure データベース・クラウド:各バージョンのサポート期間 (2022年4月版)
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間 (2022年4月版)Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間 (2022年4月版)
Oracle Cloud Infrastructure データベース・クラウド:各バージョンのサポート期間 (2022年4月版)オラクルエンジニア通信
 
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会オラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年3月度サービス・アップデート
Oracle Cloud Infrastructure:2022年3月度サービス・アップデートOracle Cloud Infrastructure:2022年3月度サービス・アップデート
Oracle Cloud Infrastructure:2022年3月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年2月度サービス・アップデート
Oracle Cloud Infrastructure:2022年2月度サービス・アップデートOracle Cloud Infrastructure:2022年2月度サービス・アップデート
Oracle Cloud Infrastructure:2022年2月度サービス・アップデートオラクルエンジニア通信
 
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデートOracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデートオラクルエンジニア通信
 
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)オラクルエンジニア通信
 

More from オラクルエンジニア通信 (20)

Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
Oracle Cloud Infrastructure:2023年5月度サービス・アップデートOracle Cloud Infrastructure:2023年5月度サービス・アップデート
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
 
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
 
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデートOracle Cloud Infrastructure:2023年3月度サービス・アップデート
Oracle Cloud Infrastructure:2023年3月度サービス・アップデート
 
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
Oracle Cloud Infrastructure:2023年2月度サービス・アップデートOracle Cloud Infrastructure:2023年2月度サービス・アップデート
Oracle Cloud Infrastructure:2023年2月度サービス・アップデート
 
Oracle Cloud Infrastructure:2023年1月度サービス・アップデート
Oracle Cloud Infrastructure:2023年1月度サービス・アップデートOracle Cloud Infrastructure:2023年1月度サービス・アップデート
Oracle Cloud Infrastructure:2023年1月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年12月度サービス・アップデート
Oracle Cloud Infrastructure:2022年12月度サービス・アップデートOracle Cloud Infrastructure:2022年12月度サービス・アップデート
Oracle Cloud Infrastructure:2022年12月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年11月度サービス・アップデート
Oracle Cloud Infrastructure:2022年11月度サービス・アップデートOracle Cloud Infrastructure:2022年11月度サービス・アップデート
Oracle Cloud Infrastructure:2022年11月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
Oracle Cloud Infrastructure:2022年10月度サービス・アップデートOracle Cloud Infrastructure:2022年10月度サービス・アップデート
Oracle Cloud Infrastructure:2022年10月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデートOracle Cloud Infrastructure:2022年9月度サービス・アップデート
Oracle Cloud Infrastructure:2022年9月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年8月度サービス・アップデート
Oracle Cloud Infrastructure:2022年8月度サービス・アップデートOracle Cloud Infrastructure:2022年8月度サービス・アップデート
Oracle Cloud Infrastructure:2022年8月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年7月度サービス・アップデート
Oracle Cloud Infrastructure:2022年7月度サービス・アップデートOracle Cloud Infrastructure:2022年7月度サービス・アップデート
Oracle Cloud Infrastructure:2022年7月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
Oracle Cloud Infrastructure:2022年6月度サービス・アップデートOracle Cloud Infrastructure:2022年6月度サービス・アップデート
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
Oracle Cloud Infrastructure:2022年5月度サービス・アップデートOracle Cloud Infrastructure:2022年5月度サービス・アップデート
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
Oracle Cloud Infrastructure:2022年4月度サービス・アップデートOracle Cloud Infrastructure:2022年4月度サービス・アップデート
Oracle Cloud Infrastructure:2022年4月度サービス・アップデート
 
Oracle Cloud Infrastructure データベース・クラウド:各バージョンのサポート期間 (2022年4月版)
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間 (2022年4月版)Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間 (2022年4月版)
Oracle Cloud Infrastructure データベース・クラウド:各バージョンのサポート期間 (2022年4月版)
 
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
MySQL Technology Cafe #14 MySQL Shellを使ってもっと楽をしようの会
 
Oracle Cloud Infrastructure:2022年3月度サービス・アップデート
Oracle Cloud Infrastructure:2022年3月度サービス・アップデートOracle Cloud Infrastructure:2022年3月度サービス・アップデート
Oracle Cloud Infrastructure:2022年3月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年2月度サービス・アップデート
Oracle Cloud Infrastructure:2022年2月度サービス・アップデートOracle Cloud Infrastructure:2022年2月度サービス・アップデート
Oracle Cloud Infrastructure:2022年2月度サービス・アップデート
 
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデートOracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
 
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
Oracle Databaseはクラウドに移行するべきか否か 全10ケースをご紹介 (Oracle Cloudウェビナーシリーズ: 2021年11月30日)
 

Recently uploaded

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
 
論文紹介: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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介: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
 
論文紹介: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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (10)

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」の紹介
 
論文紹介: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
 
【早稲田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] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介: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
 
論文紹介: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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

OCHaCafe#5 - 避けては通れない!認証・認可

  • 1. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OCHaCafe#5 避けては通れない 認証・認可 日本オラクル株式会社 2019年 4月19日
  • 2. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | 本日の内容 1. 認証・認可の仕組み - OAuth - OpenID Connect 2. Oracleの提供する認証・認可サービス - Oracle Identity Cloud Service 3. OpenID Connectの実装実践とデモ 2 休憩
  • 3. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | 3 1.認証・認可の仕組み
  • 4. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | 認証・認可の“連携“プロトコル • 認証プロトコル – IDとパスワードを直接渡して、照合(認証)すること。 – 例: LDAPによる認証(bind操作) • 認証・認可の“連携“プロトコル – 自サイトで認証を行わない。 – 他サイトに認証を委託し、結果(認証情報)をもってユーザを識別する。自サイトでは パスワードを持たなくてよい。 • SAML 1.1, 2.0 • WS-Federation • OpenID 2.0 • OAuth 2.0 • OpenID Connect 1.0 4
  • 5. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | 主流のアクセス情報連携のプロトコル 5 SAML 2.0 構造: JSON、RESTベースでメッセージ交換構造:XMLでメッセージ交換 エンタープライズ向け ・開発容易性 ・モバイルアプリやSPA(JavaScript)アプリの開発もし易い 社内のSSO(SAML IdP)と連携ニーズ -ADFSや各社SSOサーバ -SAMLにしか対応していないことも 他社サービス間での 情報連携 コンシューマー向け用途 ・技術自体は確立されている。 標準で容易な実装 エンタープライズ向けサービス でももちろん可 幅広いユースケースに対応できる。 用途次第ですが、今、アプリを開発するならこっちかなぁ、 という感覚 目的: 認証情報連携 目的: 認証情報 + 認可情報連携 OpenID Connect
  • 6. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OAuth/OpenID Connectの誕生の背景 • ユーザーのリソースを他のアプリ(パートナーアプリ)に安全に共有したい。 • パートナーアプリにパスワードは教えたくない。 6 従来のWeb SSO SSOサーバー アプリA アプリB アプリAとBが情報を 共有してくれれば便利 なのに シングルサインオン ? システム間でユーザーの情報(リソース)の 共有方法 ユーザーのパスワードを登録する 連携用のアプリユーザーを作成 -家計簿サイトに銀行口座のパスワー ドを教えたいですか? -ユーザーごとの許可制御が難しい ユーザーの許可(認可)を 得て、システム間でリソー スを連携する方式を策定
  • 7. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OAuthの策定 : • ユーザーとシステム間で認可情報を扱うプロトコルとして策定 • Facebook, Yahoo!, AOLやGoogleが主導で策定を開始 • 2007年にOAuth 1.0が策定 • 脆弱性が発見され、2009年にOAuth 1.0として改訂 • 改良版として、2012年 OAuth 2.0が策定された。 – RFC 6749: The OAuth 2.0 Authorization Framework 7
  • 8. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | ところで、本日のお題 “認証・認可” 8 認証 認可 IDやパスワードでユーザーを識別(認証処理) 認証処理によって確定された ユーザー情報を提供 システムがあるユーザーに特定の処理を 行うことを許可 ユーザーがシステムに自分のリソースに操作 を行うことを許可 OpenID Connect
  • 9. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OAuth認証? • 認可は認証が前提 – 認可サーバは、認可情報(アクセストークン)を発行する際に、まずユーザーの認証を行う。 – 簡単だから認証に使ってしまえ! (=OAuth認証) • アクセストークンの悪用のリスク – Implicitフローでは、悪意のあるアプリがあっさりユーザーのアクセストークンを取得して、悪用が可能。 – アクセストークンは、Bearer型(持参人式)のトークン • “誰のトークン“ではなく、持っていれば誰でもトークンが使えてしまう。 – 発行されたアクセストークンは、誰でも利用可能 • 成り済まし 9 OAuthの使い方を誤るとリソースサーバーの不正操作、情報の流出が発生 拡張版として、認証のためにOpenID Connectを策定
  • 10. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OAuth と OpenID Connectの関係 10 OAuth OpenID Connect 認可 認可 認証 ユーザー属性 ・別なプロトコルではなく、OAuthの拡張がOpenID Connect ・リクエストのパラメータで、OAuthかOpenID Connectとしての動作(レスポンス)が決まる。 OpenID Connect 1.0 は, OAuth 2.0 プロトコルの上にシンプルなアイデンティティレイヤーを付与したもの である. このプロトコルは Client が Authorization Server の認証結果に基づいて End-User のアイデン ティティを検証可能にする. また同時に End-User の必要最低限のプロフィール情報を, 相互運用可能かつ RESTful な形で取得することも可能にする. OpenID Connect Core 1.0 incorporating errata set 1より http://www.openid.or.jp/document/ より引用 http://openid.net/specs/openid-connect-core-1_0.html
  • 11. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OAuth / OpenID Connectのシナリオ例 11 街の写真屋さん リソース・オーナー ネットの写真サイト ネットに置いてある 自分の写真を、街の 写真屋さんに印刷し て欲しい。 写真ファイル をきれいに 印刷 オーナーさん達 の写真ファイル を預かってます。
  • 12. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OAuth / OpenID Connectのアクター(登場人物) 12 クライアント リソース・オーナー リソースサーバー 認可サーバー (OAuth Server) ③写真屋さん(クライアント)にア クセスを承諾(認可)し、承諾書 の引換券(認可トークン)を取得 ⑥承諾書(アクセス・トークン) を提示して、写真ファイル (リソース)にアクセス 認可を委任 (例:街の写真屋さん) リソース・オーナー クライアント リソース・サーバー 認可サーバー (例:ネットの写真サイト) オーナーさんの承諾 書(アクセストークン) があれば、ファイルを 出しますよ。 ⑤引き換え券を 正式な承諾書(アク セス・トークン)に引 き換え ②承諾があればで きますよ ①ネットから自分の 写真をダウンロード して印刷して! 引換券
  • 13. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | 認可コードフローのシーケンス例 13 リソース・オーナー (Webブラウザ) 認可サーバー リソース・サーバー (写真共有サイト) クライアント (写真印刷サイト) 写真共有サイトから画像を参照 認可リクエスト(リダイレクト) 認可エンドポイント 認証(ログイン画面) 認証情報(ID/Pass) コンセント画面 コンセント応答 認可コードを発行(リダイレクト) トークンエンドポイント アクセストークン リソース(写真一覧) トークンリクエスト アクセストークン + リソース取得API(写真一覧) ・アクセス トークン検証 ・認可判断 写真サイトから 写真を取得 写真印刷サイトが 次の権限を求め てきます。 ・写真の参照 はい いいえ ID PWD 写真一覧の表示
  • 14. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | ①認可コードリクエスト(OAuthフローの開始) • リクエスト(GET) • レスポンス(303 See Other) 14 https://認可サーバー/認可エンドポイント ?client_id=2b0c89ed177d42858d48747f97f03b56 &response_type=code &redirect_uri=https://localhost:8181/cquotes/return &scope=get_list view_photo &state=b621b8e1-eeff-487c-9ef3-ab92a178a720 Location: https://クライアント/<return_uri> ?code=AQIDBAWaII5T42Sle5s63NpsgF-kEt8GzJI…. OAuthクライアントのID OAuthのフローのタイプ:認可コードフロー クライアントへのリダイレクトURL 要求するリソースのスコープ state(セッション単位で使う乱数値) クライアントへのリダイレクトURL 認可コード
  • 15. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | ②アクセストークンのリクエスト • リクエスト(POST) • レスポンス(200) 15 https://認可サーバー/トークンエンドポイント リクエスト・ボディ grant_type=authorization_code &code= AQIDBAWaII5T42Sle5s63NpsgF-kEt8GzJI…. グラント・タイプ (リクエストの方式指定) 先ほど取得した認可コード アクセス・トークン リソースオーナーが提示した認可コードを、クライアントがアクセストークンに引き換え { "access_token":"eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRb3oKpEH9h6iqjpptaNnLsEG......", "token_type":"Bearer", "expires_in":3600, "refresh_token":"AQIDBAX6-uRDWMb3oKpEH9h6iqjpptaNnLsEG_Qr4-xB7wYQrf.....", } リフレッシュ・トークン (オプション、scopeにoffline_access
  • 16. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | アクセストークンの実体… 16 eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRzUVVoeHZ3UnYyT0dSV0hqR24wTFk2ZTJleTJ1MjZOUDQiLCJ4NXQiOiJLUUJSb2pZWTQ3 ZlN2THp1YWRPWkZqcFFzeVUiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In0.eyJ1c2VyX3R6IjoiQXNpYVwvVG9re W8iLCJzdWIiOiJtb3Rva2kuaXNha2FAb3JhY2xlLmNvbSIsInVzZXJfbG9jYWxlIjoiamEiLCJpZHBfbmFtZSI6ImxvY2FsSURQIiwidX Nlci50ZW5hbnQubmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJpZHBfZ3VpZCI6ImxvY 2FsSURQIiwiYW1yIjpbIlVTRVJOQU1FX1BBU1NXT1JEIl0sImlzcyI6Imh0dHBzOlwvXC9pZGVudGl0eS5vcmFjbGVjbG91ZC5jb21 cLyIsInVzZXJfdGVuYW50bmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJjbGllbnRfaWQi OiIwZDhhOTM1MGI1ZGQ0NzM3ODE5NzE0MGI1YjQ0OTc4NSIsInNpZCI6IjY4N2M5NDQzLTgxM2ItNDkzZS05NTY0LTRjYWJm YjI3ZGU2YyIsInN1Yl90eXBlIjoidXNlciIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MgZW1haWwiLCJjbGllbnRfd GVuYW50bmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJ1c2VyX2xhbmciOiJqYSIsImV4 cCI6MTU1NTU3MzIxNCwiaWF0IjoxNTU1NTY5NjE0LCJjbGllbnRfZ3VpZCI6ImM4YTI2ZjAxNGJlYjQ5ZjBhY2U0MzJlNDMxMTNh ODJkIiwiY2xpZW50X25hbWUiOiJpc2FrYV9DdXN0b21lclF1b3RlcyIsImlkcF90eXBlIjoiTE9DQUwiLCJ0ZW5hbnQiOiJpZGNzLWJh YTZkNDNjZjEwZDRmOTc4YjlmYTJhN2IzYTExZGZmIiwianRpIjoiMzU2ZTc5NmEtOTM3NC00ZWE1LWIyMTktODkxODA3MGY3 MDYyIiwidXNlcl9kaXNwbGF5bmFtZSI6Ik1vdG9raSBJc2FrYSIsInN1Yl9tYXBwaW5nYXR0ciI6InVzZXJOYW1lIiwidG9rX3R5cGUi OiJBVCIsImF1ZCI6Imh0dHBzOlwvXC9pZGNzLWJhYTZkNDNjZjEwZDRmOTc4YjlmYTJhN2IzYTExZGZmLmlkZW50aXR5Lm9y YWNsZWNsb3VkLmNvbSIsInVzZXJfaWQiOiI1YjUwM2Y0NmM3MWI0MmJiOGViZjMzOTQxMjQzNjdjYiIsInRlbmFudF9pc3MiOiJ odHRwczpcL1wvaWRjcy1iYWE2ZDQzY2YxMGQ0Zjk3OGI5ZmEyYTdiM2ExMWRmZi5pZGVudGl0eS5vcmFjbGVjbG91ZC5jb20i fQ.F0uL7hDRy6ZFds-ACvAxaXNOz04iiOuSdZpefVU-i0wnFOYtty-Qplo66UMlwCoAPxBrA- __KKPAbve9N5prl6qFOe7QlsJ74hi6wfw4OTIEU4hVL9HsMS8nbSk_oRThIWuDDQ3U1Zp0C8ra5oQNuiz_oxfw0Aw7W7_Wa5yO WeQgxPDMcvhjsfDpO5eHU5NUZDclurNU_SplaPx60PC4TdozOFCfhnICZYHmn0Gnp5le04UOnVOvQtVaY9vUP4tnjLMaOOFGT DbcC79W8STfGRKsAqgyk7bZIYoOC8TT1e-lFhffIavkpdvvnOaYioJcNtq4nKgpCSRd4Ei0GRy9vw eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRzUVVoeHZ3UnYyT0dSV0hqR24wTFk2ZTJleTJ1MjZOUDQiLCJ4NXQiOiJLUUJSb2pZWTQ3 ZlN2THp1YWRPWkZqcFFzeVUiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In0.eyJ1c2VyX3R6IjoiQXNpYVwvVG9re W8iLCJzdWIiOiJtb3Rva2kuaXNha2FAb3JhY2xlLmNvbSIsInVzZXJfbG9jYWxlIjoiamEiLCJpZHBfbmFtZSI6ImxvY2FsSURQIiwidX Nlci50ZW5hbnQubmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJpZHBfZ3VpZCI6ImxvY 2FsSURQIiwiYW1yIjpbIlVTRVJOQU1FX1BBU1NXT1JEIl0sImlzcyI6Imh0dHBzOlwvXC9pZGVudGl0eS5vcmFjbGVjbG91ZC5jb21 cLyIsInVzZXJfdGVuYW50bmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJjbGllbnRfaWQi OiIwZDhhOTM1MGI1ZGQ0NzM3ODE5NzE0MGI1YjQ0OTc4NSIsInNpZCI6IjY4N2M5NDQzLTgxM2ItNDkzZS05NTY0LTRjYWJm YjI3ZGU2YyIsInN1Yl90eXBlIjoidXNlciIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MgZW1haWwiLCJjbGllbnRfd GVuYW50bmFtZSI6ImlkY3MtYmFhNmQ0M2NmMTBkNGY5NzhiOWZhMmE3YjNhMTFkZmYiLCJ1c2VyX2xhbmciOiJqYSIsImV4 cCI6MTU1NTU3MzIxNCwiaWF0IjoxNTU1NTY5NjE0LCJjbGllbnRfZ3VpZCI6ImM4YTI2ZjAxNGJlYjQ5ZjBhY2U0MzJlNDMxMTNh ODJkIiwiY2xpZW50X25hbWUiOiJpc2FrYV9DdXN0b21lclF1b3RlcyIsImlkcF90eXBlIjoiTE9DQUwiLCJ0ZW5hbnQiOiJpZGNzLWJh YTZkNDNjZjEwZDRmOTc4YjlmYTJhN2IzYTExZGZmIiwianRpIjoiMzU2ZTc5NmEtOTM3NC00ZWE1LWIyMTktODkxODA3MGY3 MDYyIiwidXNlcl9kaXNwbGF5bmFtZSI6Ik1vdG9raSBJc2FrYSIsInN1Yl9tYXBwaW5nYXR0ciI6InVzZXJOYW1lIiwidG9rX3R5cGUi OiJBVCIsImF1ZCI6Imh0dHBzOlwvXC9pZGNzLWJhYTZkNDNjZjEwZDRmOTc4YjlmYTJhN2IzYTExZGZmLmlkZW50aXR5Lm9y YWNsZWNsb3VkLmNvbSIsInVzZXJfaWQiOiI1YjUwM2Y0NmM3MWI0MmJiOGViZjMzOTQxMjQzNjdjYiIsInRlbmFudF9pc3MiOiJ odHRwczpcL1wvaWRjcy1iYWE2ZDQzY2YxMGQ0Zjk3OGI5ZmEyYTdiM2ExMWRmZi5pZGVudGl0eS5vcmFjbGVjbG91ZC5jb20i fQ.F0uL7hDRy6ZFds-ACvAxaXNOz04iiOuSdZpefVU-i0wnFOYtty-Qplo66UMlwCoAPxBrA- __KKPAbve9N5prl6qFOe7QlsJ74hi6wfw4OTIEU4hVL9HsMS8nbSk_oRThIWuDDQ3U1Zp0C8ra5oQNuiz_oxfw0Aw7W7_Wa5yO WeQgxPDMcvhjsfDpO5eHU5NUZDclurNU_SplaPx60PC4TdozOFCfhnICZYHmn0Gnp5le04UOnVOvQtVaY9vUP4tnjLMaOOFGT DbcC79W8STfGRKsAqgyk7bZIYoOC8TT1e-lFhffIavkpdvvnOaYioJcNtq4nKgpCSRd4Ei0GRy9vw
  • 17. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | アクセストークンのフォーマット: JWT (JSON Web Token) RFC 7519 https://tools.ietf.org/html/rfc7519 17 • パーティ間で情報を安全に送信するための、コンパクトで自己定義的な方 法を定義する標準 • JSONの形で、必要なデータを全て含む • JWTの構造 Base64(ヘッダー)+ ”." + Base64(ペイロード)+ ”." +署名 Header { "alg": ”HS256”, "typ": "JWT" } Payload { "sub": " taro.suzuki", "iss": "https://identity.oraclecloud.com/", "scope": "urn:opc:idm:t.security.client" } Signature RSASHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )
  • 18. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | アクセストークンの例(抜粋) 18 { "user_tz": "Asia/Tokyo", "sub": “taro.suzuki", "idp_name": "localIDP", "user.tenant.name": "idcs-1234", "iss": "https://identity.oraclecloud.com/", "user_tenantname": "idcs-1234", "exp": 1535366702, "iat": 1535363102, "client_guid": "0af724545f624c18b85…", “client_name”: “Local Print Service", "tenant": "idcs-1234", "jti": "bc8479c9-17e9-4430-b9b0-1cf51185f567", "user_displayname": “Taro Tanaka", "sub_mappingattr": "userName", "tok_type": "AT", "aud": "https://photo.com/view", "scope": "quote" "user_id": "5b503f46c71b" } Taro.Suzukiさん(リソース・オーナー)が、 Local Print Service(クライアント)に、 https://photo.com/view(リソース)にアクセスを許可(認可) Audience(誰に) スコープ(何を許可) リソースオーナー (誰が) 認可サーバー
  • 19. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | アクセストークンの検証 • リソース・サーバーではクライアントが提示したアクセストークンの有効性を検証する必要がある。 19 方法1:リソースサーバー自身で検証 ・署名検証 認可サーバーが発行したものか? 改ざんされていないか? ・自分自身宛か? Audienceの確認 ・有効期限 ・アクセストークンの取り消しの検知が できない。 方法2: 認可サーバーの検証機能を利用 ・イントロスペクション・エンドポイントを利用 アクセストークンを送付して検証実施 ・実装が容易 ・アクセストークンの取り消しの検知が可能 { "active": true, "client_id": "l238j323ds-23ij4", "username": "jdoe", “scope”: “view", "sub": "Z5O3upPC88QrAjx00dis", “aud”: “https://リソースサーバー/resource", "iss": "https://server.example.com/", "exp": 1419356238, "iat": 1419350238, "extension_field": "twenty-seven" } { "active": false } 有効時の応答例 無効時の応答例
  • 20. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | クライアントのタイプとOAuthのフロー 20 機密クライアント クレデンシャルを 機密に扱えない パブリック・クライアント トークンの取得には、クライアントに認証が必要。 正しく認可コードをクライアントに渡せば、安全に アクセストークンが扱われる。 安全にクレデンシャルを保持的ないため、クライアント を検証(認証)できない。クライアントを認証しない フローが用いられる。
  • 21. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | パブリッククライアントの認可コードフロー例 21 システム ブラウザ 認可サーバー リソース・サーバー (写真共有サイト) クライアント (写真印刷サイト) 認可コードフローを開始 認可リクエスト 認可エンドポイント 認証(ログイン画面) 認証情報(ID/Pass) コンセント画面 コンセント応答 認可コードを発行 トークンエンドポイント アクセストークン リソース(写真一覧) 認可コードでトークンリクエスト アクセストークン + リソース取得API(写真一覧) ・アクセス トークン検証 ・認可判断 写真サイトから 写真を取得 写真印刷サイトが 次の権限を求め てきます。 ・写真の参照 はい いいえ ID PWD
  • 22. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | パブリッククライアントの注意点 • クライアントを認証できないため、認可コードを盗難されたら、容易にアクセストークン を取得されてします。 • モバイルアプリ(OAuthクライアント)とシステム・ブラウザの間に、マルウェアが入り、 認可コードを盗難できるリスクがある。 • 対策(推奨) – PKCE(Proof Key for Code Exchange by OAuth Public Clients、RFC 7636) – クライアントはcode_challengeとよばれるチャレンジ・コードを発行し、code_challenge_methodと呼ば れる暗号化方式名を送付。 code_challenge認可コードに紐づけることで、盗難時されてもアクセス トークンを取得ができないようにする。 • ご参考 – Identity cloud service : Mobile clients and PKCE support • http://www.ateam-oracle.com/identity-cloud-service-mobile-clients-and-pkce-support/ 22
  • 23. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | PKCEを用いた認可コードフローのシーケンス例 23 システム ブラウザ 認可サーバー リソース・サーバー (写真共有サイト) クライアント (写真印刷サイト) 認可コードフローを開始 認可リクエスト 認可エンドポイント 認証(ログイン画面) 認証情報(ID/Pass) コンセント画面 コンセント応答 認可コードを発行 トークンエンドポイント アクセストークン 認可コード+ アクセストークン + リソース取得API(写真一覧) ・アクセス トークン検証 ・認可判断 写真サイトから 写真を取得 写真印刷サイトが 次の権限を求め てきます。 ・写真の参照 はい いいえ ID PWD 認可コード発行、 に紐つけ code_challenge code_challenge _method code_virifier に紐づく認可コード の確認
  • 24. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OAuthのフロー・タイプ 名称 認可コード・ フロー インプリシット ・フロー リソース・オー ナー・クレデン シャル・フロー クライアント・ク レデンシャル・ フロー アサーション・ フロー デバイス・ コード・ フロー クライアント認証が必 須か × × × 〇 × × クライアントがユー ザーのPWDを必要と するか × × 〇 × × ー ブラウザ 〇 〇 × × × 〇 アクセストークンのコ ンテキスト ユーザー ユーザー ユーザー クライアント アサーション のサブジェクト に依存 ー リフレッシュ・トークン の利用可否 〇 × 〇 × 〇 〇 24
  • 25. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OAuth認証? • 認可は認証が前提 – 認可サーバは、認可情報(アクセストークン)を発行する際に、まずユーザーの認証を行う。 – 簡単だから認証に使ってしまえ! (=OAuth認証) • アクセストークンの悪用のリスク – Implicitフローでは、悪意のあるアプリがあっさりユーザーのアクセストークンを取得して、悪用が可能。 – アクセストークンは、Bearer型(持参人式)のトークン • “誰のトークン“ではなく、持っていれば誰でもトークンが使えてしまう。 – 発行されたアクセストークンは、誰でも利用可能 • 成り済まし 25 OAuthの使い方を誤るとリソースサーバーの不正操作、情報の流出が発生 認証目的には、OpenID Connectを利用
  • 26. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OpenID Connectによる認証 26 リソース・オーナー (Webブラウザ) 認証・認可サーバー クライアント (写真印刷サイト) ログインボタンをクリック 認可リクエスト(リダイレクト) 認可エンドポイント 認証(ログイン画面) 認可コードを発行(リダイレクト) トークンエンドポイント IDトークン、アクセストークン トークンリクエスト アクセストークン + ユーザー属性取得 IDトークン検証 ログイン状態を生成 /userinfo 必要に応じてより、 追加の取得属性 Sub(対象ユーザー) Aud(宛先) 有効期限 署名 ログイン完了
  • 27. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | OpenID Connect/Oauthと“認証” • OpenID Connect、OAuthではユーザーそのものの認証方法は定めていな い。 – 認可リクエスト後の認証画面は認可サーバー独自のもの – 独自の認証方式を実装する • ID/パスワード認証 • 各種2要素認証 • ソーシャルログイン • FIDO2、など • 認証した情報(IDトークン)をクライアントに提供し、クライアントはIDトーク ンを検証することで、ユーザーを“認証”できる 27
  • 28. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | ①OpenID Connectの実施例 • OAuth / OpenID Connectの使い分け – リクエストのパラメータで、 OAuthかOpenID Connectなのか決まる。 – scope = openidが必須。Profie、emailで追加情報が取得可能 28 • リクエスト(Get) • レスポンス(303 See Other) https://認可サーバー/認可エンドポイント ?client_id=2b0c89ed177d42858d48747f97f03b56 &response_type=code &redirect_uri=https://クライアント/<return_uri> &scope=openid &nonce=b621b8e1-eeff-487c-9ef3-ab92a178a720 &state=ai2zjfie3! クライアントのID フローのタイプ クライアントへのリダイレクトURL 要求するリソースのスコープ:openid リプレイ攻撃対策(必須) Location: https://クライアント/<return_uri> ?code=AQIDBAWaII5T42Sle5s63NpsgF-kEt8GzJI…. クライアントへのリダイレクトURL 認可コード CSRF対策(オプション)
  • 29. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | ②IDトークン、アクセストークンのリクエスト • リクエスト(POST) • レスポンス(200) 29 https://認可サーバー/トークンエンドポイント リクエスト・ボディ grant_type=authorization_code &code= AQIDBAWaII5T42Sle5s63NpsgF-kEt8GzJI…. グラント・タイプ (リクエストの方式指定) 先ほど取得した認可コード アクセス・トークン リソースオーナーが提示した認可コードを、クライアントがアクセストークン、IDトークンに引き換え { "access_token":"eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRb3oKpEH9h6iqjpptaNnLsEG......", “token_type”:“Bearer”, "expires_in":3600, "id_token":"eyJ4NXQjUzI1NiI6IjdZalN6SVl3SnRzUVVoeHZ } IDトークン
  • 30. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | IDトークンの例 30 { "sub": “Taro.Suzuki", "user_locale": "en", "idp_name": "localIDP", "idp_guid": "localIDP", "amr": [ "USERNAME_PASSWORD" ], "iss": "https://identity.oraclecloud.com/", "user_tenantname": "idcs-1234", "client_id": "2b0c89ed177d42858d48747f97f03b56", "sid": "dcaffb07-165a-4b8b-9d94-4177cbe52ea9", "authn_strength": "2", "azp": "2b0c89ed177d42858d48747f97f03b56", "auth_time": "1535362883", "session_exp": 1535391683, "user_lang": "en", "exp": 1535391683, "iat": 1535363102, "idp_type": "LOCAL", "tenant": "idcs-1234", "jti": "29b1585b-fc76-410e-8166-728fbf2412a4", "user_displayname": “Taro Suzuki", "sub_mappingattr": "userName", "tok_type": "IT", "nonce": "1e1640da-e1c2-45c8-a656…", "aud": [ "https://identity.oraclecloud.com/", "2b0c89ed177d42858d48747f97f03b56" ], "user_id": "5b503f46c71b42bb8ebf3394124367cb" } 認証された ユーザーID 宛先 クライアントID リプレイ アタック対策 IDトークンでは、aud(宛先)がクライアント 確かに自分(クライアント)向けに発行された認証情報だと分かる (アクセストークンのaudはリソースサーバー)
  • 31. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | まとめ • OAuth – 認可の仕組み – アクセストークンのaudは、リソースサーバー • OpenID Connect – 認証・認可の仕組み – アクセストークンのaudは、リソースサーバー – IDトークンのaudは、クライアント • 目的とクライアントのタイプで使い分ける。 31
  • 32. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | 32 2. Oracle Identity Cloud Serviceのご紹介
  • 33. Copyright © 2019 Oracle and/or its affiliates. All rights reserved. | Oracle Identity Cloud Service クラウドネイティブで実装されたIDaaS (ID as a Service) 33 • ID管理 • アクセス管理 • 多要素認証 • プロビジョニング • モバイル オンプレミス Active Directory Oracle Identity Cloud Service Oracle IDM SFDC, Office365 Workday Box など シングルサイオン 多要素認証 開発柔軟性 • SMSを用いたワンタイムパスワードや、 iPhone、Android等のモバイル アプリを提供 • 一度認証した端末は、一定期間第2認証 のスキップが可能 • 標準対応(SAML、OAuth 2.0、OpenID Connect) • 各サービスはIDCSに対して認証することで シングルサインオンを実現 • オンプレミス環境も含めたハイブリッド環境の シングルサインオンを実現 • 各種機能をAPIで提供 • ユーザーログイン画面、管理画面などを開発可能 SAML, OAuth2.0, OpenID Connect, SCIMなど 標準技術・標準規格を採用 カスタムアプリ @クラウド @オンプレミス