問題タブ [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.
oauth-2.0 - OpenID フローでトークン要求を送信するときの「無効な署名」API エラーを修正する方法は?
アプリケーション用に OpenID フローをセットアップしており、Microsoft Active Directory を使用して秘密鍵 JWT クライアント証明書認証をテストしたいと考えています。つまり、ID とアクセス トークンを要求するときに、クライアント シークレットではなく証明書を使用してアプリケーションを認証したいと考えています。ただし、トークン要求を行うと、次のエラーが表示されます。
次のコマンドを使用して、秘密鍵と証明書を生成しています。
cert.pem
Azure ポータルのアプリ登録にアップロードしました。
私のアプリケーションでは、Nimbus JOSE + JWTライブラリを使用して JWT を構築し、Nimbus OAuth 2.0 SDK と OpenID Connect 拡張機能を使用して OpenID フローを管理しています。それぞれのパッケージの Javadoc ページは次のとおりです。
- https://www.javadoc.io/doc/com.nimbusds/nimbus-jose-jwt/7.8
- https://www.javadoc.io/doc/com.nimbusds/oauth2-oidc-sdk/6.14
ヘッダーと対応するフッター-----BEGIN PRIVATE KEY-----
が含まれていることを確認することで、キーと証明書が PEM 形式であることを確認しました。-----BEGIN CERTIFICATE-----
エラーに従って、https://developer.microsoft.com/en-us/graph/graph-explorerにアクセスし、左側にログインしてから、指定された編集されていない URL を使用してクエリを送信しました。これを行うと、エラーが発生しました:
私の現在の実装は次のようになります。
ここで間違っている可能性のある手順がいくつかありますが、絞り込むことができませんでした。
- キーの生成が間違っている可能性があります。おそらく、想定された形式ではないキーと証明書を使用していますか?
- Nimbus ライブラリを使用したキーの解析が間違っている可能性があります。リクエスト中にコードをステップ実行してデータ オブジェクトを調べると、ファイルからすべてのコンポーネントを解析しているように見えます。これらのコンポーネントを正しく解析しているかどうかは不明です。
- 秘密鍵 JWT の構成に問題がある可能性があります。
- トークン リクエストの構成に問題がある可能性があります。
- Azure Portal でのアプリケーション登録の構成が間違っている可能性があります。
これを絞り込む方法、またはこの問題を解決する方法についての指針をいただければ幸いです。
spring-security - Spring Security 5.2 -- OAuth2ResourceServer で使用される NimbusJWTDecoder をカスタマイズするには?
ローカルで実行されている openid プロバイダー (openam) があります。自己署名証明書を使用しており、jwks の URL は @ https://localhost:8443/openam/oauth2/connect/ です。
ssl 証明書が自己署名されているため、oidc トークンがデコードされると、SSLHandshake 例外が発生します。カスタムJwtDecoderを作成して、カスタムレストテンプレートを使用してみました(https://docs.spring.io/spring-security/site/docs/current/reference/html5/#oauth2resourceserver-jwt-decoder-dslで提案されているように)
しかし、このデコーダは使用されていないようです。OidcIdTokenDecoderFactory は、デコーダーの作成に使用されています。このクラスでは、カスタム jwtDecoder を渡すことができないようです。
oauthResourceServer().jwt().decoder(customDecoder()) が機能しないのはなぜですか? 自己署名証明書を持つ Web サイトである jwks uri でデコーダーを動作させるにはどうすればよいですか?
私が考えている1つのオプションは、自己署名証明書をjdkのcacertsフォルダーに追加することです..
jwt - JWE nimbus-JOSE の真正性と JavaScript 対応物
JSON Web 暗号化を使用するために、 Java nimbus-JOSEのこの素晴らしいライブラリを見つけました。このライブラリはシンプルで、以下に示す JWE 暗号化のように、JWE 暗号化と復号化に数行しか必要ありません。
ただし、javadocs とドキュメントを読んだ後でも、このライブラリについていくつか質問がありました。特にJWEとこのライブラリに関しては、
- JWE を復号化した後、JWE の真正性をどのように検証しますか? JWE には「署名」がありません。では、JWE の 5 つの部分はどのように有効性を確認するのに役立ちますか? ライブラリでこれに対するサポートはありますか?
- ヘッダーとクレーム以外の JWT の他のフィールドは、ライブラリによってランダムに生成されますか? (これについて明確な証拠を見つけることができませんでした。)
- alg: "RSA-OAEP", enc: "A128GCM" を使用すると、暗号化するたびに異なる JWE を取得するはずですが、同じ JWE を取得しています。RSA-OEAP-256 はこれを防ぐべきではありませんか? 暗号化と復号化フローの詳細なシーケンスは何ですか?
- Javascript で同様のライブラリを見つけようとしましたが、Java 用の nimbus-jose のようなライブラリを見つけることができませんでした。誰かが推奨事項を持っている場合は、以下で助けてください! 私の質問を手伝ってくれる人に感謝します。すべての入力を歓迎します。:)