繁体   English   中英

WSO2身份服务器身份验证管理员API身份验证失败

[英]WSO2 Identity Server AuthenticationAdmin API Authentication Failed

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

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

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

log4j:WARN找不到记录器的附加程序(org.apache.axiom.om.util.StAXUtils)。 log4j:WARN请正确初始化log4j系统。 org.apache.axis2.AxisFault:验证失败:传递了无效的远程地址-位于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.wso2.identity.um.sample.IdentityServerClient.main(IdentityServerClient.org)上的org.wso2.carbon.authenticator.proxy.AuthenticationAdminStub.login(AuthenticationAdminStub.java:311)上的client.OperationClient.execute(OperationClient.java:165)。 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<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文件中为false的元素。

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

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

请提出建议。

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

例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM