【问题标题】:Authenticate user by ADFS (Active Directory Federation Service)通过 ADFS(Active Directory 联合身份验证服务)对用户进行身份验证
【发布时间】:2012-05-25 22:47:38
【问题描述】:

我需要通过ADFS 检查特定用户是否存在于 Active Directory 中。

所以,我希望我的 ADFS 使用用户名/密码 check user Authentication

谁能提供相同的示例代码或教程。

提前致谢!

【问题讨论】:

  • 您实际上在这里问了两个问题:ADFS 能否检查用户是否存在于 Active Directory 中,以及我能否使用用户名和密码在 ADFS 上进行身份验证。

标签: c# .net c#-4.0 adfs2.0


【解决方案1】:

要使用用户名/密码验证,您可以使用

trust/13/UsernameMixed

ADFS 2.0 的端点。

这不会检查用户是否存在于 Active Directory 中!

在代码中,您像这样请求令牌:

WSTrustChannelFactory adfsfactory = new WSTrustChannelFactory(new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
                            StsEndpoint);

adfsfactory.TrustVersion = TrustVersion.WSTrust13;

// Username and Password here...
factory.Credentials.UserName.UserName = "domain\username";
factory.Credentials.UserName.Password = "password";

IWSTrustChannelContract channel = adfsfactory.CreateChannel();

// request the token
SecurityToken token = channel.Issue(rst);

然后使用您的令牌为您的服务创建通道工厂:

var binding = new WS2007FederationHttpBinding(WSFederationHttpSecurityMode.Message);

var factory = new ChannelFactory<IYourInterface >(binding, "your service address");

factory.ConfigureChannelFactory();

IYourInterface channel = factory.CreateChannelWithIssuedToken(token);

希望这会有所帮助!

【讨论】:

  • 我相信这会检查身份验证...您是否认为 ADFS 公开 API 只是为了通过给定的凭据(例如电子邮件/密码)检查特定用户是否存在??
  • 是的,正如我在帖子中所写,您可以使用它进行身份验证。据我所知,ADFS 没有允许您检查用户是否存在的功能。您可以编写一个非常简单的 Web 服务来检查用户是否存在,甚至是网站。
  • LdapConnection.UserExists(UserName);也许是您正在寻找的东西。
  • 有谁知道如何在 .NET 4.5 中做到这一点? UserNameWSTrustBinding 不见了,我想?
【解决方案2】:

根据@Marnix,这是开箱即用的行为。

但是,要指出:

对用户进行身份验证与检查 Active Directory 中是否存在特定用户不同。

例如用户可能被锁定。他仍然存在于 AD 中,但无法进行身份验证。

【讨论】:

    【解决方案3】:

    AD FS 2.0 登录页面支持开箱即用的用户名/密码身份验证。无需代码或自定义。

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 2016-01-12
      • 2017-04-06
      • 2011-12-04
      • 1970-01-01
      相关资源
      最近更新 更多