自己紹介 氏縄武尊 (Ujinawa Takeru) Work 株式会社オージス総研テミストラクトソリューション部 4 年目認証 認可 ID 管理 PKI OpenID Foundation Japan EIWGメンバー Favorite Spec: OpenID Connect, OAuth2.0

Similar documents
モバイル オープンAPIを 活用するための認証基盤 標準技術 OpenID Connect, OAuth 適用の考え方 株式会社オージス総研 サービス事業本部 テミストラクトソリューション部 八幡 孝 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープンAPIを活用

モバイル オープンAPIを 活用するための認証基盤 標準技術 OpenID Connect, OAuth 適用の考え方 株式会社オージス総研 サービス事業本部 テミストラクトソリューション部 八幡 孝 2017 OGIS-RI Co., Ltd. 2017/9/15 Japan Identity C

自己紹介 株式会社オージス総研 統合認証ソリューション担当 OpenAMコンソーシアム 副会長 八幡 孝 OpenIDファウンデーション ジャパン Enterprise Identity WG リーダー 2

今後の認証基盤で必要となる 関連技術の動向 株式会社オージス総研テミストラクトソリューション部八幡孝 Copyright 2016 OGIS-RI Co., Ltd. All rights reserved.

自己紹介 氏縄武尊 (Ujinawa Takeru) Work 株式会社オージス総研テミストラクトソリューション部 3 年目 ID 管理 認証周りの開発 OpenID Connect, AWS Private 滋賀県彦根市出身 Copyright 2016 OGIS-

はじめに インフォマート API の呼び出しには OAuth2.0 による認証を受ける必要があります OAuth2.0 を使うことで インフォマート API を利用するサービスは インフォマートプラットフォーム ID( 1 以下 PFID) とパスワードを保存したり処理したりすることなく PFID

目次 第 1 章はじめに 本ガイドの位置付け 認証から API 呼び出しまでの流れ 関連ガイド 4 第 2 章 API の利用準備 5 第 3 章 OAuth 2.0 認証と API 呼び出し OAuth 2.0 認証の概要 アプリケーショ

自己紹介 八幡孝 ( やはたたかし ) 株式会社オージス総研 ThemiStruct ソリューション開発リードアーキテクト ThemiStruct 関連サービスの東日本エリア責任者 OpenAM コンソーシアム活動メンバー OpenID ファウンデーション ジャパン Enterprise Ident

IoT 共通プラットフォーム実証環境 アプリケーション開発ガイド 認証認可編 第 1.3 版 2019 年 4 月 高松市 i

intra-mart Accel Platform — OAuth認証モジュール 仕様書   初版  

intra-mart Accel Platform

Microsoft PowerPoint _セミナー資料(オージス).pptx

OSSTechプレゼンテーション

POWER EGG 3.0 Office365連携

CA Federation ご紹介資料

シングルサインオンしてますか? 2014/11/21 第 6 回 OpenAM コンソーシアムセミナー 1

How to Use the PowerPoint Template

オープンソース・ソリューション・テクノロジ株式会社 会社紹介

PowerPoint プレゼンテーション

自己紹介 氏縄武尊 (Ujinawa Takeru) ThemiStruct 認証技術グループ技術開発 (Inventory 認証等 ) OpenID Connect OpenID Foundation Japan Enterprise Identity WG 2

Active Directory フェデレーションサービスとの認証連携

OSSTechドキュメント

オージス総研のご紹介 社名 代表者 設立 株式会社オージス総研 取締役社長平山輝 1983 年 6 月 29 日 資本金 4 億円 ( 大阪ガス株式会社 100% 出資 ) 売上実績 512 億円 ( 連結 ) 270 億円 ( 単体 ) ( 2010 年度 ) 従業員数 2,847 名 ( 連結

2 WHITE PAPER: OAUTH ca.com/jp OAuth 3 OAuth 4 OAuth 6 OAuth OAuth 8 CA API Gateway OAuth 9 OAuth Toolkit 10 CA API Gateway 2-legged OAuth 3-leg

FUJITSU Cloud Service for OSS 認証サービス サービス仕様書

PowerPoint プレゼンテーション

SeciossLink クイックスタートガイド

OpenAM(OpenSSO) のご紹介

FUJITSU Cloud Service K5 認証サービス サービス仕様書

<4D F736F F F696E74202D208D E9197BF FC96E582C68AE98BC682AA F08CF68A4A82B782E D835A E

intra-mart Accel Platform — OAuth プログラミングガイド   初版  

オープンソース・ソリューション・テクノロジ株式会社 代表取締役 チーフアーキテクト 小田切耕司

PowerPoint プレゼンテーション

Microsoft PowerPoint - ABC_2011_1_9_yoichiro.pptx

自己紹介 所属部署 生産革新ソリューション開発二部 OSS 推進グループ OSSを使ったシステム構築から運用までワンストップでサポート対象 OSSは50 種類以上 私の担当 各種 OSSの技術的サポート OpenAM OpenIDMの導入支援 OpenAM OpenIDMの機能拡張 バグ修正も実施

学認とOffice 365 の 認証連携

PowerPoint Presentation

PowerPoint プレゼンテーション

AW-PCS認証設定手順1805

SinfonexIDaaS機能概要書

OSS活用ソリューション ThemiStruct (テミストラクト) シリーズ概要

オープンソース・ソリューション・テクノロジ株式会社 会社紹介

<4D F736F F F696E74202D204A4E E718F9096BC574795D78BAD89EF8E9197BF5F8CF68A4A97702E >

目次 なぜAPIが注目されているのか? API 公開のライフサイクル 事例概要 Amazon API Gateway 利用のポイント APIソリューションご紹介 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 2

スライド 1

オープンソース・ソリューション・テクノロジ株式会社 代表取締役 チーフアーキテクト 小田切耕司

Mobile Access簡易設定ガイド

_BlackBelt_ApplicationAuthPatterns

オープンソース・ソリューション・テクノロジ株式会社 会社紹介

Hybrid Identity ~ 認証システムデザインパターン

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

認証連携(フェデレーション)ソリューションIceWall Federationのご紹介

目次 API 公開の課題 なぜAPI 管理が必要なのか API 管理のベストプラクティス IBM API Connect を使ったAPI 管理 オージス総研のAPI 運用サービスの紹介 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 2

TGBrowserユーザマニュアル

PowerPoint プレゼンテーション

Notesアプリが iPadで動くDomino Mobile Apps ご紹介

目次 1. はじめに 当ドキュメントについて 環境設計 フロー モデルの設計 ログイン タイプの決定 その他情報の決定 IBM Connections Cloud との

LAN DISK NarSuSの登録方法

Microsoft Word - Android認証設定手順(EAP-TLS)1105.doc

クライアント証明書導入マニュアル

項番 現象 原因 対応手順書など 4 代理店コードでのダウンロード時に以下のメッセージの画面が表示される サービス時間外のため 現在 このサービスはご利用になれません 当機能のサービス時間外です 以下の時間帯にダウンロードしてください 月曜日 ~ 金曜日 7:00~21:00 土曜日 7:00~17



SlinkPass ユーザマニュアル

オープンソース・ソリューション・テクノロジ株式会社 代表取締役 チーフアーキテクト 小田切耕司

IceWallソフトウェア認証連携(フェデレーション)ソリューションIceWallFederationのご紹介

FIDO技術のさらなる広がり

Googleカレンダー連携_管理者マニュアル

ムの共有アドレス帳 インスタント メッセージングの宛先に活用することも考えられる 統合アカウント管理 認証 認可 ( アクセス制御 ) の機能 サービス機能 サービス定義統合アカウント管理利用者の認証情報 ( ユーザ ID パスワード) と属性情報 ( グループ 所属部門等 ) を一元的に管理する機

技術レポート 1)QuiX 端末認証と HP IceWall SSO の連携 2)QuiX 端末認証と XenApp の連携 3)QuiX 端末認証 RADIUS オプションと APRESIA の連携 Ver 1.1 Copyright (C) 2012 Base Technology, Inc.

_EMS概要_クラウドを使う上で考慮すべきこと(セキュリティ視点で60分語るv4)_E5まで

AWS Mobile Deep Dive - 入門から実践までの最短コース 〜 ライブコーディングで学ぶ AWS を活用したモバイルアプリの開発 〜

intra-mart ワークフローデザイナ

ステップ 1:Cisco Spark にサインアップして試してみよう 1. Spark のホームページ ( で電子メールアドレスを入力し 指示に従って Spark アカウントを作成します 注 : 自身の電子メールアカウントにアクセスして Spar

PowerPoint Presentation

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

変更履歴 日付 ver 変更箇所 変更内容 2016/8/ 新規作成 2017/1/ 全体 参照 以下 等に係る記載揺れの統一 2017/2/ 全体 参照先の記載を修正 2017/5/ ASM に情報登録 リンクの URL を修正 参考リンク集

KDDI Smart Mobile Safety Manager Mac OS キッティングマニュアル 最終更新日 2019 年 4 月 25 日 Document ver1.1 (Web サイト ver.9.6.0)

intra-mart Accel Collaboration — Collaboration共通 ユーザ操作ガイド   第7版  

SeciossLink クイックスタートガイド Office365 とのシングルサインオン設定編 2014 年 10 月株式会社セシオス 1

WTM2019SingleSignOn

Microsoft Word - Gmail-mailsoft_ docx

PowerPoint Presentation

3 メニュー選択後 Web ブラウザ画面にセキュリティ証明の証明書エラー画面が表示された場合は このサイトの閲覧を続行する ( 推奨されません ) をクリックします このサイトの閲覧を続行する ( 推奨されません ) をクリック セキュリティ証明の証明書エラー画面 4 Web ブラウザ画面に URL

勉強会の流れ Google API の概要 デモ curl で実際に体験 Copyright 2010 SRA OSS, Inc. Japan All rights reserved. 2

Microsoft Word - Wyse Thin Client&XD設定手順1112.doc

4. 環境要件 WebWrapper および WebWrapper 管理サーバ <Windows 版 > Windows2000Server ( サービスパック 3 また 4 適用済 ), Windows Server 2003 <Solaris 版 > SPARC CPU を搭載する Sun 製ワ

Web AppBuilder for ArcGIS (Developer Edition) インストールガイド

改善のための要件 : ソリューション Azure Active Directory (AD) Premium で複数のクラウドと社内の ID を統合 EMS は Azure AD Premium を包含 Office 365 などの SaaS アプリや社内アプリをシングルサインオンで利用可能 Off



VPN 接続の設定

富士通製プラットフォーム 「PRIMEPOWER/PRIMERGY」及び、富士通製ミドルウェア 「Interstage」とVantage Analyzer 動作検証完了報告書

注意 インストール中に ユーザアカウント制御 ( 以下 UAC といいます ) の実行確認画面が表示されることがあります 表示された場合ははいをクリックして インストールを進めてください なお 管理者以外の場合 管理者への昇格を求める UAC 画面が表示される場合がありますので 管理者アカウントのパ

PowerPoint プレゼンテーション

SeciossLink クイックスタートガイド(Office365編)

intra-mart Accel Platform — Slack連携モジュール 利用ガイド   初版  

メールソフト設定ガイド

YCU メール多要素認証の設定方法 ( 学生向け推奨マニュアル ) 2019 年 3 月 横浜市立大学 ICT 推進課 1

D. Amazon EC2 のインスタンスストアボリュームへ 1 時間ごとに DB のバックアップ取得を行うと共に Amazon S3 に 5 分ごとのトランザクションログを保管する 正解 = C 会社のマーケティング担当ディレクターから " 何気ない親切 " と思われる善行を目にしたら 80 文字

intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版  

プライベート認証局Gléas ホワイトペーパー Per-App VPN BIG-IP APM / Workspace ONE UEM Ver 年 10 月 Copyright by JCCH Security Solution Systems Co., Ltd. All Righ

Transcription:

モバイル オープン API を活用するための 認証基盤の実装例 株式会社オージス総研 テミストラクトソリューション部 氏縄 武尊 2017 OGIS-RI Co., Ltd.

自己紹介 氏縄武尊 (Ujinawa Takeru) Work 株式会社オージス総研テミストラクトソリューション部 4 年目認証 認可 ID 管理 PKI OpenID Foundation Japan EIWGメンバー Favorite Spec: OpenID Connect, OAuth2.0, SCIM AWS: IAM, CloudTrail, Lambda 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 2

統合認証ソリューションを 年やってきました ThemiStruct-WAM シングルサインオン認証基盤ソリューション ThemiStruct-IDM ID 管理ソリューション ThemiStruct-CM 電 証明書発 管理ソリューション ワンタイムパスワードソリューション ThemiStruct-OTP システム監視ソリューション ThemiStruct-MONITOR ThemiStruct Identity Platform AWS 対応版 クラウド IoT 時代の All in one 統合認証パッケージ 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 3

ThemiStruct Identity Platform の構成 ThemiStruct Identity Platform は Amazon Web Services のマネージドサービス上で稼働するため 一定のアベイラビリティ スケーラビリティを実現することができます また 以下の構成のセットアップを約 2 時間で完了できるインストーラを提供しています 認証基盤の利用 DNS CDN WAF API 定義 API ロジック ログ保管 監視 利用者 Amazon Route 53 Amazon CloudFront AWS WAF Amazon API Gateway AWS Lambda Amazon RDS AWS CloudWatch 暗号鍵保管 サンプルの利用者向け画 Amazon S3 管理者用のコンソール Amazon EC2 Amazon RDS ID セッション 設定ストア AWS KMS 短時間でのセットアップ 認証基盤の管理 新バージョンやパッチの配信 構築者 ThemiStruct Identity Platform インストーラ 管理者 AWS CodeCommit 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 4

アイデンティティ連携を実現する標準技術たち これらの技術は標準化が進み 製品 サービスへの実装も浸透している 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 5

各種仕様の用語説明 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 6

RP(Relying Party) アプリケーション ID 情報要求 ID 情報 認証情報ユーザの情報 OP(OpenID Provider) 認証サーバ 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 7

SAML SP(Service Provider) アプリケーション ID 情報要求 ID 情報 認証情報ユーザの情報 SAML IdP(Identity Provider) 認証サーバ 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 8

AS(Authorization Server) 認可サーバ Resource Owner Client With アクセストークン RS(Resource Server) アプリケーション API Call API サービス ユーザ 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 9

SCIM Client With アクセストークン SCIM Server With アクセストークン SCIM Client ID 管理サーバ ユーザ情報登録要求 ユーザ属性ストア ユーザ情報要求 アプリケーション 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 10

設定 実装例 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 11

モバイル向けアプリの導入 提供の形態 外部サービスの利 SaaS が提供するモバイル向けアプリを利用 従業員向けサービス 顧客向けサービス モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 API を提供し サードパーティがアプリを開発 提供 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 12

認証 アクセス認可の実装の考え方 従業員向けサービス 顧客向けサービス 外部サービスの利 SaaS が提供するモバイル向けアプリを利用 OpenID Connect や SAML を使った SaaS への SSO モバイルウェブの開発と提供 ネイティブアプリの開発 提供 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 OAuth 2.0 for Native Apps のプラクティスを用いたバックエンド API へのアクセス認可 サードパーティとの連携 API を提供し サードパーティがアプリを開発 提供 OAuth 2.0 を用いた API 連携時認証 アクセス認可 Implicit, Authz Code, Authz Code+PKCE (OIDF FAPI WG の動向の考慮も必要 ) 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 13

認証 アクセス認可の実装の考え方 従業員向けサービス 顧客向けサービス 外部サービスの利 SaaS が提供するモバイル向けアプリを利用 OpenID Connect や SAML を使った SaaS への SSO モバイルウェブの開発と提供 ネイティブアプリの開発 提供 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 OAuth 2.0 for Native Apps のプラクティスを用いたバックエンド API へのアクセス認可 サードパーティとの連携 API を提供し サードパーティがアプリを開発 提供 OAuth 2.0 を用いた API 連携時認証 アクセス認可 Implicit, Authz Code, Authz Code+PKCE (OIDF FAPI WG の動向の考慮も必要 ) 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 14

モバイルウェブアプリケーションの例 スケジュール閲覧 API スケジュール登録 API スケジュール管理アプリ スケジュール API 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 15

モバイルウェブアプリケーションの例 このアプリ誰だろう (Client ID) どこに対してトークン渡せば良いんだろう (Redirect URI) スケジュール管理アプリ スケジュール API 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 16

モバイルウェブアプリケーションの例 この API サーバ誰だろう (Resource Server ID) トークンの検証 スケジュール管理アプリ スケジュール API 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 17

モバイルウェブでのバックエンド API アクセス認可 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 1 3 モバイルウェブ (JavaScript) 2 4 5 8 認証 認可サーバー 6 7 バックエンド API AS RS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ブラウザでモバイルウェブを起動 ログイン 2. リダイレクトにより OAuth 認可を要求 3. ユーザー認証を実 4. バックエンド API アクセス用のアクセストークンを返却 5. アクセストークンをつけてバックエンド API にアクセス 6.~7. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 8. バックエンド API が情報を使ってモバイルウェブが動作 ブラウザ Client 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 18

モバイルウェブでのバックエンド API アクセス認可 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 1 モバイルウェブを Client として登録 JavaScript のアプリケーションを Client にするための実装 3 モバイルウェブ (JavaScript) 2 4 5 8 認証 認可サーバー 6 7 バックエンド API AS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ブラウザでモバイルウェブを起動 ログイン 2. リダイレクトによりOAuth 認可を要求 検証を うための RS の登録 3. ユーザー認証を実 トークンの権限設定 (Scope) 登録 RS 4. バックエンドAPIアクセス用のアクセストークンを返却 5. アクセストークンをつけてバックエンド API にアクセス 6.~7. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) アクセストークンを検証するリクエスト 8. バックエンド API が情報を使ってモバイルウェブが動作 ブラウザ Client 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 19

