問題タブ [jose4j]

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.

0 投票する
2 に答える
5164 参照

java - Java で Azure B2C ID トークンの JWT 署名を検証するにはどうすればよいですか?

Java で Azure B2C ID トークンの JWT 署名を検証するにはどうすればよいですか? google open-id connect で署名を正常に検証できましたが、Microsoft Azure B2C jwt id トークンの署名を検証できませんでした。B2C Playground アプリの例をhttps://aadb2cplayground.azurewebsites.net/で使用しました。サインアップしてプロファイルを編集した後、この ID トークンを取得しました。

トークンの検証に次のエンドポイントを使用するように Java コードを指定しました。

https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1_sign_in

これが書かれた時点では、これはそのエンドポイントの json でした。

これが私が使用したJavaコードです

最初に、「ヘッダー付きの JWS に適した検証キーが見つかりません」というエラー メッセージが表示されました。そこで、ローカル Web サーバーを作成し、Microsoft json エンドポイントから json をコピーしましたが、"kid":"IdTokenSigningKeyContainer" を "kid":"MnC_VZcATfM5pOYiJHMba9goEKY" に置き換えました。

この変更により、「ヘッダー付きの JWS に適した検証キーが見つかりません」というエラー メッセージが修正されましたが、代わりに「JWS 署名が無効です」というエラーが表示されました。

上記の jwt id トークンの署名を検証する Java ソリューションを探しています。前もって感謝します。

0 投票する
1 に答える
1315 参照

openssl - ECC 公開鍵の Bignum を JWK の X、Y 座標に変換する

EC_Key を使用して OpenSSL で公開鍵と秘密鍵を作成し、x、y、および d コンポーネントを BigNum 形式で作成しました。

ここで、JWK 標準に従って、これらの Bignum 値を Base64URLEncoded 値に変換したいと考えています。

例えば

現在x coordinate76638B4D8040018F834AE6D6540B20E1CA95F6A8C61BE6118062918904B5C5A7

ObjC で OpenSSL と JSONKit を使用している間

それを変換すると、次のようになりBase64URL encoded stringます

x:dmOLTYBAAY-DSubWVAsg4cqV9qjGG-YRgGKRiQS1xac

ただし、Jose4J を使用してサーバー上で同じ x 座標をデコードすると、次のように返されます。

53548795424402895049922051400723229099982122334687022963594437126482323424679

これは、Web サイトで入手できるものと似ています: http://www.mobilefish.com/services/big_number/big_number.php

このことから、BigInt の 10 進表現であることが示されます。

すなわち

  1. BigInt を Decimal に変換

  2. 10 進数から ASCII 文字列へ

  3. そして、Base64 url​​ エンコーディングへ。

ただし、このプロセスを適用している間、サーバーは JOSE4J ライブラリの JWK パラメータを受け入れません。

0 投票する
1 に答える
2705 参照

java - jose4j を使用した JWT のネストされたクレームへのアクセス

jose4j を使用して JWT からネストされたクレームにアクセスできません。クレーム セットが次のような JWT があります。

クレーム内のネストされたクレームにアクセスしようとすると、問題が発生しますcontext。を使用して、トップ レベルのクレームに簡単にアクセスできますgetClaimValue

ネストされたクレームを取得する場合、2 つのオプションがあるようです。

context最初のオプションは、クレームを として返し、Map<String,Object>各クレームをそのオブジェクトから引き出す方法を見つけることです。もう 1 つのオプションは、flattenClaimsすべてのクレームを にフラット化しMap<String,List<Object>>、ネストされたクレームのマップから最初のオブジェクトを取得するために使用することです。

これらの JWT を付与するサービスがスキーマを大幅に変更する場合、これらのオプションのいずれも特に回復力がないように見えます。

より良い方法はありますか?

0 投票する
2 に答える
648 参照

json - openid connect メタデータ エンドポイントから取得した JSON Web キーのキャッシュ

Azure AD B2C には OpenID Connect メタデータ エンドポイントがあり、アプリケーションは実行時に情報を取得できます。このエンドポイントには、トークン署名キー、トークンの内容、およびエンドポイントに関する情報が含まれています。jwk_uris を取得するには、このエンドポイントにクエリを実行する必要があります。jwk_uri には、jwt の署名に使用されるキーの uri があります。これらのキーを 24 時間以上キャッシュする必要はありません。春にこれを行う方法を誰かに教えてもらえますか? これをサポートするAPIはありますか?