UserProfileMgtService 无法在 WSO2 IS 5.2.0 中找到用户
UserProfileMgtService is not able to find user in WSO2 IS 5.2.0
我最近将我的环境从 WSO2 IS 5.0.0 更新到 WSO2 IS 5.2.0。我的环境由 2 台正在创建集群的机器组成(使用 WKA 成员资格方案和启用粘性 session 的负载均衡器(AWS ELB))。我正在使用 MySQL(不是默认的 H2 数据库)。部署IS的机器是Windows Server 2012 R2(EC2 AWS机器)。我也在使用所谓的 WSO2 IS 管理服务。
如标题中所述,我正在使用 UserProfileMgtService
(https://url:port/services/UserProfileMgtService?wsdl).
结合它我使用 OAuth2TokenValidationService
(https://url:port/services/OAuth2TokenValidationService?wsdl)。
如果我将有效的访问令牌传递给 OAuth2TokenValidationService,我可以使用 OAuth2TokenValidationService 的验证方法填写数据 OAuth2TokenValidationResponseDTO object。结果,我能够提取 authorizedUser 并将其传递给 UserProfileMgtService 的 getUserProfile 方法。我使用的是标准 carbon.super 域,我使用电子邮件作为用户名。例如,我将以下两个参数传递给 getUserProfile:
"admin@admin.com@carbon.super" 作为用户名
"default" 作为个人资料名称
结果我收到以下消息:
UserNotFound:用户 admin@admin.com@carbon.super不存在于:PRIMARY
如果我从 authorizedUser 中删除“@carbon.super”,一切都很好,我可以获取用户个人资料信息。这对我来说非常重要,因为我正在使用 IS 的多租户,并且在某些情况下我可能有以下用户:
admin@admin.com@test.net
admin@admin.com@test2.net
我注意到此服务在 WSO2 IS 5.0.0 中无法正常工作。升级后我开始遇到这个问题。
这是期望的行为吗,是由于 IS 5.2.0 中 API 的更改而引入的吗?如果是这样,还有另一种方法可以使用 "username"+"tenant-domain" 获取用户配置文件(在传递有效访问令牌时由 OAuth2TokenValidationService 作为授权用户检索)。
这是否可能是由于配置错误引起的?如果是这样,需要更新的文件是什么?具体应该修改什么?
有没有可以检索 WSO2 IS 5.2.0 管理服务的更多信息的地方?
提前致谢。
Identity Server 中的 UserProfileMgtService 是一项管理服务。在 WSO2 管理服务中,租户域由经过身份验证的用户标识,不应通过用户名传递。
用户名应为租户免费用户名。
因此,您可以从用户名中删除 carbon.super 部分,然后它将起作用。
在租户设置中,您需要通过租户用户(Ex admin@admin.com@test.net)进行身份验证才能访问这些 API。所以,就像在超级租户中一样,你可以使用租户免费用户名,然后就可以了。
例如,如果您想要获取租户域 test.net 中用户 testuser@admin.com 的用户个人资料,您的请求应该如下图所示。
谢谢
伊苏拉。
我最近将我的环境从 WSO2 IS 5.0.0 更新到 WSO2 IS 5.2.0。我的环境由 2 台正在创建集群的机器组成(使用 WKA 成员资格方案和启用粘性 session 的负载均衡器(AWS ELB))。我正在使用 MySQL(不是默认的 H2 数据库)。部署IS的机器是Windows Server 2012 R2(EC2 AWS机器)。我也在使用所谓的 WSO2 IS 管理服务。
如标题中所述,我正在使用 UserProfileMgtService
(https://url:port/services/UserProfileMgtService?wsdl).
结合它我使用 OAuth2TokenValidationService
(https://url:port/services/OAuth2TokenValidationService?wsdl)。
如果我将有效的访问令牌传递给 OAuth2TokenValidationService,我可以使用 OAuth2TokenValidationService 的验证方法填写数据 OAuth2TokenValidationResponseDTO object。结果,我能够提取 authorizedUser 并将其传递给 UserProfileMgtService 的 getUserProfile 方法。我使用的是标准 carbon.super 域,我使用电子邮件作为用户名。例如,我将以下两个参数传递给 getUserProfile:
"admin@admin.com@carbon.super" 作为用户名
"default" 作为个人资料名称
结果我收到以下消息:
UserNotFound:用户 admin@admin.com@carbon.super不存在于:PRIMARY
如果我从 authorizedUser 中删除“@carbon.super”,一切都很好,我可以获取用户个人资料信息。这对我来说非常重要,因为我正在使用 IS 的多租户,并且在某些情况下我可能有以下用户:
admin@admin.com@test.net
admin@admin.com@test2.net
我注意到此服务在 WSO2 IS 5.0.0 中无法正常工作。升级后我开始遇到这个问题。
这是期望的行为吗,是由于 IS 5.2.0 中 API 的更改而引入的吗?如果是这样,还有另一种方法可以使用 "username"+"tenant-domain" 获取用户配置文件(在传递有效访问令牌时由 OAuth2TokenValidationService 作为授权用户检索)。
这是否可能是由于配置错误引起的?如果是这样,需要更新的文件是什么?具体应该修改什么?
有没有可以检索 WSO2 IS 5.2.0 管理服务的更多信息的地方?
提前致谢。
Identity Server 中的 UserProfileMgtService 是一项管理服务。在 WSO2 管理服务中,租户域由经过身份验证的用户标识,不应通过用户名传递。
用户名应为租户免费用户名。
因此,您可以从用户名中删除 carbon.super 部分,然后它将起作用。
在租户设置中,您需要通过租户用户(Ex admin@admin.com@test.net)进行身份验证才能访问这些 API。所以,就像在超级租户中一样,你可以使用租户免费用户名,然后就可以了。
例如,如果您想要获取租户域 test.net 中用户 testuser@admin.com 的用户个人资料,您的请求应该如下图所示。
谢谢
伊苏拉。