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

Printed on: November 11, 2024 at 20:11 o'clock

141575
141575 Oct 30, 2019 updated at 13:16:06 (UTC)
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 Oct 30, 2019 updated at 13:58:57 (UTC)
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 Oct 30, 2019 updated at 14:25:34 (UTC)
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 Nov 04, 2019 updated at 07:20:00 (UTC)
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 Nov 04, 2019 at 09:32:17 (UTC)
Goto Top
SachsenHessi
SachsenHessi Nov 04, 2019 at 11:11:46 (UTC)
Goto Top
Danke für die schnelle Antwort.
Werde ich morgen mal ausprobieren.

THX
Frank