1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package davmail.exchange.auth;
21
22 import davmail.Settings;
23 import davmail.http.HttpClientAdapter;
24 import org.apache.log4j.Logger;
25
26 import java.io.IOException;
27 import java.net.URI;
28
29
30
31
32 @SuppressWarnings("unused")
33 public class O365StoredTokenAuthenticator implements ExchangeAuthenticator {
34 private static final Logger LOGGER = Logger.getLogger(O365StoredTokenAuthenticator.class);
35
36 URI ewsUrl = URI.create(Settings.getO365Url());
37
38 private String username;
39 private String password;
40 private O365Token token;
41
42 @Override
43 public void setUsername(String username) {
44 this.username = username;
45 }
46
47 @Override
48 public void setPassword(String password) {
49 this.password = password;
50 }
51
52
53
54
55
56 @Override
57 public HttpClientAdapter getHttpClientAdapter() {
58 return new HttpClientAdapter(getExchangeUri(), username, password, true);
59 }
60
61 @Override
62 public void authenticate() throws IOException {
63
64 final String clientId = Settings.getProperty("davmail.oauth.clientId", "facd6cff-a294-4415-b59f-c5b01937d7bd");
65
66 final String redirectUri = Settings.getProperty("davmail.oauth.redirectUri", Settings.getO365LoginUrl()+"/common/oauth2/nativeclient");
67
68 String tenantId = Settings.getProperty("davmail.oauth.tenantId", "common");
69
70
71 token = O365Token.load(tenantId, clientId, redirectUri, username, password);
72 if (token == null) {
73 throw new IOException("No valid refresh token found for "+username);
74 }
75 }
76
77 @Override
78 public O365Token getToken() {
79 return token;
80 }
81
82 @Override
83 public URI getExchangeUri() {
84 return ewsUrl;
85 }
86 }