通过 SAML 2.0 和 ADFS 验证 Vue 2 SPA

问题描述 投票:0回答:2

过去几周我做了相当多的研究,但没有找到完全适合我的问题的情况,所以我希望我可以向社区求助。我的场景的高级视图是这样的:

我有一个使用 .NET Core Api 的 Vue 2 SPA,后端带有 MS SQL Server。我需要在 Server 2019 上通过 ADFS 5.0 添加 SAML SSO(我们的 ADFS 由单独的团队控制,我根本无法访问 ADFS 服务器)。

我确实有来自 ADFS 团队的 xml 元数据,因此我知道 IDP 实体 ID、签名证书等。如果可能的话,我更愿意在 JS 端处理身份验证,其想法是我的 SPA 会将它们路由到 SSO登录,以便我们可以使用用户名/密码或 PIV 令牌,然后将我的用户路由回我的应用程序。

老实说我不知道从哪里开始。我发现的类似问题与我们需要做的不相符。我很乐意尽可能提供尽可能多的详细信息。我希望有效地学到以下内容:

  1. 从这里开始,在此位置创建此配置
  2. 设置重新路由
  3. 在 adfs 中进行设置
  4. 读取 adfs 的响应并建立用户访问级别
  5. 用户可以根据自己的权限访问我的应用程序。

提前谢谢您,

德鲁

编辑

我忘了提及的更多信息。我的 Vue SPA 托管在与我们的 ADFS 服务器不同的域中的远程 Web 服务器上

.net-core vuejs2 saml-2.0 adfs
2个回答
1
投票

SAML 不适合 SPA。原因之一是来自 ADFS 的 SAML 断言是使用客户端代码无法读取的 POST 请求发送的。另一个是SAML基于需要存储在应用程序端的秘密。这无法在客户端代码中安全地完成。

有不同的方法可以解决这个问题。许多人建议只使用 OpenID Connect 和 Oauth。但正如您所说,您需要使用 SAML。

我喜欢的一个解决方案是使用 ID 代理在 SPA 使用的 OpenID 连接和 ADFS IdP 使用的 SAML 之间进行转换。通过这种方式,您还可以获得使用标准协议进行身份验证的 SPA。

Keycloak 是一个很好的免费替代品,可用作身份代理。

不久前,我写了一篇关于如何使用 ADFS、Keycloak 和 React SPA 进行设置的博客文章。 Vagrant 和 virtual box 中还有一个自动化演示环境,您可以使用它来测试该 Vue 解决方案。

虽然这不是直接基于 Vue,但我认为让它工作应该不会太难,因为它是基于标准的。例如使用

这篇文章


0
投票
因此,对于任何在类似情况下偶然发现这篇文章的人来说,答案是我们需要创建一个 .NET Web 应用程序来利用 WS Federation 来满足我们的身份验证需求。事实证明这篇文章非常有帮助:

https://learn.microsoft.com/en-us/aspnet/core/security/authentication/ws-federation?view=aspnetcore-6.0

© www.soinside.com 2019 - 2024. All rights reserved.