如何在 ASP.NET MVC 中创建单点登录身份提供程序服务器?

How to create a single-sign-on Identity provider server in ASP.NET MVC?

我对 SSO 和 SAML 很陌生。我们有一个 ASP.NET MVC 服务器。我们需要让它充当 SSO 身份提供者,接受来自其他 服务提供者SAML 请求 ] 我们的网站,让用户使用电子邮件、密码和 2FA 登录,然后使用 SAML response/assertion.

重定向回服务提供商网站

两个服务提供商网站是使用 DNN CMS 创建的,因此我们的 SSO 身份提供商 的工作方式必须是行业标准 ,以便 DNN CMS 可以使用它。

问题:

  1. 如何在服务提供商端创建SAML请求?我可以使用什么工具来创建 XML?
  2. 如何加密 SAML 请求?对称还是不对称?使用什么加密密钥?要不要签名?
  3. 如何将 SAML 请求 发送到 身份提供商? GET 还是 POST?作为查询字符串?查询字符串名称是什么?
  4. 如何解密 身份提供商 端的 SAML 请求?如何验证签名是否已签名?
  5. 如何在 身份提供商 端创建 SAML response/assertion
  6. 如何对响应进行加密和签名?
  7. 如何将 SAML 响应 发送回 服务提供商? GET 还是 POST?作为查询字符串?什么查询字符串名称?
  8. 如何在服务提供商端解密和验证SAML响应
  9. 如何从 SAML 响应中提取信息?

我强烈建议使用商业产品或开源库。尝试自己实施并确保安全性正确是一项艰巨的任务。

您的大部分问题都可以通过查看 SAML v2.0 规范文档得到解答。如果您确实决定尝试自己实施,这也会让您了解所涉及的工作。

我找到了答案。

本文档回答了我列出的所有问题,以下供应商 www.componentspace.com 是一个 well-known 和知名的 SDK,可用于创建 IdP 和 SP。