Chatwork Creator's Note

ビジネスチャット「チャットワーク」のエンジニアとデザイナーのブログです。

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

読者になる

AWS Dev Day Tokyo 2018 10/31(水) テクニカルセッションに行ってきましたー

こんにちは。

藤井 (@yoshiyoshifujii) です。

今回、弊社のかとじゅんさんが登壇されるということと、興味深いいくつかのセッションを聴講するという名目で参加させていただきましたので、レポートを上げさせていただきますー。

aws.amazon.com

私が聴講させていただいたセッションは、以下となっており、それぞれ簡単に内容と所感を述べさせていただければと思います。

  • (10:00) セキュア開発プロセスをアジャイル開発に適用するには - 徳丸 浩 氏
  • (11:00) ドメインモデリングの始め方 - 加藤 潤一 氏
  • (15:00) 外部に依存したコードもテストで駆動する - 和田 卓人 氏
  • (16:20) クックパッドの動画事業での AppSync 活用事例 - Firebaseからの移行 - - 渡辺 慎也 氏
続きを読む

akka-httpでの総当たり攻撃(brute-force-attack)対策について

こんにちはかとじゅん(@j5ik2o)です。

akka-httpで特定の失敗条件を元に、特定のリクエストをブロックするための仕組みを、akka-guardとして実装したので、設計思想や使い方に関して簡単にお知らせします。今回、想定したシナリオは、認証の総当たり攻撃(brute-force-attack)の対策で、認証の失敗回数が閾値を超えた場合、一定期間認証リクエストをブロックする対策を想定しています。

設計は主に僕がやりましたので僕の方から紹介します。実装は主に藤井(@yoshiyoshifujii)さんにお願いしたので、後半は藤井さん対応で。

続きを読む

IFTTT対応と使い方について

こんにちは、サーバーサイド開発部の原田です。
先日IFTTT連携をリリースしましたので、そのことについて書きたいと思います。

今回のリリースにより、プログラミング不要で簡単に、さまざまなサービスとチャットワークを連携させることができるようになりました。

続きを読む

OAuth2 PKCE対応について

かとじゅん(@j5ik2o)です。OAuth2を使った、チャットワークAPI開発者向けのリリース情報です。

今回は、RFC7636 PKCE(=Proof Key for Code Exchange by OAuth Public Clients)をリリースしました*1。 ただ、API ドキュメントの修正が間に合っていないので、後追いで修正させていただきます。また、現状のPKCEの実装には一部制限がありますので、開発者の方は最後までこの記事に目を通していただけると助かります。

PKCEとは、認可コード横取り攻撃対策のためのOAuth2の拡張仕様です。詳しくは以下のブログ記事などを参考にしてください。

qiita.com qiita.com

簡単に説明すると、Authorization Code Flowで「ブラウザ上のJSやモバイルアプリなど」のパブリッククライアント*2を認可させるための拡張仕様です。つまり、OAuth2クライアントとしてのサーバなしで、ブラウザやモバイルアプリなどの端末上で動作するアプリケーションが、直接的にOAuth2クライアントとして実装できます。

*1:PKCEはピクシーと呼ぶそうです

*2:クライアントシークレットを安全に秘匿できない環境で動作するOAuth2クライアントのこと。詳しくはRFC 6749 - The OAuth 2.0 Authorization Frameworkを参照してください

続きを読む

JWT形式を採用したChatWorkのアクセストークンについて

JWTを使うことは難しい?

こんにちは、かとじゅん(@j5ik2o)です。最近、JWTに関する以下のブログが話題です*1

どうしてリスクアセスメントせずに JWT をセッションに使っちゃうわけ? - co3k.org

このブログで言及されているのは、JWTをセッションの保存先に選ぶことで「何が問題なの?」に書かれているリスクがあるよ、という話*2。確かにいくつか検討することがありますね。

auth0.hatenablog.com

auth0の中の人?よくわからないけど、反論的なブログエントリが公開されています。この記事では、指摘の問題が起こらないように設計するのはあたり前では?という意見みたいです。まぁごもっともではないでしょうか。

私も技術そのものというより、要件に合わせて技術を組み合わせる設計の問題だと思っています。加えて、JWTを利用することはそんなに難しいことかという疑問があったので、考えをまとめてみることにしました。

*1:JWTがよくわからないという方は、yahooさんのブログを参照ください

*2:ブログの内容からは、「JWTの使い方を気を付けないとリスクがあるよ」と解釈できます。しかし、ブログが「JWTをなぜ使うの?」と解釈できるタイトルになっています。JWTそのものじゃなくてJWTの使い方の話なのでタイトルがおかしいなと思ったりしました → 9/21にタイトルが変更されたようで、意図がわかりやすくなりましたね。よいと思います!

続きを読む