WSO2 Identity Server AuthenticationAdmin API身份validation失败

我正在按照这里提到的教程: https : //docs.wso2.com/display/IS500/Managing+Users+and+Roles+with+APIs

并使用页面上提供的示例代码: http : //cache.facilelogin.com/org.wso2.identity.um.sample.zip

我已将所需的JAR添加到eclipse项目中。 该项目成功构建,没有任何问题。 但是,当我运行该项目时,我收到以下错误:

log4j:WARN找不到logger(org.apache.axiom.om.util.StAXUtils)的appender。 log4j:WARN请正确初始化log4j系统。 org.apache.axis2.AxisFault:身份validation失败:在org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation)上传递了无效的远程地址 – org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:508)中的myapp .java:375)org.apache.axis.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)位于org.apache.axis上的org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)。 client.OperationClient.execute(OperationClient.java:165)org.wso2.carbon.authenticator.proxy.AuthenticationAdminStub.login(AuthenticationAdminStub.java:311)at org.wso2.identity.um.sample.IdentityServerClient.main(IdentityServerClient。 Java的:67)

这是代码:

package org.wso2.identity.um.sample; import java.util.HashMap; import java.util.Map; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.ConfigurationContextFactory; import org.apache.axis2.transport.http.HTTPConstants; import org.wso2.carbon.authenticator.proxy.AuthenticationAdminStub; import org.wso2.carbon.um.ws.api.WSRealmBuilder; import org.wso2.carbon.user.core.UserRealm; import org.wso2.carbon.user.core.UserStoreManager; public class IdentityServerClient { // ONE TIME TASKS WE NEED TO DO BEFORE EXECUTING THIS PROGRAM. // TASK - 1 , CREATE a LoginOnly role from IS UI Console // =========================================================== // 0. Login as admin/admin // 1. Go to Users and Roles // 2. Click on Roles // 3. Add New Role // 4. Role Name : loginOnly [please use this name, since it's referred within the code below] // 5. Click Next // 6. Select only the 'Login' permission // 7. Click Next // 8. No need to select any users // 9. Click Finish // TASK - 2 , CREATE a custom claim IS UI Console // =========================================================== // 0. Login as admin/admin // 1. Go to Claim Management // 2. Click on http://wso2.org/claims // 3. Click on 'Add New Claim Mapping' // 3.1 Display Name : Business Phone // 3.2 Description : Business Phone // 3.3 Claim Uri : http://wso2.org/claims/businessphone // 3.4 Mapped Attribute : http://wso2.org/claims/businessphone // 3.5 Support by default : Checked // 3.6 The rest can be kept blank private final static String SERVER_URL = "https://localhost:9443/services/"; private final static String APP_ID = "myapp"; /** * @param args */ public static void main(String[] args) { AuthenticationAdminStub authstub = null; ConfigurationContext configContext = null; String cookie = null; String newUser = "prabath2"; System.setProperty("javax.net.ssl.trustStore", "wso2carbon.jks"); System.setProperty("javax.net.ssl.trustStorePassword", "wso2carbon"); try { configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem( "repo", "repo/conf/client.axis2.xml"); authstub = new AuthenticationAdminStub(configContext, SERVER_URL + "AuthenticationAdmin"); // Authenticates as a user having rights to add users. if (authstub.login("admin", "admin", APP_ID)) { cookie = (String) authstub._getServiceClient().getServiceContext().getProperty( HTTPConstants.COOKIE_STRING); UserRealm realm = WSRealmBuilder.createWSRealm(SERVER_URL, cookie, configContext); UserStoreManager storeManager = realm.getUserStoreManager(); // Add a new role - with no users - with APP_ID as the role name if (!storeManager.isExistingRole(APP_ID)) { storeManager.addRole(APP_ID, null, null); System.out.println("The role added successfully to the system"); } else { System.out.println("The role trying to add - alraedy there in the system"); } if (!storeManager.isExistingUser(newUser)) { // Let's the this user to APP_ID role we just created. // First let's create claims for users. // If you are using a claim that does not exist in default IS instance, Map claims = new HashMap(); // TASK-1 and TASK-2 should be completed by now. // Here I am using an already existing claim claims.put("http://wso2.org/claims/businessphone", "0112842302"); // Here we pass null for the profile - so it will use the default profile. storeManager.addUser(newUser, "password", new String[] { APP_ID, "loginOnly" }, claims, null); System.out.println("The use added successfully to the system"); } else { System.out.println("The user trying to add - alraedy there in the system"); } // Now let's see the given user [newUser] belongs to the role APP_ID. String[] userRoles = storeManager.getRoleListOfUser(newUser); boolean found = false; if (userRoles != null) { for (int i = 0; i < userRoles.length; i++) { if (APP_ID.equals(userRoles[i])) { found = true; System.out.println("The user is in the required role"); break; } } } if (!found){ System.out.println("The user is NOT in the required role"); } } } catch (Exception e) { e.printStackTrace(); } } } 

我已经设定了

  

/repository/conf/carbon.xml文件中的元素为false

以下Web服务URL在Web浏览器中打开,没有任何问题:

 https://localhost:9443/services/AuthenticationAdmin?wsdl 

请建议。

尝试将客户端运行的IP地址或主机名作为login()方法调用的第3个参数传递

例如

 authstub.login("admin", "admin", "localhost")