Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[11.0] microsoft outlook 2022 std #1126

Open
wants to merge 2 commits into
base: 11.0
Choose a base branch
from

Conversation

santostelmo
Copy link

@santostelmo santostelmo commented Jul 29, 2022

std-odoo and others added 2 commits July 29, 2022 09:22
Purpose
=======
As it has been done for Gmail, we want to add the OAuth authentication
for the incoming / outgoing mail server.

Specifications
==============
The user has to create a project on Outlook and fill the credentials
in Odoo. Once it's done, he can create an incoming / outgoing mail
server.

For the authentication flow is a bit different from Gmail. For Outlook
the user is redirected to Outlook where he'll accept the permission.
Once it's done, he's redirected again to the mail server form view and
the tokens are automatically added on the mail server.

Technical
=========
There are 3 tokens used for the OAuth authentication.
1. The authentication code. This one is only used to get the refresh
   token and the first access token. It's the code returned by the user
   browser during the authentication flow.
2. The refresh token. This one will never change once the user is
   authenticated. This token is used to get new access token once they
   are expired.
3. The access token. Those tokens have an expiration date (1 hour) and
   are used in the XOAUTH2 protocol to authenticate the IMAP / SMTP
   connection.

During the authentication process, we can also give a state that will
be returned by the user browser. This state contains
1. The model and the ID of the mail server (as the same mixin manage
   both incoming and outgoing mail server)
2. A CSRF token which sign those values and is verified once the browser
   redirect the user to the Odoo database. This is useful so a malicious
   user can not send a link to an admin to disconnect the mail server.

Task-2751996

Part-of: odoo#87040
@KKamaa
Copy link

KKamaa commented Apr 5, 2023

@santostelmo @thomaspaulb We need to include the _smtp_login implementation as shown here then replace it with connection.login(smtp_user, smtp_password) to mail_server._smtp_login(connection, smtp_user, smtp_password) but in this case the super will call connection.login(smtp_user, smtp_password) and we check if self.use_microsoft_outlook_service is set to True so that we can authenticate using MS outlook api steps. as you made it in _smtp_login. Otherwise we are getting an authentication error when using this module with ms outlook token.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants