2016-08-22 1 views
1

Я пытаюсь создать механизм проверки подлинности на WSO2 IS, и у меня есть проблема: - Я применил к remote_user как ссылку ниже, и результат в порядке. Я могу войти и ОБМ доступ API из консолиНе удается аутентифицировать с помощью WSO2 IS на webapp

https://svn.wso2.org/repos/wso2/people/asela/user-mgt/remote-user-api/4.2.X/

Но когда я попробовал на веб-странице, я не могу проверить подлинность ОБМ IS. следующий мой код для этого:

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

Я ценю вашу помощь в этом случае. Thanks

+0

сообщение своя полная ошибка следы. – Bee

+0

Привет, Бхатия, я приложил полную ошибку в приведенной выше ссылке. – 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> 

Чтобы удалить зависимости TOMCAT:

[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 

EDIT: я должен был установить is_home путь абсолютной.

enter image description here

EDIT 2: Для того, чтобы использовать относительный путь:

Этот метод возвращает путь к файлу wso2carbon.jks:

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; 
} 

Изменить setKeyStore использовать setKeyStorePath()

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

Спасибо, Хорхе, но в настоящее время у меня проблемы с аутентификацией. Исключение составляет «java.security.NoSuchAlgorithmException: ошибка построения реализации (алгоритм: по умолчанию, поставщик: SunJSSE, класс: sun.security.ssl.SSLContextImpl $ defaultSSLContext)», в то время как я устанавливаю trustStore, trustStorePassword, как указано выше: – user2659694

+0

, если проблема связанный с привязкой доверия, для относительного пути в публичном статическом финальном String IS_HOME = ".." + File.separator + ".." + File.separator; –

+0

Я попытался получить TRUST_STORE_PATH из папки ресурсов проекта с приведенным ниже кодом, но результат тот же. ClassLoader classLoader = getClass(). GetClassLoader(); \t Файл file = new Файл (classLoader.getResource ("wso2carbon.jks"). GetFile()); System.setProperty ("javax.net.ssl.trustStore", file.getAbsolutePath()); – user2659694

0

Я предполагаю, что вы развертываете свой webapp в самом IS. Я вижу, что в вашем военном файле много фляг. Большинство из них уже доступны на IS-сервере.

Ошибка выше может произойти из-за конфликтов зависимостей. See this для получения дополнительной информации.

Чтобы избавиться от этой ошибки, вы можете попробовать установить <scope>provided</scope> на зависимости, которые уже доступны на сервере.

+0

О, я пытаюсь создать ворота, чтобы помочь получить доступ от нашего клиента ---> мои ворота -> IS. Предположим, что когда наш клиент использует функцию входа в систему. Мы будем вызывать метод входа в мой Gate и затем перенаправлять на аутентификацию функции на IS. Я попытался добавить при условии, что в моем файле pom, но результат такой же, как раньше. – user2659694

+0

Не могли бы вы предоставить мне правильный репозиторий для wso2 или отредактировать файл pom из моего проекта? – user2659694

+0

'wso2-nexus' репо у вас в пом. Чтобы узнать, какие версии jars IS имеют, вы можете посмотреть каталог '/repository/components/plugins /'. – Bee