モバイルウェブでのバックエンド API アクセス認可 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 1 モバイルウェブを Client として登録 JavaScript のアプリケーションを Client にするための実装 3 モバイルウェブ (JavaScript) 2 4 5 8 認証 認可サーバー 6 7 バックエンド API AS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ブラウザでモバイルウェブを起動 ログイン 2. リダイレクトによりOAuth 認可を要求 検証を うための RS の登録 3. ユーザー認証を実 4. バックエンドAPIアクセス用のアクセストークンを返却 トークンの権限設定 (Scope) 登録 RS 5. アクセストークンをつけてバックエンドAPIにアクセス アクセストークンを検証するリクエスト 6.~7. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 8. バックエンド API が情報を使ってモバイルウェブが動作 ブラウザ Client 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 20

Resource Server の ID/Secret を確認 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 21

モバイルウェブでのバックエンド API アクセス認可 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 1 モバイルウェブを Client として登録 JavaScript のアプリケーションを Client にするための実装 3 モバイルウェブ (JavaScript) 2 4 5 8 認証 認可サーバー 6 7 バックエンド API AS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ブラウザでモバイルウェブを起動 ログイン 2. リダイレクトによりOAuth 認可を要求 検証を うための RS の登録 3. ユーザー認証を実 4. バックエンドAPIアクセス用のアクセストークンを返却 トークンの権限設定 (Scope) 登録 RS 5. アクセストークンをつけてバックエンドAPIにアクセス アクセストークンを検証するリクエスト 6.~7. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 8. バックエンド API が情報を使ってモバイルウェブが動作 ブラウザ Client 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 22

