ざっくり OAuth2.0 を理解する

概要

OAuth はサードパーティアプリケーションによる HTTPサービスへの限定的なアクセスを可能にする認可フレームワークである。

※実際は認可エンドポイント、リダイレクトURIトークンエンドポイントなどが絡み、もっと複雑なシーケンスだが、ざっくり理解する分には上図で問題ない

メリット

OAuth を使わない場合、サードパーティアプリに HTTPサービスのユーザー名、パスワード(ユーザー情報)を教える必要がある。 その場合、下記のリスクが発生する。

OAuth はアクセストークンを利用するため、ユーザー情報を教える必要がない。

OAuth のアクセストークンはBearerトークンであるため、漏洩した場合は不正アクセスのリスクがあるものの、アクセストークンには有効期限があり、かつ、限定した権限しかないため、影響は局所的に抑えられる。

OAuth はあくまで認可フレームワークなので、認証に関しては仕様上触れていない。

よくあるパターンとしては、認可フローの中で HTTPサービスのログインページにリダイレクトさせ、ユーザーにログインさせることで認証を実現している。

java-17-amazon-corretto に javadoc が入っていないという落とし穴

事象

Bitbucket Pipelines で使っているカスタマイズの Dockerイメージを jdk11 -> jdk17 にバージョンアップしたところ、javadoc でエラーが発生

See https://docs.gradle.org/7.4.2/userguide/command_line_interface.html#sec:command_line_warnings
6 actionable tasks: 6 executed
    at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:369)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:87)
    at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:42)
    ... 2 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start '/usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/javadoc'
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
    at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
    at org.gradle.process.internal.ExecHandleRunner.startProcess(ExecHandleRunner.java:98)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:71)
    ... 3 more
Caused by: java.io.IOException: Cannot run program "/usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/javadoc" (in directory "/opt/atlassian/pipelines/agent/build"): error=2, No such file or directory
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
    ... 6 more
Caused by: java.io.IOException: error=2, No such file or directory
    ... 7 more

簡単に言うと、javadoc が無ぇぞ!とのこと

同じ事象でお悩みの方へ

解決済みなので、Dockerfile ほしい人はどぞ ↓

github.com

確認

docker run --entrypoint sh -it {image名}
javadoc --version
sh: javadoc: command not found

確かに javadoc が無い…

原因

何かいっぱい増えてるやん…

docs.aws.amazon.com

…というわけで、java-17-amazon-correttoではなく、java-17-amazon-corretto-develをインストールするようにしましょう。

これで無事に javadoc が通りました。

以上。