Websphere-outlook-store (Kalisto)
W MS Office 365 uwierzytelnianie BASIC
jest teraz wyłączone we wszystkich dzierżawach (tenant'ach). Przed 31 grudnia 2022 r. można było włączyć uwierzytelnianie BASIC
dla protokołów IMAP, POP3 oraz SMTP, jeśli użytkownicy i aplikacje w dzierżawie nie mogły się połączyć. Teraz nikt (ani Ty, ani pomoc techniczna Microsoft) nie może ponownie włączyć uwierzytelniania BASIC
. Przeczytaj artykuł Deprecation of Basic authentication in Exchange Online aby w pełni zrozumieć zmiany, jakie wprowadził Microsoft, i jak te zmiany mogą na Ciebie wpłynąć.
Websphere-outlook-store (Kalisto) jest odpowiedzią na zapotrzebowanie realizacji mechanizmów komunikacji po protokołach IMAP, POP3 oraz SMTP ze skrzynkami MS Office 365 z wykorzystaniem „nowoczesnego uwierzytelniania” (Modern authentication).
Kalisto to biblioteka zawierająca implementację klasy pl.slawas.mail.outlook.store.OutlookStore
, której rozszerzeniem jest standardowa implementacja kasy com.sun.mail.imap.IMAPStore
z com.sun.mail » javax.mail » 1.6.2. Zawarta w tej implementacji funkcjonalność pozwala na skonfigurowanie źródła danych poczty elektronicznej w komunikacji z usługą IMAP Ofiice365 z wykorzystaniem „nowoczesnego uwierzytelniania” (Modern authentication).
Nazwa produktu sugeruje, że jedynym jej zastosowaniem jest środowisko serwera aplikacji IBM WebSphere Application Server, ALE TO NIE PRAWDA. Biblioteka implementuje standardowe API wypracowane jeszcze przez Sun Microsystems i można ją wykorzystać w dowolnym projkecie Java.
Niniejszy dokument zawiera kroki instalacji i konfiguracji mechanizmu korzystania z poczty elektronicznej w środowisku produktu IBM WebSphere Application Server, 8.5.x.
Instalacja
Pakiet instalacyjny to archiwum zawierające pliki niezbędne do uruchomienia mechanizmu „nowoczesnego uwierzytelniania” (Modern authentication) do poczty elektronicznej. Zawiera on bibliotekę "Kalisto" o nazwie 0_outlook-store-<wersja>.jar
(np. 0_outlook-store-0.0.3-jdk1.7.jar
) oraz biblioteki, od których imlementacja zależy.
Biblioteki należy umieścić w katalogu $WAS_INSTALL/BPM/Lombardi/lib
np. /opt/IBM/BAW/20.0.0.1/BPM/Lombardi/lib
.
Jeżeli w docelowym katalogu istnieje plik mail.jar
(standardowa biblioteka z API komunikacji z pocztą elektroniczną) to należy go usunąć.
Konfiguracja pamięci podręcznych
Ścieżka konfiguracji w konsoli WebSphere: Resources > Cache instances > Object cache instances
Należy skonfigurować pamięć podręczną obiektów, w której przechowywane będą niezbędne dane podnoszące wydajność rozwiązania. Przykład:
Potem ustaw odpowiednio wartości parametrów pamięci podręcznej:
- Nazwa (ang. Name)- nazwa pamięci podręcznej np. tokenO365
- Nazwa JNDI (ang. JNDI Name)- nazwa JNDI pamięci podręcznej np. services/cache/tokenO365 – nazwa ta będzie wykorzystywana jako wartość parametru konfiguracji sesji poczty elektronicznej.
- Zasięg (ang. Scope)– zasięg działania pamięci podręcznej powinien być zdefiniowany jako klaster np. Klaster=SingleCluster (ang. Cluster=SingleCluster)
Konfiguracja aplikacji Microsoft O365
Przed przystąpieniem do konfiguracji poczty elektronicznej należy utworzyć aplikację, za pośrednictwem której mechanizm uwierzytelniania pozyskiwać będzie token OAuth2.
Zanim przejdziemy do kolejnych kroków warto uzupełnić swoją wiedzę na temat budowania aplikacji w Portal Azure. Poniżej linki do stron, które warto odwiedzić:
Aplikacja w rejestrze Portalu Azure
Wchodzimy na stronę Portal Azure pod adres:
https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade. Dodajemy (rejestrujemy) aplikację albo wybieramy już wcześniej utworzoną, wstępnie skonfigurowaną (w poniższym przykładzie aplikacja nazywa się outlook-oauth
).
Istotne dane dotyczące aplikacji (Overview)
Zapamiętaj następujące dane dotyczące aplikacji:
- Application (client) ID – identyfikator klineta, clientId, AppId
- Object ID – identyfikator serwisu, ServiceId
- Directory (tenant) ID – identyfikator katalogu, tenant, Organization
Parametry uwierzytelniania (Authentication)
Ustaw parametry uwierzytelniania:
- Supported account types - wybierz opcję Accounts in this organizational directory only (
<nazwa_firmy>
only - Single tenant) - Advanced settings - Allow public client flows - ustaw na "Yes"
Poufny klucz klienta (Client secret)
Dodaj poufny klucz klienta i zapamietaj jego wartość.
Wartość dostępna jest tylko zaraz po utworzeniu klucza. Rekomendowany czas życia klucza to 24 miesiące.
Uprawnienia do aplikacji Microsoft Graph
Dodaj niezbędne uprawnienia do aplikacji Microsoft Graph:
IMAP.AccessAsUser.All
– odczyt i zapis do skrzynek pocztowych za pośrednictwem protokołu IMAP.POP.AccessAsUser.All
- odczyt i zapis do skrzynek pocztowych za pośrednictwem protokołu POP.SMTP.Send
– wysyłanie poczty ze skrzynek pocztowych za pośrednictwem SMTP AUTH.
Uprawnienia muszą być dodane z „Grant admin consent for <nazwa_firmy>
”.
Dodaj ServicePrincipal do aplikacji
Aby dodać ServicePrincipal do aplikacji wykorzystamy konsolę PowerShell.
Zanim rozpoczniesz musisz mieć na swoim komputerze zainstalowany moduł ExchangeOnlineManagement. Polecenia instalacji w konsoli:
Install-Module -Name ExchangeOnlineManagement -allowprerelease
Import-module ExchangeOnlineManagement
Polecenie dodania ServicePrincipal:
New-ServicePrincipal `
-AppId <AppId> `
-ServiceId <ObjectId> `
-Organization <tenant>
Przykład:
New-ServicePrincipal `
-AppId ddd1f64e-f67a-49ff-9cdc-387d173f3028 `
-ServiceId c64cea69-2bf4-4570-8b86-2666ce9f9716 `
-Organization 161ee23e-798c-481d-975a-3a345e760161
Przykładowa konfiguracja dostawcy poczty elektronicznej
Ścieżka konfiguracji w konsoli WebSphere: Resources > Mail
Konfiguracja dostawcy poczty elektronicznej
Ścieżka konfiguracji w konsoli WebSphere: Resources > Mail > Mail Providers
Utwórz obiekt dostawcy poczty o przykładowej nazwie outlook-store
:
Ważnym jest by podczas konfigurowania obiektu dostawcy poczty zaznaczyć opcję Isolate this mail provider tak jak na ilustracji poniżej.
Przeprowadzamy odpowiednią konfigurację dostawcy. W zależności od tego jakie proptokoły komunikacji z serwerem poczty elektronicznej chcemy wykorzystać ustawiamy dla nich odpowienią nazwę klasy implementującą dostawcę.
Ścieżka konfiguracji w konsoli WebSphere: Resources > Mail > Mail Providers > outlook-store > Protocol providers (Dostawcy protokołu)
Przykładowo konfigurujemy obsługę protokołów: IMAP, IMAPS (IMAP z szyfrowaniem SSL), SMTP oraz SMTPS (SMTP z szyfrowaniem SSL).
Protokół | Nazwa klasy | Typ |
---|---|---|
imap | pl.slawas.mail.outlook.store.OutlookStore | STORE |
imaps | pl.slawas.mail.outlook.store.OutlookSSLStore | STORE |
pop3 | com.sun.mail.pop3.POP3Store | STORE |
pop3s | com.sun.mail.pop3.POP3SSLStore | STORE |
smtp | pl.slawas.mail.outlook.smtp.OutlookTransport | TRANSPORT |
smtps | pl.slawas.mail.outlook.smtp.OutlookSSLTransport | TRANSPORT |
Konfigurowanie sesji poczty elektronicznej
Ścieżka konfiguracji w konsoli WebSphere: Resources > Mail > Mail Sessions
Dodaj sesję pocztową o przykładowej nazwie outlook-store
:
Podczas tworzenia obiektu sesji wybierz wcześniej utworzonego dostawcę poczty.
Ustaw pola:
- Nazwa (ang. Name)- nazwa sesji poczty np.
outlook-store
- Nazwa JNDI (ang. JNDI Name)- nazwa JNDI, za pośrednictwem której będziesz nawiązywać połączenia w integracjach mailowych BPM. Np.
mail/office365
- Serwer (ang. Server)- poczta wychodząca, nazwa serwera:
smtp.office365.com
- Protokół (ang. Protocol)- poczta wychodząca, wybierz wartość:
smtp
- Użytkownik (ang. User)- poczta wychodząca, nazwa użytkownika skrzynki pocztowej np.
scichy@<nazwa_domeny>
- Serwer (ang. Server)- poczta przychodząca, nazwa serwera:
outlook.office365.com
- Protokół (ang. Protocol)- poczta przychodząca, wybierz wartość:
imap
- Użytkownik (ang. User)- poczta przychodząca, nazwa użytkownika skrzynki pocztowej np.
scichy@<nazwa_domeny>
Ustaw własne wartości dla wymaganych parametrów sesji (znaczenie parametrów o nazwie mail.*
możesz poznać czytając opis Package javax.mail
The JavaMail™ API provides classes that model a mail system.):
- Wymagane
- Opcjonalne
Parametr | Opis parametru | Przykładowa wartość |
---|---|---|
websphere.cache | NazwaNazwa JNDI pamięci podręcznej. Zobacz rozdział o Konfiguracja pamięci podręcznych. | services/cache/tokenO365 |
security.encoder.class | DomyślnieUstaw wartość taką jak w przykładzie. | com.ibm.ws.security.util.WSEncoderDecoder |
o365.user | NazwaNazwa użytkownika szkrzynki pocztowej. | scichy@<nazwa_domeny> |
o365.password | HasłoHasło użytkownika skrzynki pocztowej. | secret |
o365.oauth.tenant | IdentyfikatorIdentyfikator organizacji, tenant aplikacji w O365. | 161ee23e-798c-481d-975a-39345f76032a |
o365.oauth.clientId | IdentyfikatorIdentyfikator klienta aplikacji w O365. | 782d2e03-9066-4d59-ab6a-a2cfbc0212a1 |
o365.oauth.clientSecret | KluczPoufny klucz aplikacji w O365. | secret |
mail.smtp.user | NazwaNazwa użytkownika szkrzynki pocztowej. | scichy@<nazwa_domeny> |
mail.store.protocol | DomyślnieUstaw wartość taką jak w przykładzie. | imap |
mail.imap.class | DomyślnieUstaw wartość taką jak w przykładzie. | pl.slawas.mail.outlook.store.OutlookStore |
mail.imap.mailbox.timeout | DomyślnieUstaw wartość taką jak w przykładzie lub inną. | 10000 |
mail.transport.protocol | DomyślnieUstaw wartość taką jak w przykładzie. | smtp |
mail.smtp.class | DomyślnieUstaw wartość taką jak w przykładzie. | pl.slawas.mail.outlook.smtp.OutlookTransport |
Parametr | Opis parametru | Przykładowa wartość |
---|---|---|
o365.oauth.url | DomyślnieUstaw wartość taką jak w przykładzie. | https://login.microsoftonline.com/%s/oauth2/v2.0/token |
o365.oauth.scope | DomyślnieUstaw wartość taką jak w przykładzie. | https://outlook.office.com/.default |
mail.imap.ssl.enable | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.imap.ssl.protocols | DomyślnieUstaw wartość taką jak w przykładzie. | TLSv1.2 |
mail.imap.sasl.enable | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.imap.sasl.mechanisms | DomyślnieUstaw wartość taką jak w przykładzie. | XOAUTH2 |
mail.imap.auth.login.disable | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.imap.auth.plain.disable | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.imap.host | DomyślnieUstaw wartość taką jak w przykładzie. | outlook.office365.com |
mail.imap.port | DomyślnieUstaw wartość taką jak w przykładzie. | 993 |
mail.smtp.starttls.enable | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.smtp.socketFactory.fallback | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.smtp.ssl.enable | DomyślnieUstaw wartość taką jak w przykładzie. | false |
mail.smtp.ssl.protocols | DomyślnieUstaw wartość taką jak w przykładzie. | TLSv1.2 |
mail.smtp.auth | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.smtp.sasl.enable | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.smtp.sasl.mechanisms | DomyślnieUstaw wartość taką jak w przykładzie. | XOAUTH2 |
mail.smtp.auth.login.disable | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.smtp.auth.plain.disable | DomyślnieUstaw wartość taką jak w przykładzie. | true |
mail.smtp.host | DomyślnieUstaw wartość taką jak w przykładzie. | smtp.office365.com |
mail.smtp.port | DomyślnieUstaw wartość taką jak w przykładzie. | 587 |
Jeżeli parametr nie zostanie ustawiony w konfiguracji sesji poczty elektronicznej to biblioteka ustawi wartość znajdującą się w tabeli.
Wsparcie
W razie problemów proszę o kontakt mailowy na adres e-mail info@scisoftware.pl. W temacie wiadomości proszę o dołączenie prefixu: [Websphere-outlook-store].