このようなAPIキーを生成するために使用できるJava APIまたはアルゴリズムはありますか?私はJWT(JSON Web Token)について知っていますが、このAPIの問題は結果として得られるトークンが非常に長いことです。JavaでAPIトークンを生成するベストプラクティス
答えて
これは、アプリケーションの希望する動作と、ステートフルかステートレスかに完全に依存します。 (HTTPセッションを維持するためにクッキーを使用して)古典的なステートフルなWebアプリケーションの
- は、トークンは比較的短く、すべてのリクエストにクッキーに成功したログイン時に自動的にサーバーによって送信され、期待される/生成されています。アプリケーションサーバーは、自動的にそのトークンに添付されたセッションを検索します。
- パフォーマンスヒットに気をつけないステートレスアプリの場合、上記とまったく同じ戦略をそのまま使用できます。成功したログイン時にUUIDを送信し、ヘッダー内のすべての要求に対して期待し、どこかのUUID-userマッピングを維持して、すべてのリクエストでユーザーの詳細を調べます。ここでのトークンは、推測可能になるため、UUIDよりも単純であってはなりません。
- 可能な限り無駄のない状態を維持したいステートレスアプリケーションの場合、JWTのようなものが必要です。この場合、トークン自体にはすでにユーザーの詳細が含まれているため、ルックアップは必要ありません。欠点は、トークンを取り消すことは容易ではなく、明らかにトークンをはるかに大きくする必要があるということです。しかし、トークンのサイズはなぜ問題になるのでしょうかと尋ねることは重要です。
あなたが使用することができますのいずれかの方法により、org.apache.shiro.crypto.hash:
public Sha256Hash() {
super(ALGORITHM_NAME);
}
public Sha256Hash(Object source) {
super(ALGORITHM_NAME, source);
}
public Sha256Hash(Object source, Object salt) {
super(ALGORITHM_NAME, source, salt);
}
public Sha256Hash(Object source, Object salt, int hashIterations) {
super(ALGORITHM_NAME, source, salt, hashIterations);
}
コード例:
public String createToken(Person person) {
String token = new Sha256Hash(person.id,person.passwordSalt,1024).toBase64()
return token}
JDKは完全に[ハッシング・データ](https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html)を単独で使用できます。なぜApache Shiroをミックスに導入するのですか? –
申し訳ありませんが、あなたのコメントは絶対に意味がありません。 SHA256ハッシュは[標準](https://tools.ietf.org/html/rfc4634)で定義されていますが、Java、C++、またはグラフ計算機で計算された場合とまったく同じです。 JDKが提供する**何か**が準備ができていないか、** JDKの代わりに外部ライブラリを使用したいと思う場所がどこにあるのか分かりませんが、これは非常に間違っています事実、危険な考え方。 –
あなたが正しいと思うかどうか議論したくありません。私はその質問に対して正しいと思ったので答えました。あなたは異なって考えることができ、それもOKです。私は最後のコメントを削除しましたが、あなたの反応を誇張していると思います。がんばろう。 – Rotem
- 1. Golang REST APIのAmazon S3トークン生成
- 2. Python:危険なAPIトークン生成
- 3. Vimeo API - WP HTTP APIで認証されていないトークンを生成する
- 4. IdentityServerベストプラクティスでトークンをリフレッシュするとき
- 5. slim-jwt-authでトークンを生成する
- 6. Ionic FrameworkでCSRFトークンを生成する
- 7. Keycloakでトークンを生成する
- 8. 残りのAPIを使用してジェンキンのAPIトークンを生成する
- 9. リファレンストークン生成のベストプラクティス
- 10. saber apiはlaravelを使ってトークンを生成します
- 11. java apiで画像を生成する(スイングではない)
- 12. MasterCardトークン化APIを作成
- 13. java apiが 'o.a.c.b.converters'ロギングを生成するのは何ですか?
- 14. CSRFトークンの生成
- 15. swagger APIからjava googleエンドポイントサーバースタブを生成
- 16. log4jで単純なJavaクラスのログを生成するapi
- 17. Javaで生成されたNode.jsのjwtトークンをデコードする方法は?
- 18. ユーザーのOpenAMトークンを生成する
- 19. APIを使用したDocusign Oauthトークンの生成
- 20. アクションのトークンを生成
- 21. CakephpでのAPIベストプラクティスの作成
- 22. PostityからMicrosoft Graph APIを確認し、OAuthトークンを生成する
- 23. JavaでRESTful APIを消費し、アーティファクトを生成します。
- 24. EFSのUUID作成トークンを生成
- 25. java.lang.IncompatibleClassChangeError:アンドロイドGCMトークン生成クラッシュ
- 26. PHP - トランザクションのトークンの生成
- 27. gdata java api用のRSAキーを生成する方法は?
- 28. Javaバインディング/ APIからDocBook XMLを生成するには?
- 29. データベースERを生成するために必要なJava API
- 30. Spotify APIトークン検索で500の内部サーバーエラーが発生する
長いAPIキーの何が問題なのですが?それらは通常長い必要があります。 –
あなたのAPIキーがどれほど長くていいのですか?なぜ? –
** UUID **はそのようなトークン生成クラス(128ビット)ですが、あなたのケースでは長すぎますが、ターゲットをオーバーシュートします。 –