Created
April 13, 2023 11:40
-
-
Save MaxClerkwell/32c6c4451fa5e67c1e0a97f0a761c69e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!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