Hi:
I recently found the fantastic module Azure::AD::Auth. I'm trying to authenticate using oauth to Exchange 365 using an azure AD account and the oauth protocol.
Do you know anyone who has done this? Have they succeeded?
Here's what i've done:
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";
==== Got a token back using the above code! Wh00t! ====
pjs11@R5124614 email_filter $ ./azure_ad_creds_test.pl eyJ0eXAiOiJKV1QiLCJub25jZSI6IllNbHktdGJaczlCWmZGYW1HNWJNN2VubGNlVmNwSD +VuVkhIWmFXQ19yTlEiLCJhbGciOiJSUzI1NiIsIng1dCI6IjJaUXBKM1VwYmpBWVhZR2F +YRUpsOGxWMFRPSSIsImtpZCI6IjJaUXBKM1VwYmpBWVhZR2FYRUpsOGxWMFRPSSJ9.eyJ +hdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJo +dHRwczovL3N0cy53aW5kb3dzLm5ldC9hMjVmZmY5Yy0zZjYzLTRmYjItOWE4YS1kOWJkZ +DAzMjFmOWEvIiwiaWF0IjoxNjYzNjEyMDA0LCJuYmYiOjE2NjM2MTIwMDQsImV4cCI6MT +Y2MzYxNTkwNCwiYWlvIjoiRTJaZ1lHRE04VERwK05yQ3VITWhqM0hLMDdvREFBPT0iLCJ +hcHBfZGlzcGxheW5hbWUiOiJNb25pdG9yaW5nIFNvbHV0aW9ucyIsImFwcGlkIjoiMjEz +NTczMmYtYzYzOS00N2RhLTlhOWYtZTk0NjRmNmRmZTJiIiwiYXBwaWRhY3IiOiIxIiwia +WRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvYTI1ZmZmOWMtM2Y2My00ZmIyLTlhOG +EtZDliZGQwMzIxZjlhLyIsImlkdHlwIjoiYXBwIiwib2lkIjoiZGYxNTY4MmYtNTZjZC0 +0MzA0LWFlYzgtYTRiMDMzZDIxZTM3IiwicmgiOiIwLkFSSUFuUDlmb21NX3NrLWFpdG05 +MERJZm1nTUFBQUFBQUFBQXdBQUFBQUFBQUFBU0FBQS4iLCJzdWIiOiJkZjE1NjgyZi01N +mNkLTQzMDQtYWVjOC1hNGIwMzNkMjFlMzciLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiTk +EiLCJ0aWQiOiJhMjVmZmY5Yy0zZjYzLTRmYjItOWE4YS1kOWJkZDAzMjFmOWEiLCJ1dGk +iOiJ6UFE1ZHBPOUkwLTFPMVQ3cm1xSEFBIiwidmVyIjoiMS4wIiwid2lkcyI6WyIwOTk3 +YTFkMC0wZDFkLTRhY2ItYjQwOC1kNWNhNzMxMjFlOTAiXSwieG1zX3RjZHQiOjE0MTExN +DkzMDd9.Lto49B7rDNbGZdCgO9jR60Q9hjsU_oh9t6-IajRTQIhz44sq2Rmaim3oC2c9D +OLamLWtzy_EmTghZdV1hpALay1VPzj2zDNK3xlZgJ0DbRZnjEgGFI8UOAioXMjflRmaQa +iY5wbquTnNbuZtehcMek3aynHLusKdlxwlX_5dHf2WvpBDbD5u0eaVRdT8UiTEj08kW9D +19rcQBEXC0uGOoP4IrvrBlQHOdFOK_yr5AYJhdLC2Loc7t9_qCbzIFVk3BseumRprtPTg +2VPMXRx-ZX3tsCX5PMl4lDqeikNruh3dwuh70RSA7dgO71TUC_3pMib6aKViQmbtmzu0o +l0wBQ
==== ==== ^^^ Above demonstrates that I can get a token using Auth::AD::ClientCredentialsV2 ! ====
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_prot +ocol 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);
==== ==== Trying test script above: ====
Received token: eyJ0eXAiOiJKV1QiLCJub25jZSI6ImMzNzlMS2NJdzdlLXpUWldFa2 +ZZRTgxbERUT0pQVGQ2OVljZnBlNUJQdnMiLCJhbGciOiJSUzI1NiIsIng1dCI6IjJaUXB +KM1VwYmpBWVhZR2FYRUpsOGxWMFRPSSIsImtpZCI6IjJaUXBKM1VwYmpBWVhZR2FYRUps +OGxWMFRPSSJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAw +MDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9hMjVmZmY5Yy0zZjYzLTRmY +jItOWE4YS1kOWJkZDAzMjFmOWEvIiwiaWF0IjoxNjYzNjEyOTE5LCJuYmYiOjE2NjM2MT +I5MTksImV4cCI6MTY2MzYxNjgxOSwiYWlvIjoiRTJaZ1lHaTd2RTdrdXVUTzV1c1JaODV +WUzkyT0FBQT0iLCJhcHBfZGlzcGxheW5hbWUiOiJNb25pdG9yaW5nIFNvbHV0aW9ucyIs +ImFwcGlkIjoiMjEzNTczMmYtYzYzOS00N2RhLTlhOWYtZTk0NjRmNmRmZTJiIiwiYXBwa +WRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvYTI1ZmZmOWMtM2 +Y2My00ZmIyLTlhOGEtZDliZGQwMzIxZjlhLyIsImlkdHlwIjoiYXBwIiwib2lkIjoiZGY +xNTY4MmYtNTZjZC00MzA0LWFlYzgtYTRiMDMzZDIxZTM3IiwicmgiOiIwLkFSSUFuUDlm +b21NX3NrLWFpdG05MERJZm1nTUFBQUFBQUFBQXdBQUFBQUFBQUFBU0FBQS4iLCJzdWIiO +iJkZjE1NjgyZi01NmNkLTQzMDQtYWVjOC1hNGIwMzNkMjFlMzciLCJ0ZW5hbnRfcmVnaW +9uX3Njb3BlIjoiTkEiLCJ0aWQiOiJhMjVmZmY5Yy0zZjYzLTRmYjItOWE4YS1kOWJkZDA +zMjFmOWEiLCJ1dGkiOiJxS0xBemxKYmhVNmZSdFg1TXdOMUFBIiwidmVyIjoiMS4wIiwi +d2lkcyI6WyIwOTk3YTFkMC0wZDFkLTRhY2ItYjQwOC1kNWNhNzMxMjFlOTAiXSwieG1zX +3RjZHQiOjE0MTExNDkzMDd9.Xf1n9r9iKDA2JcDThkzClKQ92Z53lcFz6yybGeSC8iPJo +pBQnP3IqGaEsbJx-LyZcZPi2a44SozUvzlSyVwBRpap5nffypFxjGl2rdFFZcNK6lyh3e +RRA4TokTy1-sRLNxaJV7WPvMiq5U97bddEeEDAfhngcsssFqp8-GC0nA9RKX2NDuG7OOv +vR1kusCauWz368X-TOBhlg0_aEKxWRiiqj7Hv8xsNTxtmEg8gppmbUEeqO8fZgGspw-1N +A5jHpUOenRgBtbjH1moviuFdjFEIGJqiTXfzfAhuasFUFFqzYO1kzVggchb9Nym7qBIV7 +QTXs25GDEmU_HQUlZxLjA Encoded: dXNlcj10aXZvbGlhbGVydHNkZXZAbWF5by5lZHUBYXV0aD1CZWFyZXIgZXlKM +GVYQWlPaUpLVjFRaUxDSnViMjVqWlNJNkltTXpOemxNUzJOSmR6ZGxMWHBVV2xkRmEyWl +pSVGd4YkVSVVQwcFFWR1EyT1ZsalpuQmxOVUpRZG5NaUxDSmhiR2NpT2lKU1V6STFOaUl +zSW5nMWRDSTZJakphVVhCS00xVndZbXBCV1ZoWlIyRllSVXBzT0d4V01GUlBTU0lzSW10 +cFpDSTZJakphVVhCS00xVndZbXBCV1ZoWlIyRllSVXBzT0d4V01GUlBTU0o5LmV5SmhkV +1FpT2lJd01EQXdNREF3TXkwd01EQXdMVEF3TURBdFl6QXdNQzB3TURBd01EQXdNREF3TU +RBaUxDSnBjM01pT2lKb2RIUndjem92TDNOMGN5NTNhVzVrYjNkekxtNWxkQzloTWpWbVp +tWTVZeTB6WmpZekxUUm1Zakl0T1dFNFlTMWtPV0prWkRBek1qRm1PV0V2SWl3aWFXRjBJ +am94TmpZek5qRXlPVEU1TENKdVltWWlPakUyTmpNMk1USTVNVGtzSW1WNGNDSTZNVFkyT +XpZeE5qZ3hPU3dpWVdsdklqb2lSVEphWjFsSGFUZDJSVGRyZFhWVVR6VjFjMUphT0RWV1 +V6a3lUMEZCUVQwaUxDSmhjSEJmWkdsemNHeGhlVzVoYldVaU9pSk5iMjVwZEc5eWFXNW5 +JRk52YkhWMGFXOXVjeUlzSW1Gd2NHbGtJam9pTWpFek5UY3pNbVl0WXpZek9TMDBOMlJo +TFRsaE9XWXRaVGswTmpSbU5tUm1aVEppSWl3aVlYQndhV1JoWTNJaU9pSXhJaXdpYVdSd +0lqb2lhSFIwY0hNNkx5OXpkSE11ZDJsdVpHOTNjeTV1WlhRdllUSTFabVptT1dNdE0yWT +JNeTAwWm1JeUxUbGhPR0V0WkRsaVpHUXdNekl4WmpsaEx5SXNJbWxrZEhsd0lqb2lZWEJ +3SWl3aWIybGtJam9pWkdZeE5UWTRNbVl0TlRaalpDMDBNekEwTFdGbFl6Z3RZVFJpTURN +elpESXhaVE0zSWl3aWNtZ2lPaUl3TGtGU1NVRnVVRGxtYjIxTlgzTnJMV0ZwZEcwNU1FU +kpabTFuVFVGQlFVRkJRVUZCUVhkQlFVRkJRVUZCUVVGQlUwRkJRUzRpTENKemRXSWlPaU +prWmpFMU5qZ3laaTAxTm1Oa0xUUXpNRFF0WVdWak9DMWhOR0l3TXpOa01qRmxNemNpTEN +KMFpXNWhiblJmY21WbmFXOXVYM05qYjNCbElqb2lUa0VpTENKMGFXUWlPaUpoTWpWbVpt +WTVZeTB6WmpZekxUUm1Zakl0T1dFNFlTMWtPV0prWkRBek1qRm1PV0VpTENKMWRHa2lPa +Up4UzB4QmVteEtZbWhWTm1aU2RGZzFUWGRPTVVGQklpd2lkbVZ5SWpvaU1TNHdJaXdpZD +Jsa2N5STZXeUl3T1RrM1lURmtNQzB3WkRGa0xUUmhZMkl0WWpRd09DMWtOV05oTnpNeE1 +qRmxPVEFpWFN3aWVHMXpYM1JqWkhRaU9qRTBNVEV4TkRrek1EZDkuWGYxbjlyOWlLREEy +SmNEVGhrekNsS1E5Mlo1M2xjRno2eXliR2VTQzhpUEpvcEJRblAzSXFHYUVzYkp4LUx5W +mNaUGkyYTQ0U296VXZ6bFN5VndCUnBhcDVuZmZ5cEZ4akdsMnJkRkZaY05LNmx5aDNlUl +JBNFRva1R5MS1zUkxOeGFKVjdXUHZNaXE1VTk3YmRkRWVFREFmaG5nY3Nzc0ZxcDgtR0M +wbkE5UktYMk5EdUc3T092dlIxa3VzQ2F1V3ozNjhYLVRPQmhsZzBfYUVLeFdSaWlxajdI +djh4c05UeHRtRWc4Z3BwbWJVRWVxTzhmWmdHc3B3LTFOQTVqSHBVT2VuUmdCdGJqSDFtb +3ZpdUZkakZFSUdKcWlUWGZ6ZkFodWFzRlVGRnF6WU8xa3pWZ2djaGI5TnltN3FCSVY3UV +RYczI1R0RFbVVfSFFVbFp4TGpBAQE= 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 PeerPor +t 993 Proto tcp Timeout 600 Debug 1 Connected to outlook.office365.com Read: * OK The Microsoft Exchange IMAP4 service is ready. [RABNADY +AUABSADEANwBDAEEAMAAwADMAMQAuAG4AYQBtAHAAcgBkADEANwAuAHAAcgBvAGQALgBv +AHUAdABsAG8AbwBrAC4AYwBvAG0A] Sending: 1 AUTHENTICATE XOAUTH2 Sent 24 bytes Read: + Sending: dXNlcj10aXZvbGlhbGVydHNkZXZAbWF5by5lZHUBYXV0aD1CZWFyZXIgZXlKM +GVYQWlPaUpLVjFRaUxDSnViMjVqWlNJNkltTXpOemxNUzJOSmR6ZGxMWHBVV2xkRmEyWl +pSVGd4YkVSVVQwcFFWR1EyT1ZsalpuQmxOVUpRZG5NaUxDSmhiR2NpT2lKU1V6STFOaUl +zSW5nMWRDSTZJakphVVhCS00xVndZbXBCV1ZoWlIyRllSVXBzT0d4V01GUlBTU0lzSW10 +cFpDSTZJakphVVhCS00xVndZbXBCV1ZoWlIyRllSVXBzT0d4V01GUlBTU0o5LmV5SmhkV +1FpT2lJd01EQXdNREF3TXkwd01EQXdMVEF3TURBdFl6QXdNQzB3TURBd01EQXdNREF3TU +RBaUxDSnBjM01pT2lKb2RIUndjem92TDNOMGN5NTNhVzVrYjNkekxtNWxkQzloTWpWbVp +tWTVZeTB6WmpZekxUUm1Zakl0T1dFNFlTMWtPV0prWkRBek1qRm1PV0V2SWl3aWFXRjBJ +am94TmpZek5qRXlPVEU1TENKdVltWWlPakUyTmpNMk1USTVNVGtzSW1WNGNDSTZNVFkyT +XpZeE5qZ3hPU3dpWVdsdklqb2lSVEphWjFsSGFUZDJSVGRyZFhWVVR6VjFjMUphT0RWV1 +V6a3lUMEZCUVQwaUxDSmhjSEJmWkdsemNHeGhlVzVoYldVaU9pSk5iMjVwZEc5eWFXNW5 +JRk52YkhWMGFXOXVjeUlzSW1Gd2NHbGtJam9pTWpFek5UY3pNbVl0WXpZek9TMDBOMlJo +TFRsaE9XWXRaVGswTmpSbU5tUm1aVEppSWl3aVlYQndhV1JoWTNJaU9pSXhJaXdpYVdSd +0lqb2lhSFIwY0hNNkx5OXpkSE11ZDJsdVpHOTNjeTV1WlhRdllUSTFabVptT1dNdE0yWT +JNeTAwWm1JeUxUbGhPR0V0WkRsaVpHUXdNekl4WmpsaEx5SXNJbWxrZEhsd0lqb2lZWEJ +3SWl3aWIybGtJam9pWkdZeE5UWTRNbVl0TlRaalpDMDBNekEwTFdGbFl6Z3RZVFJpTURN +elpESXhaVE0zSWl3aWNtZ2lPaUl3TGtGU1NVRnVVRGxtYjIxTlgzTnJMV0ZwZEcwNU1FU +kpabTFuVFVGQlFVRkJRVUZCUVhkQlFVRkJRVUZCUVVGQlUwRkJRUzRpTENKemRXSWlPaU +prWmpFMU5qZ3laaTAxTm1Oa0xUUXpNRFF0WVdWak9DMWhOR0l3TXpOa01qRmxNemNpTEN +KMFpXNWhiblJmY21WbmFXOXVYM05qYjNCbElqb2lUa0VpTENKMGFXUWlPaUpoTWpWbVpt +WTVZeTB6WmpZekxUUm1Zakl0T1dFNFlTMWtPV0prWkRBek1qRm1PV0VpTENKMWRHa2lPa +Up4UzB4QmVteEtZbWhWTm1aU2RGZzFUWGRPTVVGQklpd2lkbVZ5SWpvaU1TNHdJaXdpZD +Jsa2N5STZXeUl3T1RrM1lURmtNQzB3WkRGa0xUUmhZMkl0WWpRd09DMWtOV05oTnpNeE1 +qRmxPVEFpWFN3aWVHMXpYM1JqWkhRaU9qRTBNVEV4TkRrek1EZDkuWGYxbjlyOWlLREEy +SmNEVGhrekNsS1E5Mlo1M2xjRno2eXliR2VTQzhpUEpvcEJRblAzSXFHYUVzYkp4LUx5W +mNaUGkyYTQ0U296VXZ6bFN5VndCUnBhcDVuZmZ5cEZ4akdsMnJkRkZaY05LNmx5aDNlUl +JBNFRva1R5MS1zUkxOeGFKVjdXUHZNaXE1VTk3YmRkRWVFREFmaG5nY3Nzc0ZxcDgtR0M +wbkE5UktYMk5EdUc3T092dlIxa3VzQ2F1V3ozNjhYLVRPQmhsZzBfYUVLeFdSaWlxajdI +djh4c05UeHRtRWc4Z3BwbWJVRWVxTzhmWmdHc3B3LTFOQTVqSHBVT2VuUmdCdGJqSDFtb +3ZpdUZkakZFSUdKcWlUWGZ6ZkFodWFzRlVGRnF6WU8xa3pWZ2djaGI5TnltN3FCSVY3UV +RYczI1R0RFbVVfSFFVbFp4TGpBAQE= 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(0x7fcff021405 +8), "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.
If you could offer advice or tell me who to ask, I'd be grateful!
Thank you!
-- Pat
In reply to Module use: Auth::AD::Azure, Mail::IMAPClient for Azure AD Exchange 365 by pspinler@yahoo.com
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |