使用表单身份验证为 AD FS 配置 WIF

Configure WIF for AD FS with forms authentication

我们有一个 ASP.NET Web Forms(.Net 3.5) 网站应用程序使用表单身份验证。该应用程序有不同的自定义身份验证服务,这些服务使用不同的 SSO 方法(例如 CAS)来验证用户,这些服务是为不同的客户端实现的。现在的要求是在不对表单身份验证配置进行核心更改的情况下实现基于 AD FS 的身份验证服务。

我的问题:

  1. 如何在 .Net 3.5 网站中配置 SAM
  2. 是否可以将用户名和密码从我的登录页面传递到 AD FS 代理并获得 saml 响应,而不是重定向到 STS?
  3. 我的意图是从 saml 响应中读取自定义属性值(例如,雇员编号)并继续使用当前的身份验证模块。可能吗?

此问题基于 AD FS and forms Authentication 中的讨论,我们将不胜感激。

  1. 我在上一个问题中作为答案发布的片段应该或多或少在 .net 3.5 下工作(一些 api 已经改变但变化不大所以你无法弄清楚)

  2. 虽然这是可能的,但我想这是个坏主意。这是因为 ADFS 可以配置为使用 username/password 以外的其他身份验证方式。例如,他们可以启用 windows 集成身份验证。或者他们可以将身份验证委托给另一个使用涉及文本消息的双因素身份验证的提供商。所有这一切都意味着遵循 passive ws-fed 更可靠,您的应用程序将重定向到提供商的登录页面,而不是将您的应用程序收集的 username/password 传递给提供商。

  3. 片段中的 SAML 验证以代表令牌主体的 ClaimsIdentity 结束。在这里您只需列举声明并搜索您想要的声明:

    var identity = .. Validate saml token ..
    
    foreach ( var claim in identity.Claims )
      if ( claim.Type == employee number claim type )
        Use the claim to establish a local forms auth session