WSO2联合IDP RefreshToken使用无效的用户名

时间:2019-08-07 15:51:38

标签: wso2 wso2is

社区。 我正在使用WSO2 IS 5.7.0将Angular应用程序与外部IDP集成在一起。 外部IDP使用SAML2配置,服务提供商“入站身份验证”使用Oauth / OpenID设置。 服务提供商使用联合身份验证与IDP通信。

IDP中的用户uid与声明用户id匹配,因此当我请求oauth令牌时,我获得了正确的范围(将本地用户与配置的角色匹配)以将该令牌与WSO2 AM一起使用。当我使用代码授予获得初始oauth令牌时,此方法运行良好。 如果我自检该令牌,则可以根据与本地用户XXXXXXXX关联的角色,验证该令牌属于用户名XXXXXXXX,并且作用域是在WSO2 AM上使用API​​的范围。

问题是,当到期后使用刷新令牌获取新的访问令牌时。新的访问令牌具有相同的作用域,但是我不能使用与第一个令牌相同的API。我在每次通话中都收到403禁止访问,AM日志显示: WARN-由于无效的凭据,APIAuthenticationHandler API身份验证失败 (第一次警告仅出现一次) WARN-APIAuthenticationHandler API身份验证失败,原因是访问令牌不允许您访问所请求的资源 (此WARN出现在后续通话中)

如果我对接收到的令牌进行内省,则可以看到与原始访问令牌相同的作用域,但是用户名不同: FEDERATED/XXXXXXXX@carbon.super。

我认为令牌信息上的用户名更改导致403错误。

如果我激活“本地和出站身份验证配置”上的“服务提供商”选项“在本地主题标识符中使用租户域”,则问题将更为严重。在这种情况下,每次我请求带有刷新令牌的新令牌时,租户都会在无限循环中附加到用户名上: XXXXXXXX @ carbon.super @ carbon.super @ carbon.super @ carbon.super 在得到的每个令牌上,内省会向我显示另一个@ carbon.super附加到实际令牌的用户名上。在这种情况下,FEDERATED /并不总是出现在用户名上。

我希望与refreshtoken关联的用户名等于第一个访问令牌上的用户名。

是否有解决此问题的配置,或者这是一个错误? WSO2 IS的新版本已解决? (对不起,我的英语)

谢谢!

1 个答案:

答案 0 :(得分:0)

报道了类似的问题[1],并已通过PR [2]解决。

[1] https://github.com/wso2/product-is/issues/4472

[2] https://github.com/wso2-extensions/identity-inbound-auth-oauth/pull/1022

如果您没有WSO2订阅,则升级到5.8.0将解决此问题。