Dies ist eine Demo -Anwendung, um zu erläutern, wie der OpenID -Connect -Code -Codebluss implementiert wird.
$ python app.pyFlask startet einen Webserver, der auf allen Schnittstellen hört, die für Demo -Zwecke verwendet werden können. Der Webserver verwendet HTTPS mit einem Zertifikat für Localhost. Durchsuchen Sie https: // localhost: 5443, um die App zu sehen.
Python 3.x (getestet mit Python 3.9.1)
OpenSSL 1.0, um moderne TLS -Versionen durchzuführen. Python zusammen mit 0.9.x hat einen Fehler, der es unmöglich macht, Protokoll im Handschlag auszuwählen, sodass es keine Verbindung zu Servern herstellen kann, die SSLV2 deaktiviert haben.
Python -Abhängigkeiten können mithilfe von PIP: pip install -r requirements.txt installiert werden.txt
Settings.json wird als Konfigurationsdatei für die Beispiel -App verwendet. Ändern Sie die Werte, die Ihrem System entsprechen.
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
issuer | Saite | Die ID des Token -Emittenten. Dies wird sowohl für die Erkennung von OpenID Connect als auch für die Validierung eines ID -Tokens verwendet. Obligatorisch für die Entdeckung | |
client_id | Saite | Die ID für den Client. Wird verwendet, um den Client mit dem Endpunkt des Autorisierungsservers zu authentifizieren. | |
client_secret | Saite | Das gemeinsame Geheimnis zur Authentifizierung gegen den Token -Endpunkt. | |
dcr_client_id | Saite | Die Client -ID des Kunden für die Registrierung verwendet. | |
dcr_client_secret | Saite | Das Kundengeheimnis des Kunden für die Registrierung verwendet. | |
scope | Saite | openid | Die Bereiche, nach denen man sich fragen sollte. |
verify_ssl_server | boolean | true | Auf false festlegen, um Zertifikatprüfungen zu deaktivieren. |
debug | boolean | false | Wenn auf True gesetzt, befindet sich Flask im Debug -Modus und schreibt Stacktraces, wenn ein Fehler auftritt. Einige zusätzliche Protokollierung werden ebenfalls gedruckt. |
port | Nummer | 5443 | Der Port, den der Flask -Server anhören sollte |
disable_https | boolean | false | Setzen Sie auf True, um auf HTTP auszuführen |
base_url | Saite | Basis -URL zu internen Weiterleitungen hinzugefügt werden. Wenn dies nicht konfiguriert ist, wird die Basis -URL aus der ersten Anforderung an die Indexseite extrahiert | |
send_parameters_via | Saite | query_string | Wie Anforderungsparameter an den Autorisierungsendpunkt gesendet werden sollten. Gültige Werte sind query_string , request_object oder request_uri . |
request_object_keys | JSON -Objekt | Der JSON-Web-Key (JWK), mit dem JWTs verwendet werden, das beim Senden von Autorisierungsanforderungsparametern nach einem Wert in einem Anforderungsobjekt oder durch Referenz in einem Anforderungs-URI verwendet wird. Zum Beispiel:{"kty":"RSA","n":"0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw","e":"AQAB","d":"X4cTteJY_gn4FYPsXB8rdXix5vwsg1FLN5E3EaG6RJoVH-HLLKD9M7dx5oo7GURknchnrRweUkC7hT5fJLM0WbFAKNLWY2vv7B6NqXSzUvxT0_YSfqijwp3RTzlBaCxWp4doFk5N2o8Gy_nHNKroADIkJ46pRUohsXywbReAdYaMwFs9tv8d_cPVY3i07a3t8MN6TNwm0dSawm9v47UiCl3Sk5ZiG7xojPLu4sbg1U2jx4IBTNBznbJSzFHK66jT8bgkuqsk0GjskDJk19Z4qwjwbsnn4j2WBii3RL-Us2lGVkY8fkFzme1z0HbIkfz0Y6mqnOYtqc0X4jfcKoAC8Q","p":"83i-7IvMGXoMXCskv73TKr8637FiO7Z27zv8oj6pbWUQyLPQBQxtPVnwD20R-60eTDmD2ujnMt5PoqMrm8RfmNhVWDtjjMmCMjOpSXicFHj7XOuVIYQyqVWlWEh6dN36GVZYk93N8Bc9vY41xy8B9RzzOGVQzXvNEvn7O0nVbfs","q":"3dfOR9cuYq-0S-mkFLzgItgMEfFzB2q3hWehMuG0oCuqnb3vobLyumqjVZQO1dIrdwgTnCdpYzBcOfW5r370AFXjiWft_NGEiovonizhKpo9VVS78TzFgxkIdrecRezsZ-1kYd_s1qDbxtkDEgfAITAG9LUnADun4vIcb6yelxk","dp":"G4sPXkc6Ya9y8oJW9_ILj4xuppu0lzi_H7VTkS8xj5SdX3coE0oimYwxIi2emTAue0UOa5dpgFGyBJ4c8tQ2VF402XRugKDTP8akYhFo5tAA77Qe_NmtuYZc3C3m3I24G2GvR5sSDxUyAN2zq8Lfn9EUms6rY3Ob8YeiKkTiBj0","dq":"s9lAH9fggBsoFR8Oac2R_E2gw282rT2kGOAhvIllETE1efrA6huUUvMfBcMpn8lqeW6vzznYY5SSQF7pMdC_agI3nG8Ibp1BUb0JUiraRNqUfLhcQb_d9GF4Dh7e74WbRsobRonujTYN1xCaP6TO61jvWrX-L18txXw494Q_cgk","qi":"GyM_p6JrXySiz1toFgKbWV-JdI3jQ4ypu9rbMWx3rQJBfmt0FoYzgUIZEVFEcOqwemRN81zoDAaa-Bk0KWNGDjJHZDdDmFhW3AN7lI-puxk_mHZGJ11rxyR8O55XLSe3SPmRfKwZI6yU24ZxvQKFYItdldUKGzO6Ia6zTKhAVRU","alg":"RS256","kid":"2011-04-29"} |
| Name | Typ | Beschreibung |
|---|---|---|
jwks_uri | URL | Die URL, die auf das JWK -Set hinweist. Obligatorisch, wenn der OpenID -Bereich angefordert wird. |
authorization_endpoint | Die URL zum Autorisierungsendpunkt. | |
token_endpoint | URL | Die URL zum Token -Endpunkt. |
registration_endpoint | URL | Die URL zum Registrierungsendpunkt. |
Um das Beispiel in einem Docker -Container auszuführen, erstellen Sie ein Bild und führen Sie einen solchen Container aus .:::
$ docker build -t curityio/openid-python-example .
$ docker run -ti curityio/openid-python-example
Alle Einstellungen können mit einer Umgebungsvariablen mit Großbuchstaben festgelegt werden. Beispiel:
$ docker build -t curityio/openid-python-example
$ docker run -e DEBUG=true -e ISSUER=se.curity -ti curityio/openid-python-example In der Wurzel des Repositorys befindet sich ein docker-compose.yml . Passen Sie die Einstellungen anhand von Umgebungsvariablen mit Großbuchstaben an.
$ docker-compose upFür Fragen und Unterstützung wenden Sie sich an Curity AB:
Kurität ab
[email protected] https://curity.io
Copyright (C) 2016 Kurität AB.