通过ADFS验证用户(Active Directory联合身份验证服务)

时间:2012-05-18 10:53:44

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

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

所以,我想通过UserName / Password将 ADFS 发送到check user Authentication

请有人提供相同的示例代码或教程。

提前致谢!

3 个答案:

答案 0 :(得分:5)

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

  

信任/ 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);

希望这有帮助!

答案 1 :(得分:1)

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

答案 2 :(得分:0)

根据@Marnix,这是不行的行为。

然而,只是要指出:

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

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