WSO2 IS / AGW 更新挑战问题仅更新 "admin" 帐户
WSO2 IS / AGW update challenge questions only updating "admin" account
我们正在使用 WSO2 IS 5.0.0 / API Manager 1.9.1。我们创建了一个 Rest API 来处理 UserIdentityManagementAdminService 中对内部 WSO2 soap 调用 setChallengeQuestionsOfUser 的调用,但是当我们使用特定的用户名调用此方法时,该方法将始终更新管理员帐户。
这是我们用来调用 soap 服务的代码
<resource methods="POST" url-mapping="/updatechallengequestionofuser" faultSequence="fault"> <!-- Only Updating admin -->
<inSequence>
<class name="org.wso2.carbon.apimgt.gateway.mediators.TokenPasser"/>
<property name="USERNAME" expression="//userName" scope="default" type="STRING"/>
<property name="USERANSWER1" expression="//userAnswer1" scope="default" type="STRING"/>
<property name="QUESTIONSETID1" expression="//questionSetId1" scope="default" type="STRING"/>
<property name="QUESTIONTEXT1" expression="//questionText1" scope="default" type="STRING"/>
<property name="USERANSWER2" expression="//userAnswer2" scope="default" type="STRING"/>
<property name="QUESTIONSETID2" expression="//questionSetId2" scope="default" type="STRING"/>
<property name="QUESTIONTEXT2" expression="//questionText2" scope="default" type="STRING"/>
<property name="USERANSWER3" expression="//userAnswer3" scope="default" type="STRING"/>
<property name="QUESTIONSETID3" expression="//questionSetId3" scope="default" type="STRING"/>
<property name="QUESTIONTEXT3" expression="//questionText3" scope="default" type="STRING"/>
<payloadFactory media-type="xml">
<format>
<ser:setChallengeQuestionsOfUser xmlns:ser="http://services.mgt.identity.carbon.wso2.org" xmlns:xsd="http://dto.mgt.identity.carbon.wso2.org/xsd">
<ser:userName></ser:userName>
<ser:challengesDTOs>
<xsd:answer></xsd:answer>
<xsd:id></xsd:id>
<xsd:question></xsd:question>
</ser:challengesDTOs>
<ser:challengesDTOs>
<xsd:answer></xsd:answer>
<xsd:id></xsd:id>
<xsd:question></xsd:question>
</ser:challengesDTOs>
<ser:challengesDTOs>
<xsd:answer></xsd:answer>
<xsd:id></xsd:id>
<xsd:question></xsd:question>
</ser:challengesDTOs>
</ser:setChallengeQuestionsOfUser>
</format>
<args>
<arg evaluator="xml" expression="get-property('USERNAME')"/>
<arg evaluator="xml" expression="get-property('USERANSWER1')"/>
<arg evaluator="xml" expression="get-property('QUESTIONSETID1')"/>
<arg evaluator="xml" expression="get-property('QUESTIONTEXT1')"/>
<arg evaluator="xml" expression="get-property('USERANSWER2')"/>
<arg evaluator="xml" expression="get-property('QUESTIONSETID2')"/>
<arg evaluator="xml" expression="get-property('QUESTIONTEXT2')"/>
<arg evaluator="xml" expression="get-property('USERANSWER3')"/>
<arg evaluator="xml" expression="get-property('QUESTIONSETID3')"/>
<arg evaluator="xml" expression="get-property('QUESTIONTEXT3')"/>
</args>
</payloadFactory>
<header name="Action" scope="default" value="urn:setChallengeQuestionsOfUser"/>
<property name="Authorization" expression="fn:concat('Basic ', '<base64String>')" scope="transport"/>
<property name="Accept" expression="text/xml" scope="transport"/>
<property name="ContentType" value="text/xml" scope="axis2"></property>
<property name="messageType" value="text/xml" scope="axis2"></property>
<send>
<endpoint name="UserManagement_APIproductionEndpoint_4">
<address uri="https://wso2dev.comp.org/services/UserIdentityManagementAdminService" format="soap11">
</address>
</endpoint>
</send>
</inSequence>
<outSequence>
<class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/>
<property name="ContentType" value="application/json" scope="axis2"></property>
<property name="messageType" value="application/json" scope="axis2"></property>
<send/>
</outSequence>
</resource>
wso2carbon.log 文件中没有错误消息,但我们看到只有名为 "admin" 的帐户正在更新。我们可以清除 challengeQuestion 字段和 运行 Rest 使用有效的用户名再次调用,并看到它再次填写管理员帐户的问题。
这看起来是底层 soap 调用 setChallengeQuestionsOfUser 的问题。有没有人找到一种方法来更新特定用户的挑战问题?
如果我们要更改user1 的挑战问题,那么user1 应该经过身份验证才能调用此方法。
但是在 IS 5.1.0 alpha2 中,拥有“/permission/admin/configure/security”权限的用户也可以更改其他用户的挑战问题。
伊苏拉
我们正在使用 WSO2 IS 5.0.0 / API Manager 1.9.1。我们创建了一个 Rest API 来处理 UserIdentityManagementAdminService 中对内部 WSO2 soap 调用 setChallengeQuestionsOfUser 的调用,但是当我们使用特定的用户名调用此方法时,该方法将始终更新管理员帐户。
这是我们用来调用 soap 服务的代码
<resource methods="POST" url-mapping="/updatechallengequestionofuser" faultSequence="fault"> <!-- Only Updating admin -->
<inSequence>
<class name="org.wso2.carbon.apimgt.gateway.mediators.TokenPasser"/>
<property name="USERNAME" expression="//userName" scope="default" type="STRING"/>
<property name="USERANSWER1" expression="//userAnswer1" scope="default" type="STRING"/>
<property name="QUESTIONSETID1" expression="//questionSetId1" scope="default" type="STRING"/>
<property name="QUESTIONTEXT1" expression="//questionText1" scope="default" type="STRING"/>
<property name="USERANSWER2" expression="//userAnswer2" scope="default" type="STRING"/>
<property name="QUESTIONSETID2" expression="//questionSetId2" scope="default" type="STRING"/>
<property name="QUESTIONTEXT2" expression="//questionText2" scope="default" type="STRING"/>
<property name="USERANSWER3" expression="//userAnswer3" scope="default" type="STRING"/>
<property name="QUESTIONSETID3" expression="//questionSetId3" scope="default" type="STRING"/>
<property name="QUESTIONTEXT3" expression="//questionText3" scope="default" type="STRING"/>
<payloadFactory media-type="xml">
<format>
<ser:setChallengeQuestionsOfUser xmlns:ser="http://services.mgt.identity.carbon.wso2.org" xmlns:xsd="http://dto.mgt.identity.carbon.wso2.org/xsd">
<ser:userName></ser:userName>
<ser:challengesDTOs>
<xsd:answer></xsd:answer>
<xsd:id></xsd:id>
<xsd:question></xsd:question>
</ser:challengesDTOs>
<ser:challengesDTOs>
<xsd:answer></xsd:answer>
<xsd:id></xsd:id>
<xsd:question></xsd:question>
</ser:challengesDTOs>
<ser:challengesDTOs>
<xsd:answer></xsd:answer>
<xsd:id></xsd:id>
<xsd:question></xsd:question>
</ser:challengesDTOs>
</ser:setChallengeQuestionsOfUser>
</format>
<args>
<arg evaluator="xml" expression="get-property('USERNAME')"/>
<arg evaluator="xml" expression="get-property('USERANSWER1')"/>
<arg evaluator="xml" expression="get-property('QUESTIONSETID1')"/>
<arg evaluator="xml" expression="get-property('QUESTIONTEXT1')"/>
<arg evaluator="xml" expression="get-property('USERANSWER2')"/>
<arg evaluator="xml" expression="get-property('QUESTIONSETID2')"/>
<arg evaluator="xml" expression="get-property('QUESTIONTEXT2')"/>
<arg evaluator="xml" expression="get-property('USERANSWER3')"/>
<arg evaluator="xml" expression="get-property('QUESTIONSETID3')"/>
<arg evaluator="xml" expression="get-property('QUESTIONTEXT3')"/>
</args>
</payloadFactory>
<header name="Action" scope="default" value="urn:setChallengeQuestionsOfUser"/>
<property name="Authorization" expression="fn:concat('Basic ', '<base64String>')" scope="transport"/>
<property name="Accept" expression="text/xml" scope="transport"/>
<property name="ContentType" value="text/xml" scope="axis2"></property>
<property name="messageType" value="text/xml" scope="axis2"></property>
<send>
<endpoint name="UserManagement_APIproductionEndpoint_4">
<address uri="https://wso2dev.comp.org/services/UserIdentityManagementAdminService" format="soap11">
</address>
</endpoint>
</send>
</inSequence>
<outSequence>
<class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/>
<property name="ContentType" value="application/json" scope="axis2"></property>
<property name="messageType" value="application/json" scope="axis2"></property>
<send/>
</outSequence>
</resource>
wso2carbon.log 文件中没有错误消息,但我们看到只有名为 "admin" 的帐户正在更新。我们可以清除 challengeQuestion 字段和 运行 Rest 使用有效的用户名再次调用,并看到它再次填写管理员帐户的问题。
这看起来是底层 soap 调用 setChallengeQuestionsOfUser 的问题。有没有人找到一种方法来更新特定用户的挑战问题?
如果我们要更改user1 的挑战问题,那么user1 应该经过身份验证才能调用此方法。
但是在 IS 5.1.0 alpha2 中,拥有“/permission/admin/configure/security”权限的用户也可以更改其他用户的挑战问题。
伊苏拉