pjs11@R5124614 email_filter $ more ./azure_ad_creds_test.pl
#!/usr/bin/env perl
use strict;
use Azure::AD::ClientCredentialsV2;
our $app_id = '**** MY APP ID ****';
our $secrets_id = '**** MY SECRET ID ****';
our $secrets_value = '**** MY SECRET VALUE ****';
our $tenant = '**** MY TENANT ID ****';
my $creds = Azure::AD::ClientCredentialsV2->new(
resource_id => 'https://graph.windows.net/',
client_id => $app_id,
secret_id => $secrets_value,
tenant_id => $tenant,
scope => '.default',
);
print $creds->access_token . "\n";
####
pjs11@R5124614 email_filter $ ./azure_ad_creds_test.pl
eyJ0eXAiOiJKV1QiLCJub25jZSI6IllNbHktdGJaczlCWmZGYW1HNWJNN2VubGNlVmNwSDVuVkhIWmFXQ19yTlEiLCJhbGciOiJSUzI1NiIsIng1dCI6IjJaUXBKM1VwYmpBWVhZR2FYRUpsOGxWMFRPSSIsImtpZCI6IjJaUXBKM1VwYmpBWVhZR2FYRUpsOGxWMFRPSSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9hMjVmZmY5Yy0zZjYzLTRmYjItOWE4YS1kOWJkZDAzMjFmOWEvIiwiaWF0IjoxNjYzNjEyMDA0LCJuYmYiOjE2NjM2MTIwMDQsImV4cCI6MTY2MzYxNTkwNCwiYWlvIjoiRTJaZ1lHRE04VERwK05yQ3VITWhqM0hLMDdvREFBPT0iLCJhcHBfZGlzcGxheW5hbWUiOiJNb25pdG9yaW5nIFNvbHV0aW9ucyIsImFwcGlkIjoiMjEzNTczMmYtYzYzOS00N2RhLTlhOWYtZTk0NjRmNmRmZTJiIiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvYTI1ZmZmOWMtM2Y2My00ZmIyLTlhOGEtZDliZGQwMzIxZjlhLyIsImlkdHlwIjoiYXBwIiwib2lkIjoiZGYxNTY4MmYtNTZjZC00MzA0LWFlYzgtYTRiMDMzZDIxZTM3IiwicmgiOiIwLkFSSUFuUDlmb21NX3NrLWFpdG05MERJZm1nTUFBQUFBQUFBQXdBQUFBQUFBQUFBU0FBQS4iLCJzdWIiOiJkZjE1NjgyZi01NmNkLTQzMDQtYWVjOC1hNGIwMzNkMjFlMzciLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTkEiLCJ0aWQiOiJhMjVmZmY5Yy0zZjYzLTRmYjItOWE4YS1kOWJkZDAzMjFmOWEiLCJ1dGkiOiJ6UFE1ZHBPOUkwLTFPMVQ3cm1xSEFBIiwidmVyIjoiMS4wIiwid2lkcyI6WyIwOTk3YTFkMC0wZDFkLTRhY2ItYjQwOC1kNWNhNzMxMjFlOTAiXSwieG1zX3RjZHQiOjE0MTExNDkzMDd9.Lto49B7rDNbGZdCgO9jR60Q9hjsU_oh9t6-IajRTQIhz44sq2Rmaim3oC2c9DOLamLWtzy_EmTghZdV1hpALay1VPzj2zDNK3xlZgJ0DbRZnjEgGFI8UOAioXMjflRmaQaiY5wbquTnNbuZtehcMek3aynHLusKdlxwlX_5dHf2WvpBDbD5u0eaVRdT8UiTEj08kW9D19rcQBEXC0uGOoP4IrvrBlQHOdFOK_yr5AYJhdLC2Loc7t9_qCbzIFVk3BseumRprtPTg2VPMXRx-ZX3tsCX5PMl4lDqeikNruh3dwuh70RSA7dgO71TUC_3pMib6aKViQmbtmzu0ol0wBQ
####
pjs11@R5124614 email_filter $ more ./imap_ad_clientcreds_test.pl
#!/usr/bin/env perl
use strict;
use utf8;
use URI::Escape;
use MIME::Base64;
use Mail::IMAPClient;
use Azure::AD::ClientCredentialsV2;
our $app_id = '**** MY APP ID ****';
our $secrets_id = '**** MY SECRET ID ****';
our $secrets_value = '**** MY SECRET VALUE ****';
our $tenant = '**** MY TENANT ID ****';
my $imapserver="outlook.office365.com";
my $username='tivolialertsdev@mayo.edu';
my $creds = Azure::AD::ClientCredentialsV2->new(
resource_id => 'https://graph.windows.net/',
client_id => $app_id,
secret_id => $secrets_value,
tenant_id => $tenant,
scope => '.default',
);
my $oauth_token = $creds->access_token;
print "Received token: $oauth_token\n";
my $oauth_sign = encode_base64("user=". $username ."\x01auth=Bearer ". $oauth_token ."\x01\x01", '');
# detail: https://developers.google.com/google-apps/gmail/xoauth2_protocol
print "Encoded: $oauth_sign\n";
my $imap = Mail::IMAPClient->new(
Server => $imapserver,
Port => 993,
Ssl => 1,
Uid => 1,
IgnoreSizeErrors => 1,
Debug => 1,
) or die('Can\'t connect to imap server.');
$imap->Showcredentials(1); # Massive debugging, please
$imap->authenticate('XOAUTH2', sub { return $oauth_sign }) or
die("Auth error: ". $imap->LastError);
####
Received token: eyJ0eXAiOiJKV1QiLCJub25jZSI6ImMzNzlMS2NJdzdlLXpUWldFa2ZZRTgxbERUT0pQVGQ2OVljZnBlNUJQdnMiLCJhbGciOiJSUzI1NiIsIng1dCI6IjJaUXBKM1VwYmpBWVhZR2FYRUpsOGxWMFRPSSIsImtpZCI6IjJaUXBKM1VwYmpBWVhZR2FYRUpsOGxWMFRPSSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9hMjVmZmY5Yy0zZjYzLTRmYjItOWE4YS1kOWJkZDAzMjFmOWEvIiwiaWF0IjoxNjYzNjEyOTE5LCJuYmYiOjE2NjM2MTI5MTksImV4cCI6MTY2MzYxNjgxOSwiYWlvIjoiRTJaZ1lHaTd2RTdrdXVUTzV1c1JaODVWUzkyT0FBQT0iLCJhcHBfZGlzcGxheW5hbWUiOiJNb25pdG9yaW5nIFNvbHV0aW9ucyIsImFwcGlkIjoiMjEzNTczMmYtYzYzOS00N2RhLTlhOWYtZTk0NjRmNmRmZTJiIiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvYTI1ZmZmOWMtM2Y2My00ZmIyLTlhOGEtZDliZGQwMzIxZjlhLyIsImlkdHlwIjoiYXBwIiwib2lkIjoiZGYxNTY4MmYtNTZjZC00MzA0LWFlYzgtYTRiMDMzZDIxZTM3IiwicmgiOiIwLkFSSUFuUDlmb21NX3NrLWFpdG05MERJZm1nTUFBQUFBQUFBQXdBQUFBQUFBQUFBU0FBQS4iLCJzdWIiOiJkZjE1NjgyZi01NmNkLTQzMDQtYWVjOC1hNGIwMzNkMjFlMzciLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTkEiLCJ0aWQiOiJhMjVmZmY5Yy0zZjYzLTRmYjItOWE4YS1kOWJkZDAzMjFmOWEiLCJ1dGkiOiJxS0xBemxKYmhVNmZSdFg1TXdOMUFBIiwidmVyIjoiMS4wIiwid2lkcyI6WyIwOTk3YTFkMC0wZDFkLTRhY2ItYjQwOC1kNWNhNzMxMjFlOTAiXSwieG1zX3RjZHQiOjE0MTExNDkzMDd9.Xf1n9r9iKDA2JcDThkzClKQ92Z53lcFz6yybGeSC8iPJopBQnP3IqGaEsbJx-LyZcZPi2a44SozUvzlSyVwBRpap5nffypFxjGl2rdFFZcNK6lyh3eRRA4TokTy1-sRLNxaJV7WPvMiq5U97bddEeEDAfhngcsssFqp8-GC0nA9RKX2NDuG7OOvvR1kusCauWz368X-TOBhlg0_aEKxWRiiqj7Hv8xsNTxtmEg8gppmbUEeqO8fZgGspw-1NA5jHpUOenRgBtbjH1moviuFdjFEIGJqiTXfzfAhuasFUFFqzYO1kzVggchb9Nym7qBIV7QTXs25GDEmU_HQUlZxLjA
Encoded: dXNlcj10aXZvbGlhbGVydHNkZXZAbWF5by5lZHUBYXV0aD1CZWFyZXIgZXlKMGVYQWlPaUpLVjFRaUxDSnViMjVqWlNJNkltTXpOemxNUzJOSmR6ZGxMWHBVV2xkRmEyWlpSVGd4YkVSVVQwcFFWR1EyT1ZsalpuQmxOVUpRZG5NaUxDSmhiR2NpT2lKU1V6STFOaUlzSW5nMWRDSTZJakphVVhCS00xVndZbXBCV1ZoWlIyRllSVXBzT0d4V01GUlBTU0lzSW10cFpDSTZJakphVVhCS00xVndZbXBCV1ZoWlIyRllSVXBzT0d4V01GUlBTU0o5LmV5SmhkV1FpT2lJd01EQXdNREF3TXkwd01EQXdMVEF3TURBdFl6QXdNQzB3TURBd01EQXdNREF3TURBaUxDSnBjM01pT2lKb2RIUndjem92TDNOMGN5NTNhVzVrYjNkekxtNWxkQzloTWpWbVptWTVZeTB6WmpZekxUUm1Zakl0T1dFNFlTMWtPV0prWkRBek1qRm1PV0V2SWl3aWFXRjBJam94TmpZek5qRXlPVEU1TENKdVltWWlPakUyTmpNMk1USTVNVGtzSW1WNGNDSTZNVFkyTXpZeE5qZ3hPU3dpWVdsdklqb2lSVEphWjFsSGFUZDJSVGRyZFhWVVR6VjFjMUphT0RWV1V6a3lUMEZCUVQwaUxDSmhjSEJmWkdsemNHeGhlVzVoYldVaU9pSk5iMjVwZEc5eWFXNW5JRk52YkhWMGFXOXVjeUlzSW1Gd2NHbGtJam9pTWpFek5UY3pNbVl0WXpZek9TMDBOMlJoTFRsaE9XWXRaVGswTmpSbU5tUm1aVEppSWl3aVlYQndhV1JoWTNJaU9pSXhJaXdpYVdSd0lqb2lhSFIwY0hNNkx5OXpkSE11ZDJsdVpHOTNjeTV1WlhRdllUSTFabVptT1dNdE0yWTJNeTAwWm1JeUxUbGhPR0V0WkRsaVpHUXdNekl4WmpsaEx5SXNJbWxrZEhsd0lqb2lZWEJ3SWl3aWIybGtJam9pWkdZeE5UWTRNbVl0TlRaalpDMDBNekEwTFdGbFl6Z3RZVFJpTURNelpESXhaVE0zSWl3aWNtZ2lPaUl3TGtGU1NVRnVVRGxtYjIxTlgzTnJMV0ZwZEcwNU1FUkpabTFuVFVGQlFVRkJRVUZCUVhkQlFVRkJRVUZCUVVGQlUwRkJRUzRpTENKemRXSWlPaUprWmpFMU5qZ3laaTAxTm1Oa0xUUXpNRFF0WVdWak9DMWhOR0l3TXpOa01qRmxNemNpTENKMFpXNWhiblJmY21WbmFXOXVYM05qYjNCbElqb2lUa0VpTENKMGFXUWlPaUpoTWpWbVptWTVZeTB6WmpZekxUUm1Zakl0T1dFNFlTMWtPV0prWkRBek1qRm1PV0VpTENKMWRHa2lPaUp4UzB4QmVteEtZbWhWTm1aU2RGZzFUWGRPTVVGQklpd2lkbVZ5SWpvaU1TNHdJaXdpZDJsa2N5STZXeUl3T1RrM1lURmtNQzB3WkRGa0xUUmhZMkl0WWpRd09DMWtOV05oTnpNeE1qRmxPVEFpWFN3aWVHMXpYM1JqWkhRaU9qRTBNVEV4TkRrek1EZDkuWGYxbjlyOWlLREEySmNEVGhrekNsS1E5Mlo1M2xjRno2eXliR2VTQzhpUEpvcEJRblAzSXFHYUVzYkp4LUx5WmNaUGkyYTQ0U296VXZ6bFN5VndCUnBhcDVuZmZ5cEZ4akdsMnJkRkZaY05LNmx5aDNlUlJBNFRva1R5MS1zUkxOeGFKVjdXUHZNaXE1VTk3YmRkRWVFREFmaG5nY3Nzc0ZxcDgtR0MwbkE5UktYMk5EdUc3T092dlIxa3VzQ2F1V3ozNjhYLVRPQmhsZzBfYUVLeFdSaWlxajdIdjh4c05UeHRtRWc4Z3BwbWJVRWVxTzhmWmdHc3B3LTFOQTVqSHBVT2VuUmdCdGJqSDFtb3ZpdUZkakZFSUdKcWlUWGZ6ZkFodWFzRlVGRnF6WU8xa3pWZ2djaGI5TnltN3FCSVY3UVRYczI1R0RFbVVfSFFVbFp4TGpBAQE=
Started at Mon Sep 19 13:46:59 2022
Using Mail::IMAPClient version 3.43 on perl 5.034000
Connecting with IO::Socket::SSL PeerAddr outlook.office365.com PeerPort 993 Proto tcp Timeout 600 Debug 1
Connected to outlook.office365.com
Read: * OK The Microsoft Exchange IMAP4 service is ready. [RABNADYAUABSADEANwBDAEEAMAAwADMAMQAuAG4AYQBtAHAAcgBkADEANwAuAHAAcgBvAGQALgBvAHUAdABsAG8AbwBrAC4AYwBvAG0A]
Sending: 1 AUTHENTICATE XOAUTH2
Sent 24 bytes
Read: +
Sending: dXNlcj10aXZvbGlhbGVydHNkZXZAbWF5by5lZHUBYXV0aD1CZWFyZXIgZXlKMGVYQWlPaUpLVjFRaUxDSnViMjVqWlNJNkltTXpOemxNUzJOSmR6ZGxMWHBVV2xkRmEyWlpSVGd4YkVSVVQwcFFWR1EyT1ZsalpuQmxOVUpRZG5NaUxDSmhiR2NpT2lKU1V6STFOaUlzSW5nMWRDSTZJakphVVhCS00xVndZbXBCV1ZoWlIyRllSVXBzT0d4V01GUlBTU0lzSW10cFpDSTZJakphVVhCS00xVndZbXBCV1ZoWlIyRllSVXBzT0d4V01GUlBTU0o5LmV5SmhkV1FpT2lJd01EQXdNREF3TXkwd01EQXdMVEF3TURBdFl6QXdNQzB3TURBd01EQXdNREF3TURBaUxDSnBjM01pT2lKb2RIUndjem92TDNOMGN5NTNhVzVrYjNkekxtNWxkQzloTWpWbVptWTVZeTB6WmpZekxUUm1Zakl0T1dFNFlTMWtPV0prWkRBek1qRm1PV0V2SWl3aWFXRjBJam94TmpZek5qRXlPVEU1TENKdVltWWlPakUyTmpNMk1USTVNVGtzSW1WNGNDSTZNVFkyTXpZeE5qZ3hPU3dpWVdsdklqb2lSVEphWjFsSGFUZDJSVGRyZFhWVVR6VjFjMUphT0RWV1V6a3lUMEZCUVQwaUxDSmhjSEJmWkdsemNHeGhlVzVoYldVaU9pSk5iMjVwZEc5eWFXNW5JRk52YkhWMGFXOXVjeUlzSW1Gd2NHbGtJam9pTWpFek5UY3pNbVl0WXpZek9TMDBOMlJoTFRsaE9XWXRaVGswTmpSbU5tUm1aVEppSWl3aVlYQndhV1JoWTNJaU9pSXhJaXdpYVdSd0lqb2lhSFIwY0hNNkx5OXpkSE11ZDJsdVpHOTNjeTV1WlhRdllUSTFabVptT1dNdE0yWTJNeTAwWm1JeUxUbGhPR0V0WkRsaVpHUXdNekl4WmpsaEx5SXNJbWxrZEhsd0lqb2lZWEJ3SWl3aWIybGtJam9pWkdZeE5UWTRNbVl0TlRaalpDMDBNekEwTFdGbFl6Z3RZVFJpTURNelpESXhaVE0zSWl3aWNtZ2lPaUl3TGtGU1NVRnVVRGxtYjIxTlgzTnJMV0ZwZEcwNU1FUkpabTFuVFVGQlFVRkJRVUZCUVhkQlFVRkJRVUZCUVVGQlUwRkJRUzRpTENKemRXSWlPaUprWmpFMU5qZ3laaTAxTm1Oa0xUUXpNRFF0WVdWak9DMWhOR0l3TXpOa01qRmxNemNpTENKMFpXNWhiblJmY21WbmFXOXVYM05qYjNCbElqb2lUa0VpTENKMGFXUWlPaUpoTWpWbVptWTVZeTB6WmpZekxUUm1Zakl0T1dFNFlTMWtPV0prWkRBek1qRm1PV0VpTENKMWRHa2lPaUp4UzB4QmVteEtZbWhWTm1aU2RGZzFUWGRPTVVGQklpd2lkbVZ5SWpvaU1TNHdJaXdpZDJsa2N5STZXeUl3T1RrM1lURmtNQzB3WkRGa0xUUmhZMkl0WWpRd09DMWtOV05oTnpNeE1qRmxPVEFpWFN3aWVHMXpYM1JqWkhRaU9qRTBNVEV4TkRrek1EZDkuWGYxbjlyOWlLREEySmNEVGhrekNsS1E5Mlo1M2xjRno2eXliR2VTQzhpUEpvcEJRblAzSXFHYUVzYkp4LUx5WmNaUGkyYTQ0U296VXZ6bFN5VndCUnBhcDVuZmZ5cEZ4akdsMnJkRkZaY05LNmx5aDNlUlJBNFRva1R5MS1zUkxOeGFKVjdXUHZNaXE1VTk3YmRkRWVFREFmaG5nY3Nzc0ZxcDgtR0MwbkE5UktYMk5EdUc3T092dlIxa3VzQ2F1V3ozNjhYLVRPQmhsZzBfYUVLeFdSaWlxajdIdjh4c05UeHRtRWc4Z3BwbWJVRWVxTzhmWmdHc3B3LTFOQTVqSHBVT2VuUmdCdGJqSDFtb3ZpdUZkakZFSUdKcWlUWGZ6ZkFodWFzRlVGRnF6WU8xa3pWZ2djaGI5TnltN3FCSVY3UVRYczI1R0RFbVVfSFFVbFp4TGpBAQE=
Sent 2094 bytes
Read: 1 NO AUTHENTICATE failed.
ERROR: 1 NO AUTHENTICATE failed. at /usr/local/Cellar/perl/5.34.0/lib/perl5/site_perl/5.34.0/Mail/IMAPClient.pm line 3319.
Mail::IMAPClient::authenticate(Mail::IMAPClient=HASH(0x7fcff0214058), "XOAUTH2", CODE(0x7fcfed2e4338)) called at ./imap_ad_clientcreds_test.pl line 41
Auth error: 1 NO AUTHENTICATE failed. at ./imap_ad_clientcreds_test.pl line 41.