問題タブ [nimbus-jose-jwt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 2.3.6.RELEASE から 2.4.0 への Spring Boot の移行と json ClassCastException
SpringBoot バージョン 2.3.6.RELEASE に依存する Java プロジェクトがあります。しかし、バージョン 2.4.0 にアップグレードしようとして困っています。プロジェクトでは他に何も変更されておらず、SpringBoot のバージョンのみが変更されました。それ以降、アプリケーションは次のエラー メッセージをスローします。
Maven 依存関係ツリー ( mvn dependency:tree
) の比較を行ったところ、おそらくいくつかの重要な変更がnimbus-jose-jwtおよびjson-smartライブラリに対して行われていることがわかりました。
2.3.6.リリース
2.4.0
上記のように、nimbus-jose-jwtが 8.19 から 9.1.2 に更新されました。さらに、json-smartは 2.4.0 のnimbus-jose-jwt の一部ではなくなりました。
根本的な原因はおそらくこの変更ですhttps://connect2id.com/blog/nimbus-jose-jwt-9 しかし、この例外を防ぐために何をすべきでしょうか?
java - Nimbus リアクティブ JWT デコーダー "NimbusReactiveJwtDecoder.withJwkSetUri()" は、負荷分散された URL lb:// のホストを解決できません
リソースサーバーでキークロークの証明書URLから公開鍵を動的に取得しようとしています。URL は負荷分散されていますが (lb://app-auth/...)、ニンバスはホストを解決できません。
正確なURLでテストしてキーを返したので、URLが正しいと確信しています。
エラーログ:
リソース サーバー構成:
負荷分散された URL を持つことさえ可能ですか? もしそうなら、どうすればこれを達成できますか?
java - Java で JWK を解析できません
パッケージを使用して、特定の keyId の公開鍵を JWK 形式で返す REST 認証サーバーを実装しましたcom.nimbusds:nimbus-jose-jwt:9.13
。コードは次のようになります。
このコードは、次の形式で JWK キーを返します。
クライアント側 (Java) で、次のコードを使用して jwk を解析しようとします。
parse
ただし、 が例外をスローするため、クライアントはキーを解析できません( Missing parameter "kty"
)。メインの JWT josn 本体にキーがJWK.parse
必要ですが、デフォルトのシリアル化ではキーがキー内に埋め込まれます。試してみると、メインのjson本体にキーが表示されます。kty
JWK
kty
requiredParams
jwk.toString()
kty
ネイティブ JWK オブジェクトのシリアル化/逆シリアル化が単純な方法で機能しないのはなぜですか? カスタム jwt 構造またはシリアライザー/デシリアライザーを実装せずにこれを修正する最良の方法は何でしょうか?
更新 1 : このコードは、戻り値の型JWK
をMap<String, Object>
orに変更String
し、クライアント側で逆シリアル化を処理する場合に機能します。ただし、パッケージがネイティブに (デ) シリアル化を行う方がよいでしょう。