Slide 1

Slide 1 text

JavaのOAuthライブラリ 比較検討

Slide 2

Slide 2 text

自己紹介 出身 香川県 趣味 読書 最近ハマっていること 料理とダッシュ

Slide 3

Slide 3 text

目次 ● 認可とOAuthの概要 ● ライブラリの比較検討 ● まとめ ● 参考文献

Slide 4

Slide 4 text

概要

Slide 5

Slide 5 text

認証・認可の基本 識別 Identification このIDは実在ユーザーのものか 認証 Authentication 本当に本人か 認可 Authorization 権限はどうするか

Slide 6

Slide 6 text

OAuthとは 認可の仕組み  APIで利用 アクセストークンを用いて認可 OAuth 2.0認可フレームワークは、第三者アプリケーションがHTTPサービスへの限 定的なアクセス権を取得することを可能にします。これは、リソース所有者とHTTP サービス間の承認インタラクションを調整することでリソース所有者の代理として、ま たは第三者アプリケーションが自身の代理としてアクセス権を取得することを許可す ることによって行われます。この仕様は、RFC 5849で記述されたOAuth 1.0プロトコ ルを置き換え、廃止します。 https://datatracker.ietf.org/doc/html/rfc6749から抜粋し、日本語訳

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

どのライブラリを使用すると良いか (クライアント)

Slide 9

Slide 9 text

クライアント 1. Spring Security 2. Restlet Framework (draft 30) 3. ScribeJava 4. oauth2-essentials 5. Light Java Client 6. Google OAuth Java Client 7. Pac4j 8. Nimbus 9. AppAuth for Android

Slide 10

Slide 10 text

基準 ● 特徴 ● メンテナンス ● 学習コスト

Slide 11

Slide 11 text

Spring Security 特徴 ● 包括的なセキュリティ機能を提供する、Springアプリケーションのため の強力なフレームワーク メンテナンス: ● 9k stars ● Springの公式がサポート 学習コスト ● Spring Frameworkを使用しているなら低め

Slide 12

Slide 12 text

ScribeJava 特徴 ● シンプルで使いやすい、軽量OAuthライブラリ メンテナンス ● 5.5k stars 学習コスト ● シンプルなAPIを提供 ● ScribeJava is so easy your grandma can do it! (GitHubより抜粋)

Slide 13

Slide 13 text

Google OAuth Java Client 特徴 ● Googleが提供する、汎用性と利便性を兼ね備えたOAuthクライアント ライブラリ メンテナンス ● 626 stars ● メンテナンスモードへ移行 学習コスト ● Google APIなどのライブラリを使っていると親和性あり

Slide 14

Slide 14 text

oauth2-essentials 特徴 ● プラットフォーム非依存で、あらゆるHTTPクライアントと連携可能な、汎用 OAuth 2.0クライアントライブラリ メンテナンス ● 88 stars ● 2016年登場 学習コスト ● 比較的新めであるため、ドキュメントや記事が不足している可能性あり

Slide 15

Slide 15 text

Nimbus 特徴 ● 標準規格に準拠した、堅牢で柔軟なOAuth 2.0およびOpenID Connect実装 ライブラリ メンテナンス ● ?? stars: Bitbucketのため ● 2025-02-26 にコミットあり 補足:SpringがNimbus使ってます 学習コスト ● 高め。記事少なめ。

Slide 16

Slide 16 text

まとめ 使いやすさ・学習コスト →ScribeJava Springを使用しているなら →Spring Security ※サーバーサイド、インフラの構成も考慮する必要あり

Slide 17

Slide 17 text

参考文献 ● 今さら聞けない暗号技術&認証・認可 Web系エンジニア 必須のセキュリティ基礎力をUP (Software Design別冊), https://amzn.asia/d/43sHiXD ● OAuth徹底入門 セキュアな認可システムを適用するための 原則と実践, https://amzn.asia/d/f7hNn6v ● RFC 6749 4.1. Authorization Code Grant, https://datatracker.ietf.org/doc/html/rfc6749#section-4.1 ● OAuth 2.0, https://oauth.net/2/