使用SAML 2.0在C#中实现单点登录

时间:2017-01-11 10:30:34

标签: c# asp.net single-sign-on adfs

过去一周,我对SAML 2.0使用单点登录的主题进行了大量研究。我发现了很多好文章,我详细了解了SSO的过程,但是在使用.Net Framework 4.5的C#解决方案中实现它时遇到了问题。

让我描述一下我对这个过程的理解以及我想如何应用它:

  1. 用户访问我们的软件即服务提供商(SP)。我们根据客户的需求调整了不同的实例。

  2. 输入电子邮件地址后,应将其重定向到我们的电子邮件地址     身份提供者(IdP)。在这一点上,我相信我应该发送     用于检查用户是否尚未记录的身份验证令牌     在IdP上。如果用户是,我想要登录用户     到我们的系统。如果他不是,他会登录他们的IdP。

  3. 成功通过身份验证后,我们会将SAML响应令牌发回我们的网站网址。
  4. 当令牌到达我们的终点时,我们应该解密它,并且当验证成功时,授予用户访问该服务的权限。
  5. 到目前为止,我还没有在生成SAML请求的实际过程中找到任何有用的资源,也没有找到解密SAML代码中C#令牌的方法。

    对于测试,我们使用ADFS 2.0作为IdP,我们从中得到SAML响应。当我们处理响应时,我们希望将数据库中的信息与响应中的电子邮件进行比较,以便在让用户进入系统之前验证用户的详细信息。

    我能找到的例子已经过时或者没有给出详细解释。如果有人能够为我发光,可以提供一些实施例子或者我尚未设法找到的最新资源。

1 个答案:

答案 0 :(得分:1)

SAMl 2.0不是一个简单的协议,因为你发现自己推出它并不是一件容易的事。

使用SAML客户端侧堆栈。

请注意,微软没有正式版。

请参阅SAML : SAML connectivity / toolkit了解一些想法。

这将为您完成所有繁重的工作和管道工作。