EWS und die Credentials bzw. service.UseDefaultCredentials
Hallo @all,
ich stehe mal wieder im Walde...
Folgendes Problem:
Ich möchte eine Mail mit EWS senden und dafür den aktuell angemeldeten User nutzen.
(Wir haben "single sign on" d.h. nach Anmeldung an der Domäne ist keine besondere Exchangeanmeldung notwendig.)
Ich würde nun gerne die Credentials des angemeldeten Users an EWS weiterreichen. Nur wie ?
Funktioniert leider nicht:
Auch das geht nicht:
Das "AutoDiscoverURL("MailAdresse") kann ich leider nicht nutzen, da das scheinbar bei uns nicht unterstützt wird.
Hat jemand eine Idee ?
Zweck der Übung ist, beim Senden Outlook nicht zu nutzen (über die Interop-Klassen) aber trotzdem die gesendete Mail über den User zu senden (z.Bsp. wegen der Ablage in "sent items"). Nur sollen die User nicht nochmal die Logindaten (resp. Passwort) eingeben bzw.hinterlegen müssen.
Vielen Dank im Voraus
Frank
ich stehe mal wieder im Walde...
Folgendes Problem:
Ich möchte eine Mail mit EWS senden und dafür den aktuell angemeldeten User nutzen.
(Wir haben "single sign on" d.h. nach Anmeldung an der Domäne ist keine besondere Exchangeanmeldung notwendig.)
Ich würde nun gerne die Credentials des angemeldeten Users an EWS weiterreichen. Nur wie ?
Funktioniert leider nicht:
Dim service As New ExchangeService()
service.Url = New Uri(My.Settings.Office365WebserivceURL)
service.PreAuthenticate = True
service.UseDefaultCredentials = True
Dim Message As New EmailMessage(service)
Message.Subject = "Das ist ein Test 3"
Message.Body = "Das ist ein Test 3"
Message.ToRecipients.Add(My.Settings.Recipients)
Message.SendAndSaveCopy()
Auch das geht nicht:
Dim service As New ExchangeService()
service.Url = New Uri(My.Settings.Office365WebserivceURL)
service.PreAuthenticate = True
service.Credentials = System.Net.CredentialCache.DefaultCredentials.GetCredential(New Uri("domain\user"), "")
Dim Message As New EmailMessage(service)
Message.Subject = "Das ist ein Test 3"
Message.Body = "Das ist ein Test 3"
Message.ToRecipients.Add(My.Settings.Recipients)
Message.SendAndSaveCopy()
Hat jemand eine Idee ?
Zweck der Übung ist, beim Senden Outlook nicht zu nutzen (über die Interop-Klassen) aber trotzdem die gesendete Mail über den User zu senden (z.Bsp. wegen der Ablage in "sent items"). Nur sollen die User nicht nochmal die Logindaten (resp. Passwort) eingeben bzw.hinterlegen müssen.
Vielen Dank im Voraus
Frank
Please also mark the comments that contributed to the solution of the article
Content-ID: 356126
Url: https://administrator.de/contentid/356126
Printed on: November 10, 2024 at 07:11 o'clock
9 Comments
Latest comment
Du hast keine Service-URL angegeben, wenn du kein AutoDiscover nutzt muss der Service ja irgendwoher erfahren mit welchem Ex er sich verbinden soll ...
Findet sich alles hier im Forum, also Suchfunktion des Forums nutzen...
service.Url = new Uri("https://server.domain.local/EWS/Exchange.asmx");
Funktioniert leider nicht:
Naja das kannst du sicher besser , "Funktioniert nicht" sagt uns rein gar nichts!!Findet sich alles hier im Forum, also Suchfunktion des Forums nutzen...
Fehlermeldung kannst du aber schon posten????
Try catch einbauen... Und XML Response des Requests posten bitte! Danke.
Nutze dazu bitte erst
https://ewseditor.codeplex.com
Damit ist das Debugging erheblich leichter.
Erst wenn es dort lüppt, zurück zum Code.
Try catch einbauen... Und XML Response des Requests posten bitte! Danke.
Nutze dazu bitte erst
https://ewseditor.codeplex.com
Damit ist das Debugging erheblich leichter.
Erst wenn es dort lüppt, zurück zum Code.
Edit: Sehe gerade, mit Exchange Online geht die Nutzung der Eigenschaft nicht, siehe:
https://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webse ...
Du musst also den UPN in den Credentials nutzen.
https://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webse ...
You cannot use the default credentials of the logged on user if the user’s mailbox is hosted in Exchange Online or Exchange Online as part of Office 365. Instead, use the Credentials property to set the user’s credentials. The user’s credentials must be in user principal name (UPN) form for Exchange Online.
Zitat von @SachsenHessi:
Hallo Specht,
darum geht es ja gerade.
Ich würde gern die Credentials des aktuell angemeldeten Nutzers (Net.Credentials) den Credentials des EWS übergeben.
Nur leider kriege ich diesen nicht. Sondern User resp. Passwort - Properties der Net.Credentials sind "leer"..
Das ist normal. Das wäre ja geradezu eine Einladung das eine fremde Anwendung mein Passwort auslesen könnte , die sind intern geschützt, du kannst sie verwenden aber ein Auslesen ist damit nicht möglich.Hallo Specht,
darum geht es ja gerade.
Ich würde gern die Credentials des aktuell angemeldeten Nutzers (Net.Credentials) den Credentials des EWS übergeben.
Nur leider kriege ich diesen nicht. Sondern User resp. Passwort - Properties der Net.Credentials sind "leer"..
Und wenn dann hättest du die GetNetworkCredential Methode nehmen müssen. Bringt dir hier aber ebenfalls nichts denn:
Die Frage ist also, wie bekomme ich die Credentials eines angemeldeten Nutzers in ein neues Credentials-Objekt um dieses dann weiter nutzen zu können.
Der User muss sich mit UPN anmelden.
Leg die Credentials in den Tresor
https://msdn.microsoft.com/de-de/library/windows/apps/windows.security.c ...
https://msdn.microsoft.com/de-de/library/windows/apps/windows.security.c ...