我无法使用WSO2 API管理器1.9.0通过自定义身份验证器保留自定义声明。对于上下文,我一直试图模仿custom twitter authenticator并使用JWT将声明传递给我们的后端。
验证者看起来像这样:
@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
检查数据库在{APIM_HOME} / repository / database / WSO2CARBON_DB和{APIM_HOME} / repository / database / WSO2AM_DB中找到的两个h2数据库我无法找到&#34; some_value&#34;得到持久化(即使我只是为#34; some_value&#34; grep {APIM_HOME}目录。
是否需要一些额外的配置才能使其正常工作?
答案 0 :(得分:0)
不确定是不是原因,但我发现以下有关索赔:
heredoc
“以前这是不可能的,因为我们需要从登录用户那里知道租户域。但是从IS 5.0开始,这是可能的,因为我们将租户域作为URL的一部分发送”。
可能是AM 1.9落后于IS 5.0?