重定向到带有 SAML 响应的回调 url 时出现错误无法以角度发布

Posted

技术标签:

【中文标题】重定向到带有 SAML 响应的回调 url 时出现错误无法以角度发布【英文标题】:Getting error Cannot POST in angular when redirected to call back url with SAML response 【发布时间】:2021-08-24 18:10:16 【问题描述】:

我在我的 Angular 应用程序中使用 SAML 身份验证,该应用程序将托管在 AWS 上。我正在使用角度代码作为单独的项目,并且代码是在不同的项目中编写的。我在我的 webapi 中使用了 Itfoxtec saml 库。在我的项目中,我从角度调用 webapi,流程如下所示

最终用户访问网站 http://localhost:1010 为了测试,我调用了我的第一个 webapi,它返回给我的 IDP url 以重定向到 我的 Angular 应用程序,将最终用户路由到相应的 IDP url 和 IDP 服务器,然后将用户重定向到带有 SAML 响应的回调 URL。在我的情况下,我尝试将我的回调 URL 设置为 http://localhost:1010/Auth/AssertionComponenet ,这是角度组件 我的想法是调用另一个 webapi 来读取 SAML 响应并提供所有声明信息

但是当 IDP 服务器将用户重定向到回调 url 时我收到错误,这是 angular URL。 错误是:无法发布 /Auth/AssertionComponenet

这个问题有什么解决办法吗?我读了一些帖子,他们说 angular cant read post response,所以不知道下一步。

如果我将回调 URL 设置为我的 webapi URL,这是否有效,即使有效,我将如何在验证使用后返回 Angular 主页。

【问题讨论】:

【参考方案1】:

恐怕无法通过前端客户端 lige 传递 POST SAML 2.0 Authn 响应,例如角。响应需要直接返回到基于服务器的端点。

这篇文章可能会有所帮助: AssertionUrl for AngularJS Application

【讨论】:

感谢 Aders,我阅读了给定的帖子。所以你的意思是,我们应该将回调设置为 webapi 并阅读声明。在 webapi 本身中,选项 1:我们应该设置 cookie,然后重定向到 angular 页面,该页面将读取 cookie 以获取声明信息 选项 2:我们应该创建一个 JWT 令牌并重定向到将读取令牌和使用信息的 angular URL。我正在尝试使用 saml 实现 SSO,因此我需要最终用户信息,例如他们的员工 id、来自 IDP 通过索赔的直线经理。 是的,类似的。

以上是关于重定向到带有 SAML 响应的回调 url 时出现错误无法以角度发布的主要内容,如果未能解决你的问题,请参考以下文章

Django 渲染重定向到带有更改 url 的页面

OIDC 隐式流 - 重定向 uri 长度

带有 spotify 身份验证回调 url 的 Aspnet Core MVC 应用程序重定向到 127.0.0.1

重定向到其他页面时出现 iFrameResizer 问题

Spring SAML Okta - 如何在 IDP 启动的流程中重定向到自定义 URL

在 ELB 后面使用带有 Spring Boot 的 SAML 重定向到 http 而不是 https