配置 WSO2 API 管理器自定义身份验证器和声明

Posted

技术标签:

【中文标题】配置 WSO2 API 管理器自定义身份验证器和声明【英文标题】:configuring WSO2 API manager custom authenticator and claims 【发布时间】:2015-07-21 15:38:17 【问题描述】:

我无法通过使用 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 中找到的默认 wso2 声明中添加了 http://wso2.org/claims/myCustomClaim

检查在 APIM_HOME/repository/database/WSO2CARBON_DB 和 APIM_HOME/repository/database/WSO2AM_DB 找到的两个 h2 数据库我无法找到“some_value”得到持久化(即使我只是 grep APIM_HOME “some_value”的 目录。

是否需要一些额外的配置才能完成这项工作?

【问题讨论】:

【参考方案1】:

不确定是不是这个原因,但我发现以下关于索赔的信息: https://wso2.org/jira/browse/IDENTITY-3016

“这在以前是不可能的,因为我们需要从登录用户那里知道租户域。但是从 IS 5.0 开始,这是可能的,因为我们将租户域作为 URL 的一部分发送”。

可能 AM 1.9 落后于 IS 5.0?

【讨论】:

我不认为是这样:进行身份验证/api调用时不会引发异常

以上是关于配置 WSO2 API 管理器自定义身份验证器和声明的主要内容,如果未能解决你的问题,请参考以下文章

WSO2 Api 管理器与身份服务器

如何执行WSO2用户身份验证

WSO2 APIM 的自定义身份验证

WSO2IS/APIM:如何在自定义身份验证器中分配用户角色

WSO2 API 管理器和身份服务器集成

使用 WSO2-AM 处理 JWT