Skip to content

Instantly share code, notes, and snippets.

@MaxClerkwell
Created April 13, 2023 11:40
Show Gist options
  • Save MaxClerkwell/32c6c4451fa5e67c1e0a97f0a761c69e to your computer and use it in GitHub Desktop.
Save MaxClerkwell/32c6c4451fa5e67c1e0a97f0a761c69e to your computer and use it in GitHub Desktop.
#!python3
import tkinter as tk
from tkinter import messagebox
import requests
# Keycloak-Konfiguration
keycloak_url = "https://your-keycloak-server/auth/realms/your-realm/protocol/openid-connect/token"
client_id = "your-client-id"
client_secret = "your-client-secret"
def get_keycloak_token(username, password):
data = {
"grant_type": "password",
"client_id": client_id,
"client_secret": client_secret,
"username": username,
"password": password
}
response = requests.post(keycloak_url, data=data)
if response.status_code == 200:
return response.json()["access_token"]
else:
return None
def login():
username = username_entry.get()
password = password_entry.get()
global token
token = get_keycloak_token(username, password)
if token:
messagebox.showinfo("Erfolg", "Anmeldung erfolgreich")
else:
messagebox.showerror("Fehler", "Anmeldung fehlgeschlagen")
def get_data():
if not token:
messagebox.showerror("Fehler", "Bitte melden Sie sich zuerst an")
return
api_url = "https://api.gruppe.ai/test"
headers = {"Authorization": f"Bearer {token}"}
response = requests.get(api_url, headers=headers)
if response.status_code == 200:
messagebox.showinfo("API-Antwort", response.text)
else:
messagebox.showerror("Fehler", f"API-Anfrage fehlgeschlagen: {response.status_code}")
# Tkinter-Anwendung
root = tk.Tk()
root.title("Keycloak-Anmeldung")
username_label = tk.Label(root, text="Benutzername:")
username_label.grid(row=0, column=0)
username_entry = tk.Entry(root)
username_entry.grid(row=0, column=1)
password_label = tk.Label(root, text="Passwort:")
password_label.grid(row=1, column=0)
password_entry = tk.Entry(root, show="*")
password_entry.grid(row=1, column=1)
login_button = tk.Button(root, text="Anmelden", command=login)
login_button.grid(row=2, column=0, columnspan=2)
get_data_button = tk.Button(root, text="Daten abrufen", command=get_data)
get_data_button.grid(row=3, column=0, columnspan=2)
token = None
root.mainloop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment