Vertec Python Modul "vtcauth"

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

Erstellt: 16.05.2025
Aktualisiert: 07.05.2025 | Aus Artikel Vertec Python Funktionen ausgelagert.

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:
  • AccessToken
  • RefreshToken
  • ApplicationID
  • ApplicationSecret

Die Properties müssen inkl. prefix genau so bezeichnet werden: {prefix}Name. Für den Präfix "Outlook" also OutlookAccessToken, OutlookRefreshToken etc.

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 False, kann aber im mitgegebenen config mit True übersteuert werden. Liefert Informationen über die Authentisierung als Output in der Python Konsole.

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 True. Kann mit False übersteuert werden, falls die Anmeldung als Applikation erfolgen soll.

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 query.

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.

Beispiel

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.

Stub File

Das Modul vtcauth wird auch als Stub File mitgeliefert.

Netherlands

United Kingdom