Il s'agit d'une application de démonstration pour expliquer comment le flux de code de connexion OpenID est implémenté.
$ python app.pyFlask démarrera un serveur Web écoutant sur toutes les interfaces qui peuvent être utilisées à des fins de démonstration. Le serveur Web utilisera HTTPS avec un certificat pour LocalHost. Parcourez les https: // localhost: 5443 pour voir l'application.
Python 3.x (testé avec Python 3.9.1)
OpenSSL 1.0 pour pouvoir faire des versions TLS modernes. Python avec 0.9.x a un bug qui rend impossible de sélectionner le protocole dans la poignée de main, il ne peut donc pas se connecter aux serveurs qui ont désactivé SSLV2.
Les dépendances Python peuvent être installées en utilisant PIP: pip install -r requirements.txt
Settings.json est utilisé comme fichier de configuration pour l'exemple de l'application. Modifiez les valeurs pour correspondre à votre système.
| Nom | Taper | Défaut | Description |
|---|---|---|---|
issuer | chaîne | L'ID de l'émetteur de jeton. Ceci est utilisé à la fois pour la découverte de connexion OpenID et la validation d'un jeton ID. Obligatoire pour la découverte | |
client_id | chaîne | L'ID pour le client. Utilisé pour authentifier le client par rapport au point de terminaison du serveur d'autorisation. | |
client_secret | chaîne | Le secret partagé à utiliser pour l'authentification contre le point de terminaison du jeton. | |
dcr_client_id | chaîne | L'ID client du client à utiliser pour l'inscription. | |
dcr_client_secret | chaîne | Le secret du client du client à utiliser pour l'inscription. | |
scope | chaîne | openid | Les lunettes à demander. |
verify_ssl_server | booléen | true | Défini sur FALSE pour désactiver les vérifications de certificat. |
debug | booléen | false | S'il est défini sur true, FLASK sera en mode de débogage et écrivez Stacktraces si une erreur se produit. Un journal supplémentaire est également imprimé. |
port | nombre | 5443 | Le port que le serveur Flask devrait écouter |
disable_https | booléen | false | Réglé sur true pour fonctionner sur http |
base_url | chaîne | URL de base à ajouter aux redirections internes. Si cela n'est pas configuré, l'URL de base sera extraite de la première demande à la page d'index | |
send_parameters_via | chaîne | query_string | Comment les paramètres de demande doivent être envoyés au point de terminaison de l'autorisation. Les valeurs valides sont query_string , request_object ou request_uri . |
request_object_keys | Objet JSON | La touche Web JSON (JWK) a utilisé pour signer JWTS utilisé lors de l'envoi de paramètres de demande d'autorisation par valeur dans un objet de demande ou par référence dans une demande URI. Par exemple:{"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"} |
| Nom | Taper | Description |
|---|---|---|
jwks_uri | URL | L'URL qui pointe vers l'ensemble JWK. Obligatoire si la portée OpenID est demandée. |
authorization_endpoint | L'URL du point de terminaison de l'autorisation. | |
token_endpoint | URL | L'URL au point de terminaison du jeton. |
registration_endpoint | URL | L'URL au point de terminaison de l'enregistrement. |
Pour exécuter l'exemple dans un conteneur Docker, créez une image et exécutez un conteneur comme celui-ci.:
$ docker build -t curityio/openid-python-example .
$ docker run -ti curityio/openid-python-example
Tous les paramètres peuvent être définis à l'aide d'une variable d'environnement avec des lettres majuscules. Exemple:
$ docker build -t curityio/openid-python-example
$ docker run -e DEBUG=true -e ISSUER=se.curity -ti curityio/openid-python-example Dans la racine du référentiel, il y a un docker-compose.yml . Personnalisez les paramètres à l'aide de variables d'environnement avec des lettres majuscules.
$ docker-compose upPour les questions et le soutien, contactez CURITY AB:
CURITY AB
[email protected] https://curity.io
Copyright (C) CURITY 2016 AB.