【问题标题】:WSO2 Identity Server - How to Change User Password As a Tenant AdminWSO2 身份服务器 - 如何以租户管理员的身份更改用户密码
【发布时间】:2023-03-15 04:41:02
【问题描述】:

我想以租户管理员的身份更改特定用户的密码。我看到UserIdentityManagementAdminService.wsdl 有一个名为changeUserPassword 的函数,但它只接受old passwordnew password,而不接受username

我知道resetUserPassword,但我不想使用它,因为我只想在正确提供oldPassword 时更改密码。

【问题讨论】:

  • 所以你的意思是管理员需要通过提供用户的用户名和旧密码来更改用户的密码?这是一个有效的用例吗?您希望管理员用户知道用户的密码吗?
  • 是的,这可能不是正确的方法。我将所有请求作为租户管理员而不是用户发送到 WSO2,因为我不想存储/传递用户的凭据。您可以提出更好的解决方案吗?

标签: wso2 wso2is


【解决方案1】:

在我看来,管理员用户通过发送用户名和旧密码来更新用户密码不是一个有效的用例。我们不能指望管理员用户知道其他用户的密码。

您可以使用resetUserPassword方法,或者您需要以用户自己的身份更改密码,您需要使用用户在登录时获取的cookie来使用changeUserPassword

【讨论】:

  • 您好,感谢您的建议。我们没有使用基本身份验证来登录 WSO2。我们正在使用 SAML,因此我们无法从 WSO2 获取 cookie。有没有办法绕过这个?
  • 您可以使用 SAML2SSOAuthenticationService 通过发送 SAML 响应来获取 cookie。
【解决方案2】:

可以使用UserAdmin服务changePasswordByUser作为用户更改密码。在 Identity Server 5.0.7 中,Web 服务接受 username 作为参数。

【讨论】:

    【解决方案3】:

    如果您使用 UserAdmin 服务的 [1] changePasswordByUser 方法,仍然需要提供用户的旧密码。这是 SOAP 请求。

    <Envelope>
       <Header/>
       <Body>
          <changePasswordByUser>
             <userName>?</userName>
             <oldPassword>?</oldPassword>
             <newPassword>?</newPassword>
          </changePasswordByUser>
       </Body>
    </Envelope>
    

    [1]https://localhost:9443/services/UserAdmin?wsdl

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      相关资源
      最近更新 更多