WSO2AM - SAML - 提供的授权无效



我正在将WSO2AM与我们内部专有的身份提供程序(IDP)集成。我正在关注 wso2 文档"使用 OAuth2 交换 SAML2 持有者令牌 - SAML 扩展授权类型"。我在 API 管理器的管理控制台中添加了身份提供程序,并添加了 IDP 的公共证书 .pem。接下来,我将 wso2am 添加为我们 IDP 上的服务提供商。我已经从 idp 生成了一个 saml 令牌,现在我准备从 API 管理器将其交换为 OAuth 令牌。我收到以下错误:

{
  "error": "invalid_grant",
  "error_description": "Provided Authorization Grant is invalid"
}

以下是我对 API 调用的参数:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: Basic xxxxxx" -H "Cache-Control: no-cache" -H "Postman-Token: 83896bce-7243-7580-a616-19232c372ff7" -d 'grant_type=urn:ietf:params:oauth:grant-type:saml2-bearer&assertion=xxxxxx&scope=PRODUCTION' "https://<wso2am-host>:9443/oauth2/token"

其中断言是 base64 编码的 SAML 令牌,授权是 Base64 编码的使用者密钥:使用者机密。

请告知问题所在。谢谢。

由于受众限制不匹配,我遇到了类似的问题。saml 响应中的受众元素在创建 SP 时具有 IP 地址和配置,该 SP 具有域名。但是AM会进行字符串匹配以检查观众,因此失败了。您可以启用调试并进一步解决问题。

在/repository/conf/log4j.prorperties 中添加以下行并启动服务器进行调试

log4j.logger.org.wso2.carbon.identity.oauth2=DEBUG

最新更新