Spring-boot、Spring-security、JWTトークンを使用してJavaプロジェクトに取り組んでいる間、APIキーとシークレットを介してアクセスを提供する必要があります。キー/シークレットの生成についてGoogleでしばらく検索した後、ここに私が見つけたものがあります:
-
なしの暗号で保護されたUUIDが適切な選択のようです。APIのキーとシークレットを説明するリンクがいくつかあります。
APIキー/シークレットアクセスを提供するビットコインサイトの例:
質問は次のとおりです:
クライアントIDとシークレットのセキュリティ要件を混乱させていると思います。
クライアントIDがどのように見えるかは、一種の好みの問題です。参照する oauth.com サイトの例には、さまざまなサイズと形式のキーが含まれています。乱数は良い選択です。 (擬似コードで)のようなもの:
clientID = base64Encode(secureRandom(16)); // 16 bytes, 128 bits, 22 characters
安全でない乱数を使用できる場合もありますが、それが予測可能性につながる場合があります。安全な乱数ジェネレータをそのまま使用してください。少しだけ遅く、安全であることが保証されています。
シークレットを生成する唯一の方法は、secure乱数ジェネレータを使用することです。
secret = base64Encode(secureRandom(32)); // 32 bytes, 256 bits, 43 characters
シークレットはクリアテキストで保存しないでください。それらを暗号化し、暗号化キーを安全な場所に保存します。
GUIDについて言及しましたが、 ランダムバージョン4 も実装によって異なります。安全なものもあれば、そうでないものもあります。だから私は彼らから離れたままにします。 SHA256およびSHA512ハッシュアルゴリズムについても説明しました。乱数の計算にそれらを使用することは可能ですが、それを正しく行うのは複雑です。安全な乱数ジェネレータを使用するだけで安全です。
すでにSpringを使用しているので、実装にはおそらく RandomValueStringGenerator が適しています。正しいバイト数のジェネレータを作成するだけです。参照のために、そのクラスの ソースコード を確認することもできます。