2017-09-18 18 views
2

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のプロバイダの一部ですか?

他にどのようなプロバイダを使用すればいいですか?

+0

差がSUNプロバイダは、いくつかのWebSphere/Javaのバージョンでは、デフォルトでは利用できないということであるのではなく、それを使用して、そのプロパティを経由してプロバイダとしてIBMJCEを指定します。 'WebSphere/AppServer/java/jre/lib/security'ディレクトリの' java.security'ファイルに存在するかどうかを調べることができます。 'SUN'の代わりにそれを使用するには、そのプロパティーを介してプロバイダーとして' IBMJCE'を指定してください。 – Gas

+0

@Gasありがとう、 'java.security'ファイルに' SUN'プロバイダがまったくなかったのです。私はプロバイダとして 'IBMJCE'を設定し、それはうまくいった。あなたが答えを書いたければ、私はあなたに値する評判を与えることを本当にうれしく思います。再度、感謝します! – amicoderozer

+1

私の場合、SUNからIBMJCEに変わったばかりで、それも機能しました。 – Sonhja

答えて

4

一部のWebSphere/Javaバージョンでは、SUNプロバイダーはデフォルトでは使用できません。 WebSphere/AppServer/java/jre/lib/securityディレクトリにあるjava.securityファイルに存在するかどうかを調べることができます。

SUN

関連する問題