SlideShare una empresa de Scribd logo
1 de 30
EC-CUBE API プラグイン勉強会
EC-CUBE名古屋定期勉強会 vol.36
@_aromaforest 2016/10/01
大河内健太郎
自己紹介
• 名前: 大河内健太郎(@nanasess) 年齢: 39才
• 出身: 愛知県西尾市一色町
• 在住: 宝塚市
• 前職: 寿司屋の板前(安城市の「ひで寿司」)
• 資格: 調理師・ふぐ処理師
• Mac OS X / Microsoft Azure / FreeBSD 使ってます
• EC-CUBE コミッター・公式エバンジェリスト
• 最近のマイブーム: 秋の渡り
AGENDA
• API 開発の背景
• 認証の仕様と実装について
• EC-CUBE API プラグインでできること
API 開発の背景
• 今時 API なんて当たり前だよね。
みんなやってるし
• IoT とかシングルサインオンとかしたいよね
• EC-CUBE でも API つくろうぜ
↑ 2系よりちゃんとしたやつ
簡単に言うなΣ(´Д`lll)
EC-CUBE の情報を扱うリスク
• 個人情報満載
• さらに決済に係わる情報も持ってる
• セキュリティ対策の不備で重過失と認定される危険
EC-CUBE API の要件
• 全機能API対応
※ 2015年9月期第1四半期決算説明資料より
※ 開発指針はこちら→https://ec-cube.github.io/api
( ゚д゚)
安心安全かつ、柔軟なAPIの提供が望まれています。
認証について
• OAuth2.0(RFC6749)/OpenID Connect を採用
• Web API 認証のデファクトスタンダード
• ちゃんとやろうとすると超大変
OAuth2.0 って?
• Twitter とか Facebook のソーシャルログインで
使われるやつ。認可フレームワークの仕様
• みんなよくやってるじゃん
↑よくやってるのはクライアント側の実装
• 今回やらなきゃいけないのはサーバー側の実装
OAuth 2.0 Authorization Protocol - RFC 6749
http://openid-foundation-japan.github.io/rfc6749.ja.html
OpenID Connect って?
• OAuth2.0 の拡張版
• アプリケーション間の認証を安全に行うための仕様
→相互妥当性検証が可能
• OpenID Authorization 2.0 とは別物
OpenID Connect Core 1.0
http://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html
まとめると
• 第三者のアプリケーションにユーザーID&パスワードを渡さずに
• 誰を認証するか - 認証(Authentication)
• 誰が誰に何の権限を与えるか - 認可(Authorization)
を実現するための仕様です
EC-CUBE API における認証
• 安全に認証を提供するには OpenID Connect 以外に選択肢が無い
• PHP のオープンソースCMSでちゃんとやっているものは少ない
• 当初全部自分で書くのを覚悟していた。。。
すばらしいものを発見
• https://github.com/bshaffer/oauth2-server-php
• PHP の OAuth2.0 サーバーの実装
• OpenID Connect もサポートしているらしい
• Google の中の人 (たぶん) がつくってる
• ドキュメント少ないけど Doctrine2 や Symfony2 の実装サンプルが
あった!
だが楽ではない
• それでも多くの部分を自分で書く必要がある
• Silex での実装は github に公開されているもので 36件。多くはデモやサンプルなので
本気なやつは皆無
• OpenID Certification のリストに無いので、どれだけ仕様を満たしているか不明
• RFCなどの標準仕様と oauth2-server-php のソースを確認しつつ
EC-CUBE に実装していく地味なお仕事
• 一通り自力でエンドポイントの実装を書いたあと、「これ設定だけでできるじゃん…
」と判明したのがいくつか
EC-CUBE API でサポートした仕様
• OpenID Connect Core の主要部分
• Authorization Code flow(Webアプリ向け) と
Implicit flow(ネイティブアプリ向け)
• OAuth2.0 も包括
• その他 Google Identity Platform などを参考に追加実装している機能
もある
• 仕様書は Swagger で記述。 Swagger UI で簡単に試せる!
Customer と Member
• Customer(フロント側) と Member(管理画面側) に認証を提供している
• APIクライアント(OAuth2.0クライアント)は、各ユーザーと1対1の関
係
• Member は 管理画面→設定→システム情報設定→メンバー管理の編集
画面から「APIクライアント一覧」より設定
• Customer は Myページの隠しURL(/mypage/api) から設定
未サポートのもの
• OpenID Connect Core のうち OPTIONAL 扱いのもの
• Prompt パラメータ
• Display パラメータ
• Hybrid flow
• Public Client(Non-Confidential Client)
• Dynamic Registration/Discovery などの関連仕様など
認証の流れを試してみよう
Authorization code flow のチュートリアル
http://ec-cube.github.io/api_authorization.html#link12
Implicit flow は Swagger UI で簡単に試せます
実装について
• CSRF 防止のための state パラメータは必須
• OAuth2.0 では推奨となっているため、サポートしていない
クライアント/SDKが多い
• 各言語のサンプルあり
• Java, JavaScript, Python, PHP, C#
• Google OAuth 2.0 Playground でも試せます
追加仕様
• Google Identity Provider を参考に追加実装したもの
• tokeninfo エンドポイント
• id_token を渡すと詳細情報を JSON で返す
• urn:ietf:wg:oauth:2.0:oob
• redirect_uri に設定すると、ブラウザのアドレスバーに
Authorization code を返してくれる
実装について2
• Customer/Member ごとに UserInfo と id_token の Public key が生成されま
す
• UserInfo::sub は Public key の thumbprint です
• シングルサインオンをしたい場合は、もうちょっと改良した方がいい
• 実装してみました→https://github.com/EC-CUBE/eccube-
api/issues/39#issuecomment-249765124
• id_token の検証は https://jwt.io/ が便利
EC-CUBE API プラグイン
• 認証 + 全テーブルの CRUD を提供
• https://github.com/EC-CUBE/eccube-api
• フィードバックお待ちしてます!
CRUD APIについて
• Restful な API
• Create=POST, Read=GET, Update=PUT, Delete=DELETE
• Member の APIクライアント編集画面から簡単に試せます!
• 一般公開されている商品などは認証不要
• 削除は del_flg のあるテーブルのみサポート
• 整合性チェックは DB に依存→参照整合性制約違反の場合は DB エラーになる
CRUD APIについて
• JSON <-> Entity の Mapper を独自に開発
• 複合キーのテーブルは URL が変わるので注意
• https://<eccube-url>/api/v0/{table_name}/key1/value1/key2/value2
• Doctrine の Metadata を読みとって JSON と Entity をマッピングしている
• テーブル定義が変わると API 定義まで変わってしまう...
JSON フォーマット
• オブジェクトのプロパティがコレクションの場合は, キー情報のみの配列を返す
• オブジェクトのプロパティがオブジェクトの場合は, キー情報のみのオブジェク
トを返す
• 結果が配列の場合は、結果のオブジェクトに配列がセットされる
• 例はこちら
https://gist.github.com/nanasess/ee253434ef6a669095480342164bcff3
クライアントのデモ
今後
• OpenID Connect Provider Certification を取得したい
• サービス指向の高レベルAPIを作りたい
• 2系に移植できれば夢が広がる
質疑応答
ご静聴ありがとうございました!

Más contenido relacionado

La actualidad más candente

show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyakira6592
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
PHPのセッション管理にDynamoDBを使う
PHPのセッション管理にDynamoDBを使うPHPのセッション管理にDynamoDBを使う
PHPのセッション管理にDynamoDBを使うTaiji INOUE
 
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門Akira Shimosako
 
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築Junji Nishihara
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスEnterpriseDB
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理Tsukasa Kato
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計Yoichi Toyota
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編Amazon Web Services Japan
 
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮Hibino Hisashi
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Kazumi IWANAGA
 
Splunkで実践するKubernetesの運用監視とオブザーバビリティ
Splunkで実践するKubernetesの運用監視とオブザーバビリティSplunkで実践するKubernetesの運用監視とオブザーバビリティ
Splunkで実践するKubernetesの運用監視とオブザーバビリティKunihiko Ikeyama
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話Daichi Koike
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術までAkihiro Suda
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
Podman Overview and internals.pdf
Podman Overview and internals.pdfPodman Overview and internals.pdf
Podman Overview and internals.pdfSaim Safder
 

La actualidad más candente (20)

各種データベースの特徴とパフォーマンス比較
各種データベースの特徴とパフォーマンス比較各種データベースの特徴とパフォーマンス比較
各種データベースの特徴とパフォーマンス比較
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
PHPのセッション管理にDynamoDBを使う
PHPのセッション管理にDynamoDBを使うPHPのセッション管理にDynamoDBを使う
PHPのセッション管理にDynamoDBを使う
 
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
 
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
 
HA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティスHA環境構築のベスト・プラクティス
HA環境構築のベスト・プラクティス
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理
 
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
 
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
 
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
 
Splunkで実践するKubernetesの運用監視とオブザーバビリティ
Splunkで実践するKubernetesの運用監視とオブザーバビリティSplunkで実践するKubernetesの運用監視とオブザーバビリティ
Splunkで実践するKubernetesの運用監視とオブザーバビリティ
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
ポスト・ラムダアーキテクチャの切り札? Apache Hudi(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
Podman Overview and internals.pdf
Podman Overview and internals.pdfPodman Overview and internals.pdf
Podman Overview and internals.pdf
 

Similar a EC-CUBE API プラグイン勉強会

[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform拓将 平林
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springkounan13
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介CData Software Japan
 
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始めToshiaki Aoike
 
SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!Kazumi IWANAGA
 
英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要Tatsuo Kudo
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DeNA
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataSl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataNaoki Shibata
 
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチKazuya Sugimoto
 
ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)Kentaro Ebisawa
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト健一 辰濱
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
Alibabaのサーバーレスサービスと kintoneを連携してみた ~AWSのサーバーレスサービスとの違い~
Alibabaのサーバーレスサービスと kintoneを連携してみた   ~AWSのサーバーレスサービスとの違い~Alibabaのサーバーレスサービスと kintoneを連携してみた   ~AWSのサーバーレスサービスとの違い~
Alibabaのサーバーレスサービスと kintoneを連携してみた ~AWSのサーバーレスサービスとの違い~Sakae Saito
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
PHPにないセキュリティ機能
PHPにないセキュリティ機能PHPにないセキュリティ機能
PHPにないセキュリティ機能Yasuo Ohgaki
 
PHPにないセキュリティ機能
PHPにないセキュリティ機能PHPにないセキュリティ機能
PHPにないセキュリティ機能Yasuo Ohgaki
 
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...Kazumi IWANAGA
 

Similar a EC-CUBE API プラグイン勉強会 (20)

[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
 
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 springSwagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介
 
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
 
SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!SoftLayer API で資産管理をお手伝い!
SoftLayer API で資産管理をお手伝い!
 
英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要英国オープンバンキング技術仕様の概要
英国オープンバンキング技術仕様の概要
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜DRIVE CHARTの裏側  〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
DRIVE CHARTの裏側 〜 AI ☓ IoT ☓ ビッグデータを 支えるアーキテクチャ 〜
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibataSl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
 
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
#decode19 #MW04 誰のための API? Azure デベロッパーにもエンド ユーザーにも嬉しいAPI エコシステム活用アプローチ
 
ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)ネットワークAPI のあれこれ (ENOG37)
ネットワークAPI のあれこれ (ENOG37)
 
Robotium を使った UI テスト
Robotium を使った UI テストRobotium を使った UI テスト
Robotium を使った UI テスト
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
 
Alibabaのサーバーレスサービスと kintoneを連携してみた ~AWSのサーバーレスサービスとの違い~
Alibabaのサーバーレスサービスと kintoneを連携してみた   ~AWSのサーバーレスサービスとの違い~Alibabaのサーバーレスサービスと kintoneを連携してみた   ~AWSのサーバーレスサービスとの違い~
Alibabaのサーバーレスサービスと kintoneを連携してみた ~AWSのサーバーレスサービスとの違い~
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
PHPにないセキュリティ機能
PHPにないセキュリティ機能PHPにないセキュリティ機能
PHPにないセキュリティ機能
 
PHPにないセキュリティ機能
PHPにないセキュリティ機能PHPにないセキュリティ機能
PHPにないセキュリティ機能
 
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
GitHub Actions と Azure PaaS でプルリクエストごとに環境を ~ Azure Static Web Apps と Containe...
 

Más de Kentaro Ohkouchi

PHP7.3へのバージョンアップ対策
PHP7.3へのバージョンアップ対策PHP7.3へのバージョンアップ対策
PHP7.3へのバージョンアップ対策Kentaro Ohkouchi
 
中小ネットショップの 軽減税率対策を学ぼう!
中小ネットショップの 軽減税率対策を学ぼう!中小ネットショップの 軽減税率対策を学ぼう!
中小ネットショップの 軽減税率対策を学ぼう!Kentaro Ohkouchi
 
他人事ではないぞ!
ECサイトのセキュリティ強化
他人事ではないぞ!
ECサイトのセキュリティ強化他人事ではないぞ!
ECサイトのセキュリティ強化
他人事ではないぞ!
ECサイトのセキュリティ強化Kentaro Ohkouchi
 
ネットショップのアクセス解析超入門
ネットショップのアクセス解析超入門ネットショップのアクセス解析超入門
ネットショップのアクセス解析超入門Kentaro Ohkouchi
 
EC-CUBEデザインカスタマイズの ベストプラクティス!
EC-CUBEデザインカスタマイズの ベストプラクティス!EC-CUBEデザインカスタマイズの ベストプラクティス!
EC-CUBEデザインカスタマイズの ベストプラクティス!Kentaro Ohkouchi
 
EC-CUBE と PayPal の縁結び
EC-CUBE と PayPal の縁結びEC-CUBE と PayPal の縁結び
EC-CUBE と PayPal の縁結びKentaro Ohkouchi
 
開発者視点で選ぶ「2系」と「3系」。
そして3系の次期バージョン
開発者視点で選ぶ「2系」と「3系」。
そして3系の次期バージョン開発者視点で選ぶ「2系」と「3系」。
そして3系の次期バージョン
開発者視点で選ぶ「2系」と「3系」。
そして3系の次期バージョンKentaro Ohkouchi
 
EC-CUBE次期バージョンから、しっかり学ぶ Symfony
EC-CUBE次期バージョンから、しっかり学ぶ SymfonyEC-CUBE次期バージョンから、しっかり学ぶ Symfony
EC-CUBE次期バージョンから、しっかり学ぶ SymfonyKentaro Ohkouchi
 
EC-CUBE と PayPal は仲良しか?
EC-CUBE と PayPal は仲良しか?EC-CUBE と PayPal は仲良しか?
EC-CUBE と PayPal は仲良しか?Kentaro Ohkouchi
 
フロントエンドだけで完結! checkout.js でペイパろう
フロントエンドだけで完結! checkout.js でペイパろうフロントエンドだけで完結! checkout.js でペイパろう
フロントエンドだけで完結! checkout.js でペイパろうKentaro Ohkouchi
 
EC-CUBE3系より新しい EC-CUBE2系の開発事例紹介
EC-CUBE3系より新しい EC-CUBE2系の開発事例紹介EC-CUBE3系より新しい EC-CUBE2系の開発事例紹介
EC-CUBE3系より新しい EC-CUBE2系の開発事例紹介Kentaro Ohkouchi
 
EC-CUBE最新情報!3.1開発進捗説明会の報告します!
EC-CUBE最新情報!3.1開発進捗説明会の報告します!EC-CUBE最新情報!3.1開発進捗説明会の報告します!
EC-CUBE最新情報!3.1開発進捗説明会の報告します!Kentaro Ohkouchi
 
俺、エバンジェリストだけど、 EC-CUBEについて何か聞きたいことある?
俺、エバンジェリストだけど、 EC-CUBEについて何か聞きたいことある?俺、エバンジェリストだけど、 EC-CUBEについて何か聞きたいことある?
俺、エバンジェリストだけど、 EC-CUBEについて何か聞きたいことある?Kentaro Ohkouchi
 
EC-CUBE をアップロードしよう!
EC-CUBE をアップロードしよう!EC-CUBE をアップロードしよう!
EC-CUBE をアップロードしよう!Kentaro Ohkouchi
 
超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストールKentaro Ohkouchi
 
PHPのキャッシュを使いこなせ!
PHPのキャッシュを使いこなせ!PHPのキャッシュを使いこなせ!
PHPのキャッシュを使いこなせ!Kentaro Ohkouchi
 
EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会Kentaro Ohkouchi
 
よりよい UI/UX を創るためのアクセス解析
よりよい UI/UX を創るためのアクセス解析よりよい UI/UX を創るためのアクセス解析
よりよい UI/UX を創るためのアクセス解析Kentaro Ohkouchi
 
「UI/UXデザインでサイトを改善しよう」EC-CUBE勉強会 vol.16
「UI/UXデザインでサイトを改善しよう」EC-CUBE勉強会 vol.16「UI/UXデザインでサイトを改善しよう」EC-CUBE勉強会 vol.16
「UI/UXデザインでサイトを改善しよう」EC-CUBE勉強会 vol.16Kentaro Ohkouchi
 

Más de Kentaro Ohkouchi (20)

PHP7.3へのバージョンアップ対策
PHP7.3へのバージョンアップ対策PHP7.3へのバージョンアップ対策
PHP7.3へのバージョンアップ対策
 
中小ネットショップの 軽減税率対策を学ぼう!
中小ネットショップの 軽減税率対策を学ぼう!中小ネットショップの 軽減税率対策を学ぼう!
中小ネットショップの 軽減税率対策を学ぼう!
 
他人事ではないぞ!
ECサイトのセキュリティ強化
他人事ではないぞ!
ECサイトのセキュリティ強化他人事ではないぞ!
ECサイトのセキュリティ強化
他人事ではないぞ!
ECサイトのセキュリティ強化
 
ネットショップのアクセス解析超入門
ネットショップのアクセス解析超入門ネットショップのアクセス解析超入門
ネットショップのアクセス解析超入門
 
EC-CUBEデザインカスタマイズの ベストプラクティス!
EC-CUBEデザインカスタマイズの ベストプラクティス!EC-CUBEデザインカスタマイズの ベストプラクティス!
EC-CUBEデザインカスタマイズの ベストプラクティス!
 
EC-CUBE と PayPal の縁結び
EC-CUBE と PayPal の縁結びEC-CUBE と PayPal の縁結び
EC-CUBE と PayPal の縁結び
 
開発者視点で選ぶ「2系」と「3系」。
そして3系の次期バージョン
開発者視点で選ぶ「2系」と「3系」。
そして3系の次期バージョン開発者視点で選ぶ「2系」と「3系」。
そして3系の次期バージョン
開発者視点で選ぶ「2系」と「3系」。
そして3系の次期バージョン
 
EC-CUBE次期バージョンから、しっかり学ぶ Symfony
EC-CUBE次期バージョンから、しっかり学ぶ SymfonyEC-CUBE次期バージョンから、しっかり学ぶ Symfony
EC-CUBE次期バージョンから、しっかり学ぶ Symfony
 
EC-CUBE と PayPal は仲良しか?
EC-CUBE と PayPal は仲良しか?EC-CUBE と PayPal は仲良しか?
EC-CUBE と PayPal は仲良しか?
 
フロントエンドだけで完結! checkout.js でペイパろう
フロントエンドだけで完結! checkout.js でペイパろうフロントエンドだけで完結! checkout.js でペイパろう
フロントエンドだけで完結! checkout.js でペイパろう
 
EC-CUBE3系より新しい EC-CUBE2系の開発事例紹介
EC-CUBE3系より新しい EC-CUBE2系の開発事例紹介EC-CUBE3系より新しい EC-CUBE2系の開発事例紹介
EC-CUBE3系より新しい EC-CUBE2系の開発事例紹介
 
EC-CUBE最新情報!3.1開発進捗説明会の報告します!
EC-CUBE最新情報!3.1開発進捗説明会の報告します!EC-CUBE最新情報!3.1開発進捗説明会の報告します!
EC-CUBE最新情報!3.1開発進捗説明会の報告します!
 
EC-CUBE はいいぞ
EC-CUBE はいいぞEC-CUBE はいいぞ
EC-CUBE はいいぞ
 
俺、エバンジェリストだけど、 EC-CUBEについて何か聞きたいことある?
俺、エバンジェリストだけど、 EC-CUBEについて何か聞きたいことある?俺、エバンジェリストだけど、 EC-CUBEについて何か聞きたいことある?
俺、エバンジェリストだけど、 EC-CUBEについて何か聞きたいことある?
 
EC-CUBE をアップロードしよう!
EC-CUBE をアップロードしよう!EC-CUBE をアップロードしよう!
EC-CUBE をアップロードしよう!
 
超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール超簡単になった EC-CUBE3 のインストール
超簡単になった EC-CUBE3 のインストール
 
PHPのキャッシュを使いこなせ!
PHPのキャッシュを使いこなせ!PHPのキャッシュを使いこなせ!
PHPのキャッシュを使いこなせ!
 
EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会EC-CUBE on SQL データベース勉強会
EC-CUBE on SQL データベース勉強会
 
よりよい UI/UX を創るためのアクセス解析
よりよい UI/UX を創るためのアクセス解析よりよい UI/UX を創るためのアクセス解析
よりよい UI/UX を創るためのアクセス解析
 
「UI/UXデザインでサイトを改善しよう」EC-CUBE勉強会 vol.16
「UI/UXデザインでサイトを改善しよう」EC-CUBE勉強会 vol.16「UI/UXデザインでサイトを改善しよう」EC-CUBE勉強会 vol.16
「UI/UXデザインでサイトを改善しよう」EC-CUBE勉強会 vol.16
 

Último

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

Último (10)

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

EC-CUBE API プラグイン勉強会

  • 1. EC-CUBE API プラグイン勉強会 EC-CUBE名古屋定期勉強会 vol.36 @_aromaforest 2016/10/01 大河内健太郎
  • 2. 自己紹介 • 名前: 大河内健太郎(@nanasess) 年齢: 39才 • 出身: 愛知県西尾市一色町 • 在住: 宝塚市 • 前職: 寿司屋の板前(安城市の「ひで寿司」) • 資格: 調理師・ふぐ処理師 • Mac OS X / Microsoft Azure / FreeBSD 使ってます • EC-CUBE コミッター・公式エバンジェリスト • 最近のマイブーム: 秋の渡り
  • 3. AGENDA • API 開発の背景 • 認証の仕様と実装について • EC-CUBE API プラグインでできること
  • 4. API 開発の背景 • 今時 API なんて当たり前だよね。 みんなやってるし • IoT とかシングルサインオンとかしたいよね • EC-CUBE でも API つくろうぜ ↑ 2系よりちゃんとしたやつ
  • 6. EC-CUBE の情報を扱うリスク • 個人情報満載 • さらに決済に係わる情報も持ってる • セキュリティ対策の不備で重過失と認定される危険
  • 7. EC-CUBE API の要件 • 全機能API対応 ※ 2015年9月期第1四半期決算説明資料より ※ 開発指針はこちら→https://ec-cube.github.io/api
  • 9. 認証について • OAuth2.0(RFC6749)/OpenID Connect を採用 • Web API 認証のデファクトスタンダード • ちゃんとやろうとすると超大変
  • 10. OAuth2.0 って? • Twitter とか Facebook のソーシャルログインで 使われるやつ。認可フレームワークの仕様 • みんなよくやってるじゃん ↑よくやってるのはクライアント側の実装 • 今回やらなきゃいけないのはサーバー側の実装 OAuth 2.0 Authorization Protocol - RFC 6749 http://openid-foundation-japan.github.io/rfc6749.ja.html
  • 11. OpenID Connect って? • OAuth2.0 の拡張版 • アプリケーション間の認証を安全に行うための仕様 →相互妥当性検証が可能 • OpenID Authorization 2.0 とは別物 OpenID Connect Core 1.0 http://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html
  • 12. まとめると • 第三者のアプリケーションにユーザーID&パスワードを渡さずに • 誰を認証するか - 認証(Authentication) • 誰が誰に何の権限を与えるか - 認可(Authorization) を実現するための仕様です
  • 13. EC-CUBE API における認証 • 安全に認証を提供するには OpenID Connect 以外に選択肢が無い • PHP のオープンソースCMSでちゃんとやっているものは少ない • 当初全部自分で書くのを覚悟していた。。。
  • 14. すばらしいものを発見 • https://github.com/bshaffer/oauth2-server-php • PHP の OAuth2.0 サーバーの実装 • OpenID Connect もサポートしているらしい • Google の中の人 (たぶん) がつくってる • ドキュメント少ないけど Doctrine2 や Symfony2 の実装サンプルが あった!
  • 15. だが楽ではない • それでも多くの部分を自分で書く必要がある • Silex での実装は github に公開されているもので 36件。多くはデモやサンプルなので 本気なやつは皆無 • OpenID Certification のリストに無いので、どれだけ仕様を満たしているか不明 • RFCなどの標準仕様と oauth2-server-php のソースを確認しつつ EC-CUBE に実装していく地味なお仕事 • 一通り自力でエンドポイントの実装を書いたあと、「これ設定だけでできるじゃん… 」と判明したのがいくつか
  • 16. EC-CUBE API でサポートした仕様 • OpenID Connect Core の主要部分 • Authorization Code flow(Webアプリ向け) と Implicit flow(ネイティブアプリ向け) • OAuth2.0 も包括 • その他 Google Identity Platform などを参考に追加実装している機能 もある • 仕様書は Swagger で記述。 Swagger UI で簡単に試せる!
  • 17. Customer と Member • Customer(フロント側) と Member(管理画面側) に認証を提供している • APIクライアント(OAuth2.0クライアント)は、各ユーザーと1対1の関 係 • Member は 管理画面→設定→システム情報設定→メンバー管理の編集 画面から「APIクライアント一覧」より設定 • Customer は Myページの隠しURL(/mypage/api) から設定
  • 18. 未サポートのもの • OpenID Connect Core のうち OPTIONAL 扱いのもの • Prompt パラメータ • Display パラメータ • Hybrid flow • Public Client(Non-Confidential Client) • Dynamic Registration/Discovery などの関連仕様など
  • 19. 認証の流れを試してみよう Authorization code flow のチュートリアル http://ec-cube.github.io/api_authorization.html#link12 Implicit flow は Swagger UI で簡単に試せます
  • 20. 実装について • CSRF 防止のための state パラメータは必須 • OAuth2.0 では推奨となっているため、サポートしていない クライアント/SDKが多い • 各言語のサンプルあり • Java, JavaScript, Python, PHP, C# • Google OAuth 2.0 Playground でも試せます
  • 21. 追加仕様 • Google Identity Provider を参考に追加実装したもの • tokeninfo エンドポイント • id_token を渡すと詳細情報を JSON で返す • urn:ietf:wg:oauth:2.0:oob • redirect_uri に設定すると、ブラウザのアドレスバーに Authorization code を返してくれる
  • 22. 実装について2 • Customer/Member ごとに UserInfo と id_token の Public key が生成されま す • UserInfo::sub は Public key の thumbprint です • シングルサインオンをしたい場合は、もうちょっと改良した方がいい • 実装してみました→https://github.com/EC-CUBE/eccube- api/issues/39#issuecomment-249765124 • id_token の検証は https://jwt.io/ が便利
  • 23. EC-CUBE API プラグイン • 認証 + 全テーブルの CRUD を提供 • https://github.com/EC-CUBE/eccube-api • フィードバックお待ちしてます!
  • 24. CRUD APIについて • Restful な API • Create=POST, Read=GET, Update=PUT, Delete=DELETE • Member の APIクライアント編集画面から簡単に試せます! • 一般公開されている商品などは認証不要 • 削除は del_flg のあるテーブルのみサポート • 整合性チェックは DB に依存→参照整合性制約違反の場合は DB エラーになる
  • 25. CRUD APIについて • JSON <-> Entity の Mapper を独自に開発 • 複合キーのテーブルは URL が変わるので注意 • https://<eccube-url>/api/v0/{table_name}/key1/value1/key2/value2 • Doctrine の Metadata を読みとって JSON と Entity をマッピングしている • テーブル定義が変わると API 定義まで変わってしまう...
  • 26. JSON フォーマット • オブジェクトのプロパティがコレクションの場合は, キー情報のみの配列を返す • オブジェクトのプロパティがオブジェクトの場合は, キー情報のみのオブジェク トを返す • 結果が配列の場合は、結果のオブジェクトに配列がセットされる • 例はこちら https://gist.github.com/nanasess/ee253434ef6a669095480342164bcff3
  • 28. 今後 • OpenID Connect Provider Certification を取得したい • サービス指向の高レベルAPIを作りたい • 2系に移植できれば夢が広がる