2016-08-22 2 views
1

WSO2 IS에서 인증 메커니즘을 만들고 있는데 다음과 같은 문제가 있습니다. - 아래 링크로 remote_user에 구현되었으므로 결과가 정상입니다. 나는 로그인 및 액세스 WSO의 API https://svn.wso2.org/repos/wso2/people/asela/user-mgt/remote-user-api/4.2.X/웹 응용 프로그램에서 WSO2 IS 인증이 불가능합니다.

콘솔

에서하지만 웹 페이지에 시도했을 때, 나는 WSO가에 인증 할 수 있습니다.

public void init() throws AxisFault{ 
     userName = HDConstants.USER_NAME; 
     password = HDConstants.PASSWORD; 
     backEndServerURL = HDConstants.SERVER_URL; 

    setKeyStore(); 
    configCtx = ConfigurationContextFactory.createConfigurationContextFromFileSystem(null, null); 
} 

public void setKeyStore() { 
    System.setProperty("javax.net.ssl.trustStore", HDConstants.TRUST_STORE_PATH); 
    System.setProperty("javax.net.ssl.trustStorePassword", HDConstants.TRUST_STORE_PASSWORD); 
    System.setProperty("javax.net.ssl.trustStoreType", HDConstants.TRUST_STORE_TYPE); 
} 

public boolean authenticateUser(String userName, String password) throws Exception { 
    String serviceURL = null; 
    ServiceClient client = null; 
    Options option = null; 
    boolean isAuthenticated = false; 
    AuthenticationAdminStub authStub = null; 

    serviceURL = backEndServerURL + "AuthenticationAdmin"; 
    authStub = new AuthenticationAdminStub(configCtx, serviceURL); 
    client = authStub._getServiceClient(); 
    option = client.getOptions(); 
    option.setManageSession(true); 
    option.setProperty(org.apache.axis2.transport.http.HTTPConstants.COOKIE_STRING, authCookie); 
    isAuthenticated = authStub.login(userName, password, HDConstants.APP_ID); 
    authCookie = (String) authStub._getServiceClient().getServiceContext() 
      .getProperty(HTTPConstants.COOKIE_STRING); 
    System.out.println(" Auth Cookie ==== " + authCookie); 
    return isAuthenticated; 
} 
` 

나는 방법 인증을 호출하는 코드 아래에 사용되는 컨트롤러에서 : 다음이 내 코드입니다

AuthenticationServiceClient authenticationServiceClient = new AuthenticationServiceClient(); 
      authenticationServiceClient.init(); 
      authenticationServiceClient.authenticateUser("admin", "admin"); 

을하지만 결과가 좋지 않다. 이 시스템은 것으로 알려 : 나는 콘솔에서 인증 할 수 있지만, 왜

at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java:688) 
at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:124) 
at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:887) 
at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116) 
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64) 
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:210) 
at com.home.hduser.wsois.AuthenticationServiceClient.init(AuthenticationServiceClient.java:29) 

내가 모르는 수없는 웹 애플리케이션

아래의 파일에 첨부 된 전체 추적 에러 : https://drive.google.com/open?id=0B9zEqmu0HBunSlp3X0dpWC1YU0E

이 경우 귀하의 도움에 감사드립니다. 감사합니다.

+0

전체 오류 추적을 게시하십시오. – Bee

+0

안녕하세요, Bhathiya, 위의 링크에 전체 오류를 첨부했습니다. – user2659694

+0

IS 버전이 무엇입니까? – Bee

답변

1

그냥,의 pom.xml 파일에 설정 제공 범위를이 종속성을 변경

 <dependency> 
     <groupId>org.wso2.carbon.identity</groupId> 
     <artifactId>org.wso2.carbon.um.ws.api</artifactId> 
     <version>${carbon.identity.version}</version> 
     <scope>provided</scope> 
    </dependency> 

는 바람둥이 종속성을 제거하려면 :

[INFO] +- org.wso2.carbon.identity:org.wso2.carbon.um.ws.api:jar:4.5.4:provided 
[INFO] | +- org.wso2.carbon:org.wso2.carbon.user.core:jar:4.4.1:provided 
[INFO] | | +- org.wso2.carbon:javax.cache.wso2:jar:4.4.1:provided 
[INFO] | | | \- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1:provided 
[INFO] | | +- commons-dbcp.wso2:commons-dbcp:jar:1.4.0.wso2v1:provided 
[INFO] | | +- org.apache.tomcat.wso2:jdbc-pool:jar:7.0.34.wso2v2:provided 
[INFO] | | | \- org.apache.tomcat:tomcat-jdbc:jar:7.0.47:provided 
[INFO] | | \- commons-collections.wso2:commons-collections:jar:3.2.0.wso2v1:provided 
[INFO] | +- org.wso2.carbon.identity:org.wso2.carbon.user.mgt.common:jar:4.5.4:provided 
[INFO] | +- org.wso2.carbon:org.wso2.carbon.core:jar:4.4.1:provided 
[INFO] | | +- org.wso2.orbit.com.hazelcast:hazelcast:jar:3.5.0.wso2v1:provided 
[INFO] | | | \- com.hazelcast:hazelcast-all:jar:3.5:provided 
[INFO] | | |  +- com.eclipsesource.minimal-json:minimal-json:jar:0.9.2:provided 
[INFO] | | |  \- org.freemarker:freemarker:jar:2.3.22:provided 
[INFO] | | +- org.eclipse.equinox:org.eclipse.equinox.http.helper:jar:1.1.0.wso2v1:provided 
[INFO] | | \- org.apache.tomcat:tomcat-catalina-ha:jar:7.0.59:provided 
[INFO] | |  +- org.apache.tomcat:tomcat-juli:jar:7.0.59:provided 
[INFO] | |  +- org.apache.tomcat:tomcat-tribes:jar:7.0.59:provided 
[INFO] | |  +- org.apache.tomcat:tomcat-catalina:jar:7.0.59:provided 
[INFO] | |  | +- org.apache.tomcat:tomcat-annotations-api:jar:7.0.59:provided 
[INFO] | |  | \- org.apache.tomcat:tomcat-api:jar:7.0.59:provided 
[INFO] | |  \- org.apache.tomcat:tomcat-util:jar:7.0.59:provided 
[INFO] | +- org.wso2.carbon:org.wso2.carbon.authenticator.proxy:jar:4.4.1:provided 
[INFO] | | \- org.wso2.carbon:org.wso2.carbon.core.common:jar:4.4.1:provided 
[INFO] | +- org.wso2.carbon:org.wso2.carbon.registry.core:jar:4.4.1:provided 
[INFO] | | +- commons-io.wso2:commons-io:jar:2.0.0.wso2v2:provided 
[INFO] | | +- net.sourceforge.findbugs:annotations:jar:1.3.2:provided 
[INFO] | | +- org.wso2.carbon:org.wso2.carbon.registry.xboot:jar:4.4.1:provided 
[INFO] | | +- org.compass-project.wso2:compass:jar:2.0.1.wso2v2:provided 
[INFO] | | +- org.apache.abdera.wso2:abdera:jar:1.0.0.wso2v3:provided 
[INFO] | | +- org.apache.poi.wso2:poi-scratchpad:jar:3.9.0.wso2v1:provided 
[INFO] | | | \- org.apache.poi:poi-scratchpad:jar:3.9:provided 
[INFO] | | |  \- org.apache.poi:poi:jar:3.9:provided 
[INFO] | | \- commons-pool.wso2:commons-pool:jar:1.5.6.wso2v1:provided 
[INFO] | |  \- commons-pool:commons-pool:jar:1.5.6:provided 
[INFO] | \- org.wso2.carbon.identity:org.wso2.carbon.um.ws.api.stub:jar:4.5.4:provided 

편집 : 내가 설정 IS_HOME 절대 경로를했다.

enter image description here

편집 2 :

이 방법은 wso2carbon.jks 파일의 경로를 반환 : 상대 경로를 사용하려면 setKeyStorePath를 사용하도록 setKeyStore을 수정

public String setKeyStorePath(){ 
    String path = System.getProperty("carbon.home") + File.separator + 
      "repository" + File.separator + "resources" + 
      File.separator + "security" + 
      File.separator + "wso2carbon.jks"; 
    System.out.println("wso2carbon.jks path: " + path); 
    return path; 
} 

()

public void setKeyStore() { 
    System.setProperty("javax.net.ssl.trustStore", setKeyStorePath()); 
    System.setProperty("javax.net.ssl.trustStorePassword", HDConstants.TRUST_STORE_PASSWORD); 
    System.setProperty("javax.net.ssl.trustStoreType", HDConstants.TRUST_STORE_TYPE); 
} 
+0

감사합니다. Jorge,하지만 현재 인증과 관련하여 문제가 있습니다. 위의 코드와 같이 trustStore, trustStorePassword를 설정하는 동안 "java.security.NoSuchAlgorithmException : 구현을 구성하는 중 오류가 발생했습니다 (알고리즘 : 기본값, 공급자 : SunJSSE, 클래스 : sun.security.ssl.SSLContextImpl $ DefaultSSLContext)"문제가있는 경우 – user2659694

+0

트러스트 앵커와 관련이있다. public static final String IS_HOME = ".."+ File.separator + ".."+ File.separator; –

+0

아래의 코드로 프로젝트의 리소스 폴더에서 TRUST_STORE_PATH를 가져 오려고했지만 결과는 같습니다. ClassLoader classLoader = getClass(). getClassLoader(); \t 파일 file = 새 파일 (classLoader.getResource ("wso2carbon.jks"). getFile()); System.setProperty ("javax.net.ssl.trustStore", file.getAbsolutePath()); – user2659694

0

웹 응용 프로그램을 IS 자체에 배포한다고 가정합니다. 전쟁 파일에 많은 항아리가 쌓여있는 것을 볼 수 있습니다. 대부분은 이미 IS 서버에서 사용할 수 있습니다.

위의 오류는 종속성 충돌로 인해 발생할 수 있습니다. 자세한 내용은 See this을 참조하십시오.

오류를 없애려면 <scope>provided</scope>을 이미 서버에서 사용할 수있는 종속성으로 설정하십시오.

+0

오, 클라이언트에서 액세스하는 데 도움이되는 게이트 방법을 구축하려고합니다. ---> 내 게이트 -> IS. 우리 클라이언트가 로그인 기능을 사용할 때 가정. 우리는 내 게이트에서 login 메소드를 호출 한 다음 IS에서 함수를 인증하도록 리디렉션합니다. 에 넣어 주려고했지만, 결과는 이전과 동일합니다. – user2659694

+0

wso2에 대한 올바른 저장소를 제공하거나 프로젝트에서 pom 파일을 편집 할 수 있습니까? – user2659694

+0

'wso2-nexus' repo가 ​​정확합니다. jars IS의 버전을 확인하려면'/repository/components/plugins /'디렉토리를 살펴보십시오. – Bee

관련 문제