过去几周我做了相当多的研究,但没有找到完全适合我的问题的情况,所以我希望我可以向社区求助。我的场景的高级视图是这样的:
我有一个使用 .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 令牌,然后将我的用户路由回我的应用程序。
老实说我不知道从哪里开始。我发现的类似问题与我们需要做的不相符。我很乐意尽可能提供尽可能多的详细信息。我希望有效地学到以下内容:
提前谢谢您,
德鲁
编辑
我忘了提及的更多信息。我的 Vue SPA 托管在与我们的 ADFS 服务器不同的域中的远程 Web 服务器上
SAML 不适合 SPA。原因之一是来自 ADFS 的 SAML 断言是使用客户端代码无法读取的 POST 请求发送的。另一个是SAML基于需要存储在应用程序端的秘密。这无法在客户端代码中安全地完成。
有不同的方法可以解决这个问题。许多人建议只使用 OpenID Connect 和 Oauth。但正如您所说,您需要使用 SAML。
我喜欢的一个解决方案是使用 ID 代理在 SPA 使用的 OpenID 连接和 ADFS IdP 使用的 SAML 之间进行转换。通过这种方式,您还可以获得使用标准协议进行身份验证的 SPA。
Keycloak 是一个很好的免费替代品,可用作身份代理。
虽然这不是直接基于 Vue,但我认为让它工作应该不会太难,因为它是基于标准的。例如使用