បានប្រកាសជាយូរមកហើយ - ឥឡូវនេះការពិត ៖ ក្រុមហ៊ុន Microsoft បានបិទការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវដោយពាក្យសម្ងាត់សម្រាប់ពិធីការមួយចំនួននៅក្នុង Exchange Online ចាប់ពីខែកញ្ញា ឆ្នាំ 2022 ដើម្បីគាំទ្រ oAuth2 ។ បញ្ហា GitHub នៃ បណ្ណាល័យ និង ស្គ្រីបបម្រុងទុកជាច្រើន ធ្វើឱ្យវាច្បាស់ថាការផ្លាស់ប្តូរនេះបានធ្វើឱ្យអ្នកគ្រប់គ្រងជាច្រើនភ្ញាក់ផ្អើល។ ខាងក្រោមនេះ យើងបង្ហាញពីរបៀបដែលអ្នកអាចបន្តចូលប្រើមាតិកានៃប្រអប់សំបុត្រ Exchange របស់អ្នក ដោយមានជំនួយពី oAuth2 តាមរយៈ PHP តាមរយៈ IMAP ។
តាមទស្សនៈសុវត្ថិភាព ការផ្លាស់ប្តូររបស់ Microsoft គឺត្រឹមត្រូវណាស់ ប៉ុន្តែភាពស្មុគស្មាញនៃការចូលប្រើកម្មវិធីទៅកាន់អ៊ីមែលរបស់ខ្លួនបានកើនឡើងបន្តិច។ ឧទាហរណ៍ ប្រសិនបើអ្នកប្រើ បណ្ណាល័យ barbushin/php-imap ដែល បានប្រើយ៉ាងទូលំទូលាយ ការចូលប្រើមានដូចខាងក្រោម:
734a82898010e2fcb02c72c3cd9702c2
វាគ្រាន់តែមិនដំណើរការទៀតទេ។ ដើម្បីបង្កើតការតភ្ជាប់តាមរយៈ oAuth2 ការលំបាកដំបូងគឺដើម្បីទទួលបានសញ្ញាសម្ងាត់ចូលប្រើ។ ហើយសម្រាប់នេះអ្នកត្រូវទទួលយកឧបសគ្គពីរ។
Azure Active Directory
ជំហានខាងក្រោមចុះឈ្មោះកម្មវិធីថ្មីនៅក្នុង Azure Active Directory:
PowerShell
ឥឡូវនេះយើងបើកកម្មវិធីនៅក្នុង Microsoft PowerShell (របៀបអ្នកគ្រប់គ្រង) និងផ្តល់ការអនុញ្ញាតទៅប្រអប់សំបុត្រនីមួយៗ (<TENANTID>
, <CLIENTID>
, <OBJECTID>
, <EMAIL>
ត្រូវតែជំនួសក្នុងករណីនីមួយៗ):
Install-Module -Name ExchangeOnlineManagement
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -Organization <TENANTID>
New-ServicePrincipal -AppId <CLIENTID> -ServiceId <OBJECTID>
Add-MailboxPermission -Identity "<EMAIL>" -User <OBJECTID> -AccessRights FullAccess
...
នៅពេលដែលអ្នកបានធ្វើរួច នៅសល់មិនមែនជាវិទ្យាសាស្ត្ររ៉ុក្កែតទេ។ ដោយសារ barbushin/php-imap មិនគាំទ្រ oAuth2 អ្នកអាចភ្ជាប់ជាមួយបណ្ណាល័យជំនួស Webklex/php-imap (ដែលមានអត្ថប្រយោជន៍ផងដែរដែលមិនតម្រូវឱ្យមាន ម៉ូឌុល PHP IMAP ) ។:
734a82898010e2fcb02c72c3cd9702c2
ទោះយ៉ាងណាក៏ដោយ បណ្ណាល័យដែលមិនគាំទ្រជាផ្លូវការ oAuth2 ក៏អាចប្រើជាមួយប្រូកស៊ីដូចជា simonrob/email-oauth2-proxy ធ្វើឱ្យវាអាចដំណើរការបាន។ បន្ទាប់ពីនេះ ទាញយក និងការដំឡើងតាមរយៈ python -m pip install -r requirements-no-gui.txt
(ត្រូវការ Python ≥3.6) អ្នកកែសម្រួលឯកសារ emailproxy.config
ឧ. ដូចខាងក្រោម (ជំនួសពេលនេះ <TENANTID>
, <CLIENTID>
, <CLIENTSECRET>
និង <EMAIL>
):
[Server setup]
[IMAP-1993]
local_address = localhost
server_address = outlook.office365.com
server_port = 993
[Account setup]
[<EMAIL>]
token_url = https://login.microsoftonline.com/<TENANTID>/oauth2/v2.0/token
oauth2_scope = https://outlook.office365.com/.default
redirect_uri = http://localhost:8080
client_id = <CLIENTID>
client_secret = <CLIENTSECRET>
បន្ទាប់មកអ្នកចាប់ផ្តើមប្រូកស៊ីជាមួយ python emailproxy.py --no-gui
ហើយឥឡូវនេះអាចចូលទៅកាន់ IP ដែលមិនបានអ៊ិនគ្រីប localhost
នៅលើច្រក 1993
ភ្ជាប់តាមរយៈ Basic Auth ធម្មតា (និងការកំណត់ពាក្យសម្ងាត់ណាមួយ)។ ប្រសិនបើអ្នកចង់ចាប់ផ្តើមប្រូកស៊ីជាសេវាកម្មក្នុងផ្ទៃខាងក្រោយ នៅពេលអ្នកចាប់ផ្តើមប្រព័ន្ធ អ្នកអាចប្រើឧទាហរណ៍ ប្រព័ន្ធ:
sudo systemctl edit --force --full emailproxy.service
[Unit]
Description=Email OAuth 2.0 Proxy
[Service]
ExecStart=/usr/bin/python /path/to/emailproxy.py --no-gui
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable emailproxy.service --now
sudo systemctl status emailproxy.service
sudo systemctl start emailproxy.service
ប្រសិនបើការតភ្ជាប់ដែលបានអ៊ិនគ្រីបត្រូវបានទាមទារ នេះក៏អាចធ្វើទៅបានដែរ - សម្រាប់វាដំបូងអ្នកបង្កើតសោឯកជន និងវិញ្ញាបនបត្រដែលចុះហត្ថលេខាដោយខ្លួនឯង:
openssl genrsa -out key.pem 3072
openssl req -new -x509 -key key.pem -out cert.pem -days 360
បន្ទាប់មកឯកសារយោងត្រូវបានធ្វើឡើងនៅក្នុង emailproxy.config
ឯកសារទាំងពីរនេះ។:
local_key_path = /path/to/key.pem
local_certificate_path = /path/to/cert.pem