2016-09-05 2 views
2

Ich möchte einen Benutzernamen und ein Kennwort für eine .Net Console-Anwendung oder Webseite bereitstellen, um sich bei den Active Directory-Verbunddiensten zu authentifizieren. An diesem Punkt habe ich nur https://mycompany.com/FederationMetadata/2007-06/FederationMetadata.xml, und ich habe einen gültigen Benutzernamen und ein Passwort zu testen.Wie authentifizieren Sie Benutzername und Kennwort für Active Directory-Verbunddienste (ADFS)?

folgte ich einige Artikel, nämlich., https://dotnetcodr.com/2013/02/28/claims-based-authentication-in-mvc4-with-net4-5-c-part-2-storing-authentication-data-in-an-authentication-session/

ich überprüft und festgestellt, dass, müssen wir "Verlassen Sie sich Party" in ADFS, verwenden ADFS als Auth Speicher hinzufügen.

Im zweiten Link wird Federed IdP verwendet. Stattdessen möchte ich eine Konsole verwenden, um Benutzernamen und Passwort anzugeben und authentifiziert zu werden. Aber es ist nicht klar für mich, dass, wo Benutzername und Passwort, in der Konsole App zur Verfügung stellen. Jede Hilfe wird geschätzt! Danke im Voraus.

+0

haben Sie die endgültige Lösung erhalten? –

Antwort

0

folgende Code funktioniert für mich

using System.IdentityModel.Tokens; 
using Microsoft.IdentityModel.Protocols.WSTrust; 
using System.ServiceModel; 
using System.ServiceModel.Security; 
using WSTrustChannel = Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel; 
using WSTrustChannelFactory = Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannelFactory; 


namespace SOS.Tools.AdfsConnectionChecker 

{ 
    internal class Token 

    { 

     public static SecurityToken GetToken(string username, string password, string tokenIssuer, string appliesTo, out RequestSecurityTokenResponse rsts) 

     { 
      WS2007HttpBinding binding = new WS2007HttpBinding(); 
      binding.Security.Message.EstablishSecurityContext = false; 
      binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; 
      binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName; 
      binding.Security.Mode = SecurityMode.TransportWithMessageCredential; 


      var tokenIssuerUrlFormat = "https://{0}/adfs/services/trust/13/usernamemixed"; 
      var tokenIssuerUrl = string.Format(tokenIssuerUrlFormat, tokenIssuer); 


      WSTrustChannelFactory trustChannelFactory = 
       new WSTrustChannelFactory(binding, new EndpointAddress(tokenIssuerUrl)); 

      trustChannelFactory.TrustVersion = TrustVersion.WSTrust13; 
      trustChannelFactory.Credentials.UserName.UserName = username; 
      trustChannelFactory.Credentials.UserName.Password = password; 

      trustChannelFactory.ConfigureChannelFactory(); 



      // Create issuance issuance and get security token 
      RequestSecurityToken requestToken = new RequestSecurityToken(WSTrust13Constants.RequestTypes.Issue); 
      requestToken.AppliesTo = new EndpointAddress(appliesTo); 

      WSTrustChannel tokenClient = (WSTrustChannel) trustChannelFactory.CreateChannel(); 
      SecurityToken token = tokenClient.Issue(requestToken, out rsts); 
      return token; 

     } 

} 
  • Benutzername - Domain-Benutzernamen (zB [email protected])
  • Passwort - Domain-Benutzerkennwort
  • TokenIssuer - ADFS URL (adfs .somedomain.com). Das ADFS sollte Active Directory verbunden werden, in dem Benutzername
  • AppliesTo erstellt wird - Applicattion Sie Token wollen (zum Beispiel https://apps.anydomain.com/WcfService1). Es muss auf der TokenIssuer als Relying Party konfiguriert werden.
Verwandte Themen