Serialisierung des benutzerdefinierten Tokencaches in MSAL für Python

In der Microsoft Authentication Library (MSAL) (MSAL) für Python wird standardmäßig ein In-Memory-Tokencache bereitgestellt, der für die Dauer der App-Sitzung bestehen bleibt, wenn Sie eine Instanz von ConfidentialClientApplication erstellen.

Die Serialisierung des Tokencaches, sodass verschiedene Sitzungen Ihrer App darauf zugreifen können, wird nicht "out of the box" bereitgestellt. MSAL für Python kann in App-Typen verwendet werden, die keinen Zugriff auf das Dateisystem haben , z. B. Web-Apps. Damit ein persistenter Tokencache in einer App vorhanden ist, die MSAL für Python verwendet, müssen Sie eine benutzerdefinierte Tokencache-Serialisierung bereitstellen.

Die Strategien zum Serialisieren des Tokencaches unterscheiden sich je nachdem, ob Sie eine öffentliche Clientanwendung (Desktop) oder eine vertrauliche Clientanwendung (Web-App, Web-API oder Daemon-App) schreiben.

Tokencache für eine öffentliche Clientanwendung

Öffentliche Clientanwendungen werden auf dem Gerät eines Benutzers ausgeführt und verwalten Token für einen einzelnen Benutzer. In diesem Fall könnten Sie den gesamten Cache in eine Datei serialisieren. Denken Sie daran, die Dateisperre bereitzustellen, wenn Ihre App oder eine andere App gleichzeitig auf den Cache zugreifen kann. Ein einfaches Beispiel zum Serialisieren eines Tokencaches in eine Datei ohne Sperren finden Sie im Beispiel in der SerializableTokenCache Klassenreferenzdokumentation.

Tokencache für eine Web-App (vertrauliche Clientanwendung)

Bei Web-Apps oder Web-APIs können Sie die Sitzung oder einen Redis-Cache oder eine Datenbank verwenden, um den Tokencache zu speichern. Es sollte ein Tokencache pro Benutzer (pro Konto) vorhanden sein, damit Sie den Tokencache pro Konto serialisieren.

Nächste Schritte

Ein Beispiel für die Verwendung des Tokencaches für eine Windows- oder Linux Web-App oder Web-API finden Sie unter ms-identity-python-webapp. Das Beispiel ist für eine Web-App, die microsoft Graph-API aufruft.