【问题标题】:Update/Handle Active Directory user account using C# when ADFS 2.0 SSO is implemented实施 ADFS 2.0 SSO 时使用 C# 更新/处理 Active Directory 用户帐户
【发布时间】:2015-04-13 18:33:30
【问题描述】:

在实施 ADFS 2.0 SSO 时,我可以使用 C# 更新/处理 Active Directory 用户帐户吗?

或者一旦用户从 SSO 获得响应,即令牌/故障,我是否需要使用 LDAP 连接访问 Active Directory 以检查用户状态和错误密码答案计数?

【问题讨论】:

  • 是的,您可以,但是您需要提供更多详细信息才能获得更详细的答案。
  • 我的活动目录中有内部用户。一旦用户输入用户名密码并从 STS 获得响应。我想检查用户是否被禁用、锁定以及什么是 failedanswercount(我们的 Active Directory 中的扩展属性)。我该如何实施?它将在我的 Web 应用程序中实现吗?当我从 STS 获得任何通过/失败响应时,我可以发送响应页面 url(我的 Web 应用程序的其中我将在某些对象中获取这些属性)吗?为了实现这一点,STS 是否可以向我发送所有详细信息,或者我需要再次设置 LDAP 连接以从我的 AD 中获得禁用、锁定、失败的答案计数?
  • ADFS 的登录页面以纯 aspx/cs 格式提供,至少在我们使用多年的 2.0 中。登录页面有一个捕获异常的按钮单击方法。尽管异常没有提供任何有用的信息,但您可以修改 cs 文件并添加自定义逻辑。是的,您需要手动执行此操作,重新创建连接并使用 ldap 协议询问。 ADFS 不会暴露任何有用的东西。例如,我们使用自定义连接来托管用户发送电子邮件的密码恢复页面,然后,当他们从电子邮件中发送的链接返回时,允许他们重置自己的密码。
  • 感谢维克托。我还想实现密码恢复和帐户启用功能。当用户被禁用/锁定时,我想将他/她发送到密码恢复页面。那么这里的流程将如何?它会先去 STS 进行身份验证(同样是我的 AD 中的这个用户),然后我们可以重定向到我们的密码恢复页面吗?或者我们可以首先检查用户是否被禁用或锁定(假设使用单独的 ldap 连接)然后首先发送到密码恢复页面,然后如果用户处于活动状态则转到 STS?请建议流程应该是什么。
  • 现在我们没有 SSO 和密码恢复。我想同时实现两者。目前我正在使用常规的 ActiveDirectoryMemebershipProvider 来获取用户,使用我的活动目录验证用户等。

标签: c# active-directory adfs2.0


【解决方案1】:

一旦 ADFS 进行身份验证,您就会进入令牌流并重定向到 RP,并且您没有机会拦截,因此您需要首先使用任何自定义代码。

执行所有 AD 操作,然后调用 ADFS 身份验证。

警告: ADFS 3,0 以上版本使用 IIS,因此没有此自定义代码的升级路径。

更新

在 FormsSignIn 中的 SubmitButton_Click 中:

然后做你的 LDAP 工作:

   try
   {
        SignIn( UsernameTextBox.Text, PasswordTextBox.Text );
   }


   catch ( AuthenticationFailedException ex )
   {
        // Check for lockout. password expired etc.
   }

【讨论】:

  • 谢谢!你能用步骤简化这个答案吗?我首先需要做什么以及在哪里可以设置此配置或何时调用自定义代码?我是新手。
猜你喜欢
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多