を使用している場合は、フィルターがそれらを認識する前に、各 JWK の「key_ops」を設定解除するHttpsJwksVerificationKeyResolver
単純な小さなサブクラスを持つことができます。HttpsJwks
それは次のようになります。
class MyHttpsJwks extends HttpsJwks
{
public MyHttpsJwks(String location)
{
super(location);
}
@Override
public List<JsonWebKey> getJsonWebKeys() throws JoseException, IOException
{
List<JsonWebKey> jsonWebKeys = super.getJsonWebKeys();
for (JsonWebKey jwk : jsonWebKeys)
{
jwk.setKeyOps(null);
}
return jsonWebKeys;
}
}
そして、次のようにリゾルバーをインスタンス化しますnew HttpsJwksVerificationKeyResolver(new MyHttpsJwks("https://bad.example.com/jwks"));
を使用している場合はJwksVerificationKeyResolver
、リゾルバーをインスタンス化する前に、JsonWebKey リストに対して同じ種類のことを実行できます。VerificationJwkSelector
または SimpleJwkFilter を直接使用している場合、リストに対する同様の前処理も機能します。
FWIW、RFC7517 によると、「use」パラメーターと「key_ops」パラメーターを一緒に使用するべきではありません。一緒に使用する場合は、同じ意味を伝えることになっています。問題のJWKはそれを尊重していないと主張します一般的なデジタル署名操作 (署名または検証)。