2017-09-18 6 views
2

QR 코드로 두 가지 요소 인증을 구현했습니다. 나는 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 페이지에이 문제가있는 것과 비슷한 내용이 있으며 여기에이 라이브러리를 작성한 사람이이 방법을 설명합니다. d 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")을 사용하여 다른 하나 SUN 제공자를 오버라이드 (override) 할 필요가 있음을 이해하지만, 예외를 던지는 이유를 이해하지 않습니다. 내 컴퓨터에서 Java 7로 응용 프로그램을 실행하고 Websphere에서 동일한 버전을 사용합니다. 왜이 예외를 던지고있다

: 차이는는 WebSphere에서 실행되는 응용 프로그램은 6

내 질문은 자바로 컴파일한다? SUN 제공자가 Java에 속하지 않습니까?

다른 공급자와 사용 방법은 무엇입니까?

+0

의 차이는 SUN 공급자가 일부는 WebSphere/자바 버전에서 기본적으로 사용할 수없는 것입니다 대신에 그것을 사용하는 그 속성을 통해 공급자로 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 제공자가 기본적으로 사용 가능하지 않다는 점입니다. java.security 파일의 WebSphere/AppServer/java/jre/lib/security 디렉토리에 있는지 확인할 수 있습니다.

SUN