QRコードで2つの要素の認証を実装しました。私はGoogleAuthライブラリを使ってやった。私のローカル環境では魔法のように動作しますが、私が展開するときのWebSphere上のアプリケーションは、このエラーがスロー8.5.5:java.security.NoSuchProviderException:そのようなプロバイダがありません:SUN
java.security.NoSuchProviderException: no such provider: SUN
そしてGoogleAuth
この例外をスロー:
Could not initialise SecureRandom with the specified provider: SUN.
Another provider can be chosen setting the com.warrenstrange.googleauth.rng.algorithmProvider system property
この方法で:
private String getRandomNumberAlgorithm()
{
return System.getProperty(RNG_ALGORITHM, DEFAULT_RANDOM_NUMBER_ALGORITHM);
}
プロジェクトのGitHubページにこのissueが見つかりました。これは私の問題と非常によく似ています。ここではこのライブラリを書いた人がこの方法をどのように説明していますか? OES:
The library currently gets a SecureRandom instance using the SecureRandom#getInstance method and specifying the SHA1PRNG algorithm and the SUN provider
私は、システムがそれを見つけることができないので、私は、System.setProperty("com.warrenstrange.googleauth.rng.algorithmProvider", "property")
を使用して、別の1とSUN
プロバイダを上書きする必要があることを理解したが、例外がスローされた理由を私は理解していません。 私のマシンではJava 7でアプリケーションを実行し、Websphereでは同じバージョンを使用します。なぜ、この例外がスローされ
:違いは、WebSphere上で動作するアプリケーションは、6
私の質問があるのJavaでコンパイルされていますか? SUN
プロバイダはJavaのプロバイダの一部ですか?
他にどのようなプロバイダを使用すればいいですか?
差がSUNプロバイダは、いくつかのWebSphere/Javaのバージョンでは、デフォルトでは利用できないということであるのではなく、それを使用して、そのプロパティを経由してプロバイダとして
IBMJCE
を指定します。 'WebSphere/AppServer/java/jre/lib/security'ディレクトリの' java.security'ファイルに存在するかどうかを調べることができます。 'SUN'の代わりにそれを使用するには、そのプロパティーを介してプロバイダーとして' IBMJCE'を指定してください。 – Gas@Gasありがとう、 'java.security'ファイルに' SUN'プロバイダがまったくなかったのです。私はプロバイダとして 'IBMJCE'を設定し、それはうまくいった。あなたが答えを書いたければ、私はあなたに値する評判を与えることを本当にうれしく思います。再度、感謝します! – amicoderozer
私の場合、SUNからIBMJCEに変わったばかりで、それも機能しました。 – Sonhja