問題タブ [jose]
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.
c# - Jose-JWT の公開鍵による暗号化
この質問はだまされていないと思うので、私の状況を説明しようと思います。
私はJWT、より具体的にはGithubのJOSE-JWT libをテストしていますが、問題があります。
PHP とphpseclibを使用して、秘密鍵と公開鍵のペアを生成し、クライアントに公開鍵を送信しています。ご覧のとおり、すべてが正しいです。私のクライアントは JSON を受け取り、それをオブジェクトに変換し、JSON.NETを使用して文字列に抽出しています。
私はBouncyCastleとStackoverflowからの回答を使用しており、ファイルからではなく文字列から直接読み取るように少し変更しています。
そして、どちらも私に問題を与えています.答えとJoseレポのドキュメントを使用しています:
例外:
英語版: http://unlocalize.com/es/74799_Keyset-does-not-exist.html
そして弾む城で:
例外:
ここから抽出されたCreateTokenメソッド: https://stackoverflow.com/a/44857593/3286975
このメソッドに少し変更を加えました。
どちらの場合も、暗号化メソッドが秘密鍵を探しているようなものです (クライアントクライアントで????)...だから、私の質問は、ウィキペディアがこれを言うなら、なぜこの例がクライアント側で秘密鍵を使用しているのかということです:
ソース: https://en.wikipedia.org/wiki/Public-key_cryptography
そして、いくつかのケースで、私が正しいと思うものを見つけました:
https://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-rsa-encryption
この Java の例では、秘密鍵ではなく公開鍵を使用してデータを暗号化します。
C# の例がクライアント側で秘密鍵を使用している理由がわかりません。これは論理的ではありません。誰かが理由を説明してくれませんか。また、この問題をどのように解決できますか?
wso2 - wso2am-2.6.0 無効な jwt 署名
WSO2AM-2.6.0 (6.x ブランチ) でバックエンド サービスの JWT 署名を有効にする
ただし、開発者は署名が無効であると不平を言っています(JOSEライブラリによると)。jwt.ioページでトークンをテストしましたが、署名が無効であると主張しています。
以前のバージョン (wso2am-2.1.0) から、署名の生成が変更されている (外部フレームワークを使用していない) ことがわかりますが、変更のために、署名は他のフレームワーク (jose、jwt.io) によって有効と見なされません。
wso2am を構成して有効な (有効な) 署名を作成する方法はありますか?
編集:
JWT トークンは APIMJWTGenerator を使用してのみ署名されていることがわかりますが、トークンを有効にすることはできません。
例外は
検証はx5tヘッダー属性と関係がありますか?
Edit2: どうやら xt5t ヘッダーには SHA-1 証明書署名が含まれていると予想されます。指定された値NTA3YzJmZDk0OTg4N2ViNWRlY2M4N2NlMDdjMmNlNjliOTRkYjM1OA
が長すぎて SHA-1 ではないか、無効です
編集3:
この問題はhttps://github.com/wso2/carbon-apimgt/issues/5535に関連しているようです。これを修正すると、明らかにバックエンド サービスとの互換性が失われます (および使用されているフレームワーク、修正を準備しています)。