Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Can';webapp上有WSO2的t身份验证_Spring Mvc_Authentication_Wso2_Wso2is - Fatal编程技术网

Spring mvc Can';webapp上有WSO2的t身份验证

Spring mvc Can';webapp上有WSO2的t身份验证,spring-mvc,authentication,wso2,wso2is,Spring Mvc,Authentication,Wso2,Wso2is,我正在尝试在WSO2 IS上创建身份验证机制,但遇到以下问题: -我实现了远程用户作为下面的链接,结果是好的。我可以从控制台登录并访问WSOAPI 但当我在网页上尝试时,我无法向WSO IS进行身份验证。以下是我的代码: public void init() throws AxisFault{ userName = HDConstants.USER_NAME; password = HDConstants.PASSWORD; backEndSer

我正在尝试在WSO2 IS上创建身份验证机制,但遇到以下问题: -我实现了远程用户作为下面的链接,结果是好的。我可以从控制台登录并访问WSOAPI

但当我在网页上尝试时,我无法向WSO 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;
}
`
我在控制器中使用以下代码调用authenticate方法:

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)
我不知道为什么我可以在控制台上进行身份验证,但不能在webapp上进行身份验证

以及以下文件中附加的完整跟踪错误:

我很感谢你在这件事上的帮助。
谢谢

我假设您正在部署Web应用程序本身。我可以看到你的战争档案里有很多罐子。其中大多数已在IS服务器中可用

由于依赖项冲突,可能会发生上述错误。了解更多信息


要消除此错误,您可以尝试将
提供的
设置为服务器中已有的依赖项

只需在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>
编辑:我必须设置为绝对主路径

编辑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()


发布您的完整错误跟踪。嗨,Bhathiya,我在上面的链接中附加了完整错误。您的is版本是什么?我正在使用WSO is(5.1.0)的最新版本作为解决方案,将webapp部署在WSO2中作为5.3.0,首先移除这个jar:tomcat-annotations-api-7.0.59.jar tomcat-api-7.0.59.jar tomcat-catalina-7.0.59.jar tomcat-catalina-ha-7.0.59.jar tomcat-jdbc-7.0.47.jar tomcat-juli-7.0.59.jar tomcat-tribes-7.0.59.jar tomcat-util-7.0.59.jar哦,我正在尝试构建一个门方式来帮助从我们的客户访问-->我的门-->是-->我的。假设我们的客户使用登录功能。我们将在MyGate中调用login方法,然后它将重定向到IS上的authenticate函数。我试图在我的pom文件中添加提供的,但结果与以前相同。请为我提供wso2 is的正确存储库,或者从我的项目中编辑pom文件?
wso2 nexus
repo您在pom中的操作是正确的。要找到jars的版本,您可以查看
/repository/components/plugins/
目录。我想知道我们的代码不正确,或者my pom中的wso2版本不正确,所以它导致了我上面提到的错误。什么是
my gate
?tomcat?谢谢Jorge,但目前我在身份验证方面遇到了问题。异常是“java.security.NoSuchAlgorithmException:构造实现时出错(算法:Default,提供程序:SunJSSE,类:sun.security.ssl.SSLContextImpl$DefaultSSLContext)”,而我设置了trustStore,trustStorePassword如上代码所示:如果问题与信任锚点有关,则它用于公共静态中的相对路径,最终字符串为_HOME=“…”+File.separator+”。“+File.separator;我试图用下面的代码从项目的资源文件夹中获取信任存储路径,但结果是一样的。ClassLoader ClassLoader=getClass().getClassLoader();File File=新文件(classLoader.getResource(“wso2carbon.jks”).getFile();setProperty(“javax.net.ssl.trustStore”,file.getAbsolutePath());不,我将路径设置为绝对,以尝试使用它。现在的问题是相对路径。请检查我的第二次更新。它现在使用相对路径:-D工作
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);
}