Przeskocz do opisu głównego

Websphere-outlook-store (Kalisto)

Przestarzałe uwierzytelnianie BASIC w Exchange Online

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).

Zastosowanie w dowolnym projekcie Java

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.

Uwaga!

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:

websphere_sample_config_screen03

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.

Wskazówka

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).

azure_sample_config_screen01

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

azure_sample_config_screen02

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"

azure_sample_config_screen03

Poufny klucz klienta (Client secret)

Dodaj poufny klucz klienta i zapamietaj jego wartość.

Uwaga!

Wartość dostępna jest tylko zaraz po utworzeniu klucza. Rekomendowany czas życia klucza to 24 miesiące.

azure_sample_config_screen04

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.

azure_sample_config_screen05

Uwaga!

Uprawnienia muszą być dodane z „Grant admin consent for <nazwa_firmy>”.

Dodaj ServicePrincipal do aplikacji

Aby dodać ServicePrincipal do aplikacji wykorzystamy konsolę PowerShell.

Uwaga!

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:

websphere_sample_config_screen04

Uwaga!

Ważnym jest by podczas konfigurowania obiektu dostawcy poczty zaznaczyć opcję Isolate this mail provider tak jak na ilustracji poniżej.

websphere_sample_config_screen05

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 klasyTyp
imappl.slawas.mail.outlook.store.OutlookStoreSTORE
imapspl.slawas.mail.outlook.store.OutlookSSLStoreSTORE
pop3com.sun.mail.pop3.POP3StoreSTORE
pop3scom.sun.mail.pop3.POP3SSLStoreSTORE
smtppl.slawas.mail.outlook.smtp.OutlookTransportTRANSPORT
smtpspl.slawas.mail.outlook.smtp.OutlookSSLTransportTRANSPORT

websphere_sample_config_screen06

Konfigurowanie sesji poczty elektronicznej

Ścieżka konfiguracji w konsoli WebSphere: Resources > Mail > Mail Sessions

Dodaj sesję pocztową o przykładowej nazwie outlook-store:

websphere_sample_config_screen07

Uwaga!

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>

websphere_sample_config_screen08

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.):

ParametrOpis parametruPrzykł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

websphere_sample_config_screen09

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].

Firmy, które już użyły produktu

certificate

certificate

certificate