sachsenhessi
Goto Top

Net Credentials des aktuellen Nutzers

Hallo @all,

ich stehe mal wieder im Walde.
Ich brauche für :
mySmtpsvr.Credentials = New System.Net.NetworkCredential()
bzw.
mySmtpsvr.Credentials = ????
die Credentials des an der Domäne angemeldeten Nutzers (WinForms unter W7/W10).
"System.Net.CredentialCache.DefaultNetworkCredentials" oder "System.Net.CredentialCache.DefaultCredentials" funzen leider nicht.

Kann mir einer da auf die Sprünge helfen ?

Danke !!

Frank

Content-ID: 510127

Url: https://administrator.de/contentid/510127

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

141575
141575 30.10.2019 aktualisiert um 14:16:06 Uhr
Goto Top
Hier dein Baum an dem du dich auspinkeln kannst
https://docs.microsoft.com/de-de/dotnet/api/system.net.mail.smtpclient.u ...
Du brauchst kein Credential Object, nur die Eigenschaft oben auf true setzen, fertig.
SachsenHessi
SachsenHessi 30.10.2019 aktualisiert um 14:58:57 Uhr
Goto Top
Hallo,
Erstmal vielen Dank für die schnelle Antwort.
Leider scheint das so nicht nicht zu funktionieren.
 Dim myMsg As New MailMessage
            myMsg.From = New MailAddress("yyyyy@xxxxx.com")  
            myMsg.To.Add("Test@test.com")  
            myMsg.Subject = "Betreff TEST 2  Office365  16-22"  
            myMsg.Body = "Inhalt TEST Office365  16-22"  
            myMsg.IsBodyHtml = False

            Dim mySmtpClient As New SmtpClient()
            mySmtpClient.Host = "smtp.office365.com" '  
            mySmtpClient.Port = 587
            mySmtpClient.EnableSsl = True
            mySmtpClient.UseDefaultCredentials = True

            mySmtpClient.Send(myMsg)
wirft mir eine Exception. (Für den SMTP-Server ist eine sichere Verbindung erforderlich, oder der Client wurde nicht authentifiziert. Die Serverantwort war: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [xxxxxx.xxxxxxx..outlook.com])
Ändere ich die Credentials wie folgt:
Dim mySmtpClient As New SmtpClient()
            mySmtpClient.Host = "smtp.office365.com" '  
            mySmtpClient.Port = 587
            mySmtpClient.EnableSsl = True
            mySmtpClient.Credentials = New System.Net.NetworkCredential("yyyyy@xxxxx.com", "zzzzzzz")  
            mySmtpClient.Send(myMsg)
Dann geht es ohne Probleme.
Kann das sein das, das UseDefaultCredentials=TRUE nur für den StandardPort 25 bzw. nicht mit SSL geht ?

LG
Frank
141575
141575 30.10.2019 aktualisiert um 15:25:34 Uhr
Goto Top
Kann das sein das, das UseDefaultCredentials=TRUE nur für den StandardPort 25 bzw. nicht mit SSL geht ?
Das klappt nur mit für Windows Authentifizierung geeignete Server. Mit normalen SMTP Servern die die Credentials im Klartext bzw. Base64 kodiert erwarten klappt das nicht. Der Grund: Windows Credentials sind per Default als nicht umkehrbare Hashes gespeichert, deswegen kann der SMTP Client kein Passwort liefern, weil ja im AD selbst nur der Hash des Passwortes gespeichert ist, und der ist nunmal mit einem OneWay Hashing Verfahren gespeichert (nicht umkehrbar).

Für das Senden einer Nachricht mit Default Credentials kannst du das EWS Managed API hernehmen, das akzeptiert entsprechende Windows Auth Credentials.
SachsenHessi
SachsenHessi 04.11.2019 aktualisiert um 08:20:00 Uhr
Goto Top
Vielen Dank für den Hinweis,
leider scheint bei uns das Autodiscover nicht richtig zu funktionieren.
        Dim myService As New ExchangeService()

        myService.Url = New Uri("https://outlook.office365.com/EWS/Exchange.asmx")  
        myService.PreAuthenticate = True
        myService.UseDefaultCredentials = True
        myService.AutodiscoverUrl("username@domain.com")  

        Dim message As New EmailMessage(myService)

        message.Subject = "TEST 4"  
        message.Body = "bnnbnnb"  
        message.ToRecipients.Add("Testr@yyyyy.info")  
        message.ToRecipients.Add("Teste@xxxx.com")  
        message.Save()
        message.SendAndSaveCopy()
Das kriege ich einfach nicht zum laufen.
Der Fehler: "Autodiscover blocked a potentially insecure redirection to https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml. To allow Autodiscover to follow the redirection, use the AutodiscoverUrl(string, AutodiscoverRedirectionUrlValidationCallback) overload."
Also habe ich das versucht.
        Public Function RedirectionUrlValidation(ByVal url As String) As Boolean
              Dim redirectionValidated As Boolean = False
              Dim redirectionUri As Uri = New Uri(url)
              If redirectionUri.Scheme = "https" Then redirectionValidated = True  
              If url.Equals("https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml") Then redirectionValidated = True  
        Return redirectionValidated
    End Function
Klappt auch nicht.
Sch...
Jetzt gehen mir, und dem Kollegen Google die Ideen aus.
Ich begreife es einfach nicht.
Hat jemand vielleicht ein Stückchen Code wie ich myService anlegen muss, damit das geht ?
Danke schon mal im Vorraus
Frank
141575
141575 04.11.2019 um 10:32:17 Uhr
Goto Top
SachsenHessi
SachsenHessi 04.11.2019 um 12:11:46 Uhr
Goto Top
Danke für die schnelle Antwort.
Werde ich morgen mal ausprobieren.

THX
Frank