Das Vertec Python Modul "vtcauth" für die einfache Anmeldung via OAuth.
Betriebsart
Cloud Abo
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
Ab Version 6.8 gibt es das Vertec Python Modul vtcauth, um eine OAuth Authentisierung in beliebigen Schnittstellen und Python Scripts in Vertec verwenden zu können.
Dieses beinhaltet einen Decorator authenticate, welchem als Argument ein config Dictionary mitgegeben wird.
Die Parameter, welche im config Dictionary mitgegeben werden können, sind folgende in vtcauth
vorhandenen Instanzvariablen:
prefix |
Ein Präfix kann dazu verwendet werden, folgende Werte aus Vertec Properties automatisiert auszulesen und zu speichern:
Die Properties müssen inkl. prefix genau so bezeichnet werden: Wird im config ein prefix angegeben, werden diese Werte automatisch aus den Vertec Properties gelesen bzw. darin gespeichert. Wird kein prefix angegeben, müssen diese Konfigurationen einzeln im config mitgegeben werden. |
logging |
Standardwert ist |
client_id |
Entspricht der Application ID. Muss nur angegeben werden, wenn nicht via prefix abgedeckt. |
client_secret |
Entspricht dem Application Secret. Muss nur angegeben werden, wenn nicht via prefix abgedeckt. |
individual_login |
Standardwert ist |
scope |
Definiert den Umfang des Zugriffs, den die Anwendung auf die Ressourcen eines Benutzers benötigt. Standard (MS Graph): "https://graph.microsoft.com/.default offline_access" Muss nur mitgegeben werden, wenn OAuth für einen anderen Endpunkt verwendet werden soll. |
response_mode |
Standardwert ist |
redirect_uri |
Entspricht der Vertec Callback Adresse und kann nicht mit dem config übersteuert werden. |
tenant_id |
Wird bei Verwendung von MS Graph benötigt und muss dementsprechend mit dem config mitgegeben werden. |
auth_base_url |
Endpunkt für Autorisierung. Standard (MS Graph): "https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize" Muss nur mitgegeben werden, wenn OAuth für einen anderen Endpunkt verwendet werden soll. |
token_endpoint |
Endpunkt für die Tokens. Standardmässig für MS Graph ausgelegt: "https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token" Muss nur mitgegeben werden, wenn OAuth für einen anderen Endpunkt verwendet werden soll. |
access_token |
AccessToken. Muss nur angegeben werden, wenn nicht via prefix abgedeckt. |
refresh_token |
RefreshToken. Muss nur angegeben werden, wenn nicht via prefix abgedeckt. |
Der minimale Aufruf (für MS Graph) in einem Script sieht so aus:
from vtcauth import authenticate # config example using vertec properties with prefix config_prefix = { "tenant_id":"xxxxxxxxxxxxxxxxxxx.onmicrosoft.com", "prefix":"DmsSharePoint", "logging":True,} # using decorator from vtcauth with config_prefix dict @authenticate(config_prefix)
Die gesamte OAuth Authentisierung findet über den Decorator @authenticate(config_prefix)
statt.
Falls der User in der angesprochenen Applikation nicht bereits angemeldet ist, hat er für die Authentisierung eine Minute Zeit. Meldet er sich im geöffneten Login Dialog des angesprochenen Produkts nicht innerhalb von einer Minute an, gibt es ein Timeout.
Falls das Token abgelaufen oder ungültig ist, kann eine TokenExpiredException
aufgerufen werden. Diese trig-gert den OAuth Mechanismus, um neue Tokens zu holen. Ist ein RefreshToken vorhanden und gültig, wird das AccessToken mit dem RefreshToken geholt. Die Exception kann im gleichen Aufruf (standardmässig) maximal dreimal ausgeführt werden, danach wird ein Fehler geworfen.
In diesem Beispiel werden die ersten 10 Sites eines SharePoint ausgegeben (MS Graph mit OAuth Authentisierung):
import requests from vtcauth import authenticate, TokenExpiredException # config example using vertec properties with prefix config_prefix = { "tenant_id":"xxxxxxxxxxxxxxxxxxx.onmicrosoft.com", "prefix":"DmsSharePoint", "logging":True,} class SharePointSiteQuery: # using decorator from vtcauth with config_prefix dict @authenticate(config_prefix) def get_sites_with_prefix_config(self): return self.get_sites() def get_sites(self): headers = { "Authorization": "Bearer {}".format(self.access_token), "Content-Type": "application/json",} response = requests.get("https://graph.microsoft.com/v1.0/sites?search=*&$top=10", headers=headers) if response.ok: content = response.json() elif: response.status_code == requests.codes.unauthorized: raise TokenExpiredException else: print(response.json().get("error").get("code") + ' - ' + response.json().get("error").get("message")) query = SharePointSiteQuery() query.get_sites_with_prefix_config()
Die Vertec SharePoint Extension verwendet neu intern ebenfalls das Modul vtcauth. Am Betrieb der Schnittstelle ändert sich dadurch nichts.
Das Modul vtcauth
wird auch als Stub File mitgeliefert.