WSO2身份服务器AuthenticationAdmin API认证失败 [英] WSO2 Identity Server AuthenticationAdmin API Authentication Failed
问题描述
我下面的教程这里提到:
https://docs.wso2.com/display/IS500 / +管理+用户与+的API
I am following tutorial mentioned here: https://docs.wso2.com/display/IS500/Managing+Users+and+Roles+with+APIs
和使用提供的页面上的示例code:
http://cache.facilelogin.com/org.wso2.identity.um .sample.zip
And using the sample code provided on the page: http://cache.facilelogin.com/org.wso2.identity.um.sample.zip
我添加需要的jar到Eclipse项目。
该项目成功生成没有任何问题。
然而,当我运行该项目,我得到以下错误:
I have added the required JARs to the eclipse project. The project builds successfully without any issues. However, when i run the project, i get following errors:
的log4j:警告没有附加目的地可以发现记录器(org.apache.axiom.om.util.StAXUtils)。
log4j的:WARN请正确初始化log4j的系统。
org.apache.axis2.AxisFault:验证失败:无效的远程地址通过 - 的myapp
在org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:508)
在org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
在org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
在org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
在org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
在org.wso2.carbon.authenticator.proxy.AuthenticationAdminStub.login(AuthenticationAdminStub.java:311)
在org.wso2.identity.um.sample.IdentityServerClient.main(IdentityServerClient.java:67)
log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAXUtils). log4j:WARN Please initialize the log4j system properly. org.apache.axis2.AxisFault: Authentication Failed : Invalid remote address passed - myapp at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:508) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at org.wso2.carbon.authenticator.proxy.AuthenticationAdminStub.login(AuthenticationAdminStub.java:311) at org.wso2.identity.um.sample.IdentityServerClient.main(IdentityServerClient.java:67)
这是code:
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<String, String> claims = new HashMap<String, String>();
// 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();
}
}
}
我已经设置了
<HideAdminServiceWSDLs>
元素为假在/repository/conf/carbon.xml文件。
element to false in /repository/conf/carbon.xml file.
下面的Web服务的URL在Web浏览器中打开没有任何问题:
The following web service URL opens in the web browser without any issues:
https://localhost:9443/services/AuthenticationAdmin?wsdl
请建议。
推荐答案
尝试通过在其上运行的客户端作为登录()方法调用的
Try passing your IP address or host name on which the client runs as the 3rd parameter of the login() method call
例如
authstub.login("admin", "admin", "localhost")
这篇关于WSO2身份服务器AuthenticationAdmin API认证失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!