使用表单身份验证为{

时间:2016-04-15 19:03:40

标签: c# asp.net authentication adfs

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

我的问题:

  1. 如何在.Net 3.5网站中配置SAM
  2. 是否可以将用户名和密码从我的登录页面传递到AD FS代理并获得saml响应,而不是重定向到STS?
  3. 我的目的是从saml响应中读取自定义属性值(例如,Employ号码),然后继续使用当前的身份验证模块。有可能吗?
  4. 此问题基于AD FS and forms Authentication中的讨论,我们将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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

  2. 虽然这是可能的,但我想这是一个坏主意。这是因为ADFS可以配置为使用除用户名/密码之外的其他一些身份验证方法。例如,他们可以启用Windows集成身份验证。或者他们可以将身份验证委托给另一个使用双因素身份验证的提供商,该提供者涉及短信。所有这些意味着遵循被动 ws-fed更加可靠,您的应用会重定向到提供商的登录页面,而不是将应用收集的用户名/密码传递给提供商。

  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