Chatwork Creator's Note

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

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

読者になる

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にタイトルが変更されたようで、意図がわかりやすくなりましたね。よいと思います!

続きを読む

勉強会レポート Design Sprint and Rapid Prototyping with メルカリに行ってきた

こんにちは。デザイン部の @cw-marikoです。夏なのでかき氷部(弊社にはそんな部活動もあります)の活動回数を増やしたい今日このごろです。

8月6日に、株式会社メルカリさんが主催されたMaterial Designに特化したワークショップ、Design Sprint and Rapid Prototyping with メルカリに参加させていただきました! デザインスプリントや、ラピッドプロトタイピングについて学べるよい機会でしたので、どんな学びがあるかワクワクしながら参加してきました。

続きを読む

ChatWork Liveの刷新とScala.jsについて

こんにちは。クライアントアプリケーション開発部の田中です。

好きな麻雀の役は七対子です。

先日、ChatWork LiveのUIが変更されました。 詳細は下記を御覧ください。

blog-ja.chatwork.com

UIについては今後デザイン部の方がブログを書くと思うので、今回私の方では技術的なところの紹介をしたいと思います。

(尚、この記事にはWebRTCやビデオ会議システムの話は全く出てきませんので、ご了承ください。)

続きを読む

ブランチとリリースと私

こんにちは、サーバーサイド開発部@東京のあらいです。最近オフィスで下駄を履いています。

さて、先日「ファイル保持機能」をリリースしました。

blog-ja.chatwork.com

この機能の開発を通じて、また前職での開発方法と比較して、gitのブランチ運用とリリースについて考えました。そのこと書きたいと思います。

続きを読む