Scope の ID を指定 トークンの期限を設定 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 23

モバイルウェブでのバックエンド API アクセス認可 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 1 モバイルウェブを Client として登録 JavaScript のアプリケーションを Client にするための実装 3 モバイルウェブ (JavaScript) 2 4 5 8 認証 認可サーバー 6 7 バックエンド API AS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ブラウザでモバイルウェブを起動 ログイン 2. リダイレクトによりOAuth 認可を要求 検証を うための RS の登録 3. ユーザー認証を実 4. バックエンドAPIアクセス用のアクセストークンを返却 トークンの権限設定 (Scope) 登録 RS 5. アクセストークンをつけてバックエンドAPIにアクセス アクセストークンを検証するリクエスト 6.~7. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 8. バックエンド API が情報を使ってモバイルウェブが動作 ブラウザ Client 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 24

リダイレクト URL を指定 ( トークンの返し先 ) 要求したい Scope も指定する 登録が完了すると ClientID が発 される 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 25

モバイルウェブでのバックエンド API アクセス認可 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 1 モバイルウェブを Client として登録 JavaScript のアプリケーションを Client にするための実装 3 モバイルウェブ (JavaScript) 2 4 5 8 認証 認可サーバー 6 7 バックエンド API AS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ブラウザでモバイルウェブを起動 ログイン 2. リダイレクトによりOAuth 認可を要求 検証を うための RS の登録 3. ユーザー認証を実 4. バックエンドAPIアクセス用のアクセストークンを返却 トークンの権限設定 (Scope) 登録 RS 5. アクセストークンをつけてバックエンドAPIにアクセス アクセストークンを検証するリクエスト 6.~7. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 8. バックエンド API が情報を使ってモバイルウェブが動作 ブラウザ Client 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 26

単純にアクセストークンを取得するだけならライブラリ読み込み +100 弱の JavaScript コードで実現可能 一部抜粋 <script src="oidc-client.js"></script> <script> var settings = { authority: 'https://example.com/oauth/v2/authz', client_id: 'SampleClientId', redirect_uri: 'https://rp.example.com/', response_type: 'token', scope: 'read write' }; var manager = new Oidc.UserManager(settings); パラメータの設定 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 27

