ざっくり 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 ほしい人はどぞ ↓
確認
docker run --entrypoint sh -it {image名}
javadoc --version sh: javadoc: command not found
確かに javadoc が無い…
原因
何かいっぱい増えてるやん…
…というわけで、java-17-amazon-corretto
ではなく、java-17-amazon-corretto-devel
をインストールするようにしましょう。
これで無事に javadoc が通りました。
以上。