我无法使用 WSO2 API 管理器 1.9.0 通过自定义身份 validator 保留自定义声明。对于上下文,我一直在尝试模拟 custom twitter authenticator并使用 JWT 将声明传递到我们的后端.
validator 如下所示:
@Override
protected void processAuthenticationResponse(HttpServletRequest request, HttpServletResponse response, AuthenticationContext context) {
String username = (String) request.getAttribute("userName");
//authenticate
//try to persist claims
context.setSubject(username);
Map<ClaimMapping, String> claims = new HashMap<ClaimMapping, String>();
claims.put(ClaimMapping.build("http://wso2.org/claims/myCustomClaim",
"http://wso2.org/claims/myCustomClaim", null, false), "some_value");
context.setSubjectAttributes(claims);
}
我还将 http://wso2.org/claims/myCustomClaim
添加到 http://wso2.org/claims
中找到的默认 wso2 声明
检查在 {APIM_HOME}/repository/database/WSO2CARBON_DB 和 {APIM_HOME}/repository/database/WSO2AM_DB 中找到的两个 h2 数据库,我无法找到持久保存的“some_value”(即使我只是 grep {APIM_HOME} 目录中的“some_value”。
是否需要一些额外的配置才能使其工作?
最佳答案
不确定这是否是原因,但我发现了以下有关声明的内容: https://wso2.org/jira/browse/IDENTITY-3016
“这在以前是不可能的,因为我们需要从登录用户那里了解租户域。但是从 IS 5.0 开始,这是可能的,因为我们将租户域作为 URL 的一部分发送”。
AM 1.9 可能落后于 IS 5.0 吗?
关于java - 配置 WSO2 API 管理器自定义身份 validator 和声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31543620/