Skip to main content


Hi everyone,

Context

I’ve encountered several machines where multiple Teams accounts (professional, personal, etc.) were registered, and removing them from the system proved to be quite difficult.

I looked into various solutions, but many of the recommended methods didn’t work in my case. Every time I opened Microsoft Teams, the accounts would reappear.

Here are some of the resources I consulted:

  •     https://support.microsoft.com/en-us/office/sign-out-or-remove-an-account-from-microsoft-teams-a6d76e69-e1dd-4bc4-8e5f-04ba48384487
  •     https://learn.microsoft.com/en-us/answers/questions/2202933/how-do-i-delete-an-old-teams-account-on-mac
  •     etc.

 

What actually worked for me

I manually removed the following items from Keychain Access:

  •     OneAuthAccount
  •     login.windows.net
  •     authority_map

Another effective solution was using a script that I adapted to fit my needs.

Hopefully, this can help someone.

#!/bin/zsh

# Original by PAUL BOWDEN - Completely remove Microsoft Office
# Change to remove credentials only - keeps Microsoft Office license

echo "Effacement des credentials uniquement"

GetLoggedInUser() {
LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}')
if t "$LOGGEDIN" = "" ]; then
echo "$USER"
else
echo "$LOGGEDIN"
fi
}

SetHomeFolder() {
HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2)
if "$HOME" = "" ]; then
if ; -d "/Users/$1" ]; then
HOME="/Users/$1"
else
HOME=$(eval echo "~$1")
fi
fi
}

## Main
LoggedInUser=$(GetLoggedInUser)
SetHomeFolder "$LoggedInUser"
echo "Office-Reset: Utilisateur: $LoggedInUser; Home: $HOME"

echo "Quitter toutes les applications"
/usr/bin/pkill -HUP 'Microsoft Word'
/usr/bin/pkill -HUP 'Microsoft Excel'
/usr/bin/pkill -HUP 'Microsoft PowerPoint'
/usr/bin/pkill -HUP 'Microsoft Outlook'
/usr/bin/pkill -HUP 'Microsoft OneNote'
/usr/bin/pkill -f 'Microsoft Teams'

# Fonctions de vérification des entrées keychain
FindEntryOpenTech() {
/usr/bin/security find-generic-password -G 'MSOpenTech.ADAL.1' 2>/dev/null 1>/dev/null
echo $?
}
FindEntryOfficeData() {
/usr/bin/security find-generic-password -G 'Microsoft Office Data' 2>/dev/null 1>/dev/null
echo $?
}
FindEntryHelpShift() {
/usr/bin/security find-generic-password -l 'com.helpshift.data_com.microsoft.Outlook' 2>/dev/null 1>/dev/null
echo $?
}
FindEntryRMSCredential() {
/usr/bin/security find-generic-password -l 'MicrosoftOfficeRMSCredential' 2>/dev/null 1>/dev/null
echo $?
}
FindEntryExchange() {
/usr/bin/security find-generic-password -l 'Exchange' 2>/dev/null 1>/dev/null
echo $?
}
FindEntryTeamsIdentity() {
/usr/bin/security find-generic-password -l 'Microsoft Teams Identities Cache' 2>/dev/null 1>/dev/null
echo $?
}

# Suppression des entrées Keychain (avec boucles pour multiples entrées)
echo "Suppression des entrées keychain..."
/usr/bin/security delete-generic-password -s 'OneAuthAccount' 2>/dev/null
/usr/bin/security delete-internet-password -s 'msoCredentialSchemeADAL' 2>/dev/null
/usr/bin/security delete-internet-password -s 'msoCredentialSchemeLiveId' 2>/dev/null

while nu $(FindEntryOpenTech) -eq 0 ]]; do
/usr/bin/security delete-generic-password -G 'MSOpenTech.ADAL.1' 2>/dev/null
done

while do $(FindEntryOfficeData) -eq 0 ]]; do
/usr/bin/security delete-generic-password -G 'Microsoft Office Data' 2>/dev/null
done

/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Cache 2' 2>/dev/null
/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Cache 3' 2>/dev/null
/usr/bin/security delete-generic-password -l 'Microsoft Office Ticket Cache' 2>/dev/null
/usr/bin/security delete-generic-password -l 'com.microsoft.adalcache' 2>/dev/null
/usr/bin/security delete-generic-password -l 'com.microsoft.OutlookCore.Secret' 2>/dev/null

while nu $(FindEntryHelpShift) -eq 0 ]]; do
/usr/bin/security delete-generic-password -l 'com.helpshift.data_com.microsoft.Outlook' 2>/dev/null
done

while do $(FindEntryRMSCredential) -eq 0 ]]; do
/usr/bin/security delete-generic-password -l 'MicrosoftOfficeRMSCredential' 2>/dev/null
done

while do $(FindEntryExchange) -eq 0 ]]; do
/usr/bin/security delete-generic-password -l 'Exchange' 2>/dev/null
done

# Teams credentials (avec boucle)
while ec $(FindEntryTeamsIdentity) -eq 0 ]]; do
/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'Microsoft Teams Identities Cache' 2>/dev/null
done
/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'Teams Safe Storage' 2>/dev/null

# OneDrive credentials
/usr/bin/security delete-generic-password -l 'OneDrive Standalone Cached Credential' 2>/dev/null
/usr/bin/security delete-generic-password -s 'com.microsoft.onedrive.cookies' 2>/dev/null

# Suppression des fichiers de credentials (préservation des licences)
echo "Suppression des fichiers de credentials (licences préservées)..."
/bin/rm -rf "$HOME/Library/Group Containers/UBF8T346G9.com.microsoft.oneauth" 2>/dev/null
/bin/rm -rf "$HOME/Library/Containers/com.microsoft.RMS-XPCService" 2>/dev/null

# Nettoyage base de données keychain
KEYCHAIN_2_PATH=$(find "$HOME/Library/Keychains" -name "keychain-2.db" 2>/dev/null | head -n1)
if / -n "$KEYCHAIN_2_PATH" ]; then
/usr/bin/sqlite3 "$KEYCHAIN_2_PATH" "DELETE FROM genp WHERE agrp='UBF8T346G9.com.microsoft.identity.universalstorage';" 2>/dev/null
fi

/bin/rm -f "$HOME/Library/Keychains/Microsoft_Entity_Certificates-db" 2>/dev/null

echo "Effacement des credentials terminé"
exit 0

 

Be the first to reply!

Reply