単純にアクセストークンを取得するだけならライブラリ読み込み +100 弱の JavaScript コードで実現可能 一部抜粋 function authorizationrequest() { manager.signinredirect() ; } if (window.location.hash.indexof('#state=') == 0 window.location.hash.indexof('&state=') > 0) { manager.signinredirectcallback().then(function (u) { // ログイン成功時処理 }).catch(function (e) { // ログイン失敗時処理 }) ; } ボタン選択時に呼び出されるように設定 認可レスポンス返却時の処理 トークンの検証処理等はライブラリ内で われる 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 28

モバイルウェブでのバックエンド API アクセス認可 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 1 モバイルウェブを Client として登録 JavaScript のアプリケーションを Client にするための実装 3 モバイルウェブ (JavaScript) 2 4 5 8 認証 認可サーバー 6 7 バックエンド API AS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ブラウザでモバイルウェブを起動 ログイン 2. リダイレクトによりOAuth 認可を要求 検証を うための RS の登録 3. ユーザー認証を実 4. バックエンドAPIアクセス用のアクセストークンを返却 トークンの権限設定 (Scope) 登録 RS 5. アクセストークンをつけてバックエンドAPIにアクセス アクセストークンを検証するリクエスト 6.~7. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 8. バックエンド API が情報を使ってモバイルウェブが動作 ブラウザ Client 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 29

TokenIntrospection リクエスト Token Introspection レスポンス curl "https://ip.example.com/oauth/v2/token/introspect" -X POST -H "Content-Type:application/x-www-form-urlencoded" -H "Authorization: Basic U2FtcGxlUlNJRDpTYW1wbGVSU1NlY3JldA==" -d "token=sampleaccesstoken" -i' { "active": true, ResourceID, Secret の Basic 認証ヘッダ 検証したいアクセストークン "client_id": "Gvg5PtkkPIHpPRiAXCZluxcHYaSrGO8q", "token_type": "Bearer", "scope": [ "read", "write" ], "sub": "Azv9E0aLI1s6JVbAuzCAzPR9k2b0KiZQyOxJiuPLiy52", "iss": "https://ip.example.com/oauth/v2", "exp": 1507803616, "iat": 1507800016, "extension_field": "" } 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 30

TokenIntrospection リクエスト curl "https://ip.example.com/oauth/v2/token/introspect" -X POST -H "Content-Type:application/x-www-form-urlencoded" -H "Authorization: Basic U2FtcGxlUlNJRDpTYW1wbGVSU1NlY3JldA==" -d "token=sampleaccesstoken" -i' Token Introspection レスポンス { "active": true, "client_id": "Gvg5PtkkPIHpPRiAXCZluxcHYaSrGO8q", "token_type": "Bearer", "scope": [ "read", "write" ], "sub": "Azv9E0aLI1s6JVbAuzCAzPR9k2b0KiZQyOxJiuPLiy52", "iss": "https://ip.example.com/oauth/v2", "exp": 1507803616, "iat": 1507800016, "extension_field": "" } 許可された権限 期限 ユーザの識別子 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 31

モバイルウェブアプリケーションの例 ユーザ属性登録 保管 スケジュール管理アプリ スケジュール API 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 32

モバイルウェブアプリケーションの例 ユーザ属性要求 スケジュール管理アプリ スケジュール API 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 33

モバイルウェブでのバックエンド API アクセス認可 OAuth 2.0 Client Credentials Grant を用いたバックエンド API からのアクセス認可とユーザ情報取得 1 3 モバイルウェブ (JavaScript) ブラウザ 2 4 アクセストークンを要求するリクエスト 5 8 6 認証 認可 RS サーバー 7 9 10 11 AS 12 バックエンド API Client 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ブラウザでモバイルウェブを起動 ログイン 2. リダイレクトにより OAuth 認可を要求 3. ユーザー認証を実 ユーザ情報を取得するためのリクエスト 4. バックエンドAPIアクセス用のアクセストークンを返却 5. アクセストークンをつけてバックエンド API にアクセス 6.~7. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 8. バックエンド API が情報を使ってモバイルウェブが動作 9.~10. バックエンド API が OAuth 認可を要求 11.~12. バックエンド API がユーザ属性を要求 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 34

トークンリクエスト curl "https://ip.example.com/oauth/v2/token" -X POST -H "Content-Type:application/x-www-form-urlencoded" -H "Authorization: Basic U2FtcGxlQ2xpZW50SUQ6U2FtcGxlQ2xpZW50U2VjcmV0" -d "grant_type=client_credentials&scope=tsipacouunt:get" クライアント用のトークンをリクエスト ユーザ取得のための権限を要求 トークンレスポンス { "access_token":"sampleaccesstoken", "token_type":"bearer", "expires_in":"600" } 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 35

ユーザリクエスト curl "https://ip.example.com/account/v2/users/sampleuserid" -X GET -H "Content-Type:application/scim+json" -H "Authorization: Bearer SampleAccessToken" ユーザレスポンス 取得したアクセストークンでユーザ情報を要求 { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:user" ], "id": "SampleUserId", "username": "SampleUser", "nickname": "sample", "active": true, 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 36

認証 アクセス認可の実装の考え方 従業員向けサービス 顧客向けサービス 外部サービスの利 SaaS が提供するモバイル向けアプリを利用 OpenID Connect や SAML を使った SaaS への SSO モバイルウェブの開発と提供 ネイティブアプリの開発 提供 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 OAuth 2.0 for Native Apps のプラクティスを用いたバックエンド API へのアクセス認可 サードパーティとの連携 API を提供し サードパーティがアプリを開発 提供 OAuth 2.0 を用いた API 連携時認証 アクセス認可 Implicit, Authz Code, Authz Code+PKCE (OIDF FAPI WG の動向の考慮も必要 ) 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 37

ネイティブアプリでのバックエンド API アクセス認可 OAuth 2.0 for Native Apps のプラクティスを用いたバックエンド API へのアクセス認可 Authz Code Grant の利用 ( トークンの更新も可 ) アプリ内ブラウザの使用 PKCE の利用による Code 横取りの予防 1 3 アプリ内ブラウザ 5 ネイティブアプリ 2 4 Client 7 6 10 認証 認可サーバー 8 9 バックエンド API AS RS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ネイティブアプリを起動 ログイン 2. アプリ内ブラウザを使い OAuth 認可を要求 (PKCE を併用 ) 3. ユーザー認証を実 4. アクセストークンを取得するための Code を返却 5. アプリ内ブラウザからネイティブアプリに Code を返却 6. Code をアクセストークンに交換 (PKCE を併用 ) 7. アクセストークンをつけてバックエンド API にアクセス 8.~9. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 10. バックエンド API が情報を使ってネイティブアプリが動作 バックエンド API の振る舞いは モバイルウェブ ネイティブアプリで共通 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 38

ネイティブアプリでのバックエンド API アクセス認可 OAuth 2.0 for Native Apps のプラクティスを用いたバックエンド API へのアクセス認可 Authz Code Grant の利用 ( トークンの更新も可 ) アプリ内ブラウザの使用 PKCE の利用による Code 横取りの予防 1 3 2 4 ネイティブアプリケーションを OAuth Client にするための実装方法 アプリ内ブラウザ 5 ネイティブアプリ Client 7 6 10 認証 認可サーバー 8 9 バックエンド API AS RS 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 1. ネイティブアプリを起動 ログイン 2. アプリ内ブラウザを使い OAuth 認可を要求 (PKCE を併用 ) 3. ユーザー認証を実 4. アクセストークンを取得するための Code を返却 5. アプリ内ブラウザからネイティブアプリに Code を返却 6. Code をアクセストークンに交換 (PKCE を併用 ) 7. アクセストークンをつけてバックエンド API にアクセス 8.~9. アクセストークンの情報を確認 ( ユーザー Scope 有効期限 など ) 10. バックエンド API が情報を使ってネイティブアプリが動作 バックエンド API の振る舞いは モバイルウェブ ネイティブアプリで共通 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 39

ファイル名 AuthStateManager.java build.gradle MainActivity.java TokenActivity.java 説明 ユーザの認可状態を管理するライブラリ ライブラリの入手先は AppAuth-Android Android Studio のパッケージに同梱されている Java 環境におけるビルドシステム 認可サービスへ接続するための設定をして 認可リクエストを送信する画 認可レスポンスを受け取り 認可コードとトークンを交換する また取得した Access Token を使用して API にアクセスする画 AppAuth-Android: https://github.com/openid/appauth-android 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 40

AppAuth-Android 内にサンプルの実装有りその中のどこを使えば自社アプリに組み込めるかについては弊社でも実装ガイドの準備有り 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 41

認証 アクセス認可の実装の考え方 従業員向けサービス 顧客向けサービス 外部サービスの利 SaaS が提供するモバイル向けアプリを利用 OpenID Connect や SAML を使った SaaS への SSO モバイルウェブの開発と提供 ネイティブアプリの開発 提供 OAuth 2.0 Implicit Grant を用いたバックエンド API へのアクセス認可 OAuth 2.0 for Native Apps のプラクティスを用いたバックエンド API へのアクセス認可 サードパーティとの連携 API を提供し サードパーティがアプリを開発 提供 OAuth 2.0 を用いた API 連携時認証 アクセス認可 Implicit, Authz Code, Authz Code+PKCE (OIDF FAPI WG の動向の考慮も必要 ) 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 42

AS(Authorization Server) 認可サーバ Client With アクセストークン RS(Resource Server) アプリケーション API Call API サービス 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 43

AS(Authorization Server) 認可サーバ Client アプリケーション API Call With アクセストークン RS(Resource Server) API サービス ここまで話した内容に比べるとクライアントと API サービスの信頼関係が浅い 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 44

異なるレベルの API 提供に対応できる API 連携認証システム機能の必要性 外部サービスの利用 SaaSが提供するモバイル 従業員向けサービス 顧客向けサービス 向けアプリを利用 モバイルウェブの開発と提供 ネイティブアプリの開発 提供 サードパーティとの連携 APIを提供し サードパーティ がアプリを開発 提供 API 提供が進むと提供側の意図と矛盾が生じない認証 認可が課題となる 使う Scope, 有効時間 認証方式 などを設定 ( 利用側の意図 ) 使う Scope, 有効時間 認証方式 などを設定 ( 提供する側の意図 ) 重要情報へのアクセス 重要な操作の実 時は有効時間を制限 多要素認証や再認証を要求するなど API のレベルに合わせた認証 認可が必要に Client Scope Resource (API) client_a app1:read api.1 アプリ 1 client_b app1:write api.2 api.3 client_c app2:funca app2:funcb api.1 api.2 api.3 アプリ 2 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 45

Client と RS の要求によって発生する矛盾 スケジュール管理 API を使ってスケジュール管理アプリを作りたい 一回認証したら 時間使いたい いろんな API を呼び出したい 閲覧は 時間できても良い 他の の予定を変更する場合は一定期間で再度認可を いたい アプリケーション APIサービス実装 API read: 予定閲覧 write: 予定登録 special: 他の の予定の変更可 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 46

Client と RS の要求によって発生する矛盾 スケジュール管理 API を使ってスケジュール管理アプリを作りたい read も write も special も使いたい! 利便性の都合上期間も めで! 認可サーバ readと write と special の権限で Scopeを作って欲しい! それぞれ条件は! アプリケーション APIサービス実装 API read: 予定閲覧 write: 予定登録 special: 他の の予定の変更可 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 47

Client と RS の要求によって発生する矛盾 スケジュール管理 API を使ってスケジュール管理アプリを作りたい read も write も special も使いたい! 利便性の都合上期間も めで! 認可サーバ readと write と special の権限で Scopeを作って欲しい! それぞれ条件は! アプリケーション APIサービス実装 API read: 予定閲覧 write: 予定登録 special: 他の の予定の変更可 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 48

期限を めにセット (1 時間 ) このスコープではリフレッシュトークン利用許可 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 49

期限を短めにセット (10 分 ) このスコープではリフレッシュトークンを使ってほしくない 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 50

Client と RS の要求によって発生する矛盾 スケジュール管理 API を使ってスケジュール管理アプリを作りたい read も write も special も使いたい! 利便性の都合上期間も めで! 認可サーバ readと write と special の権限で Scopeを作って欲しい! それぞれ条件は! アプリケーション APIサービス実装 API read: 予定閲覧 write: 予定登録 special: 他の の予定の変更可 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 51

リフレッシュトークンを使いたい read と special の Scope を利用したい 期限は めにしたい (1 時間 ) 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 52

Client が read の Scope を要求した際のトークンレスポンス { "access_token":"sampleaccesstoken", "token_type":"bearer", "expires_in":"3600", "refresh_token":"samplerefreshtoken" } Client が read と special の Scope を要求した際のトークンレスポンス { "access_token":"sampleaccesstoken", "token_type":"bearer", "expires_in":"600" } 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 53

おわりに 認可処理の中 の具体イメージ 連携されている情報はどのようなものなのか 実装の簡単なイメージ 課題に対する実現の具体イメージ モバイルウェブからバックエンドAPIを叩く際の認可 ネイティブアプリからバックエンドAPIを叩く際の認可 サードパーティからAPIを叩く際の認可 2017 OGIS-RI Co., Ltd. 2017/10/19 モバイル オープン API を活用するための認証基盤の実装例 54

ご清聴ありがとうございました お問い合わせ先 株式会社オージス総研 TEL: 03-6712-1201 / 06-6871-7998 mail: info@ogis-ri.co.jp 2017 OGIS-RI Co., Ltd. 55