Esta es una aplicación de demostración para explicar cómo se implementa el flujo de código de conexión de OpenID.
$ python app.pyFlask iniciará un servidor web escuchando en todas las interfaces que se pueden utilizar para fines de demostración. El servidor web utilizará HTTPS con un certificado para localhost. Explore a https: // localhost: 5443 para ver la aplicación.
Python 3.x (probado con Python 3.9.1)
OpenSSL 1.0 para poder hacer versiones modernas de TLS. Python junto con 0.9.x tiene un error que hace que sea imposible seleccionar el protocolo en el apretón de manos, por lo que no puede conectarse a servidores que han deshabilitado SSLV2.
Las dependencias de Python se pueden instalar utilizando PIP: pip install -r requirements.txt
Settings.json se usa como un archivo de configuración para la aplicación de ejemplo. Cambie los valores para que coincida con su sistema.
| Nombre | Tipo | Por defecto | Descripción |
|---|---|---|---|
issuer | cadena | La identificación del emisor de tokens. Esto se utiliza tanto para OpenID Connect Discovery como para validar un token de identificación. Obligatorio para el descubrimiento | |
client_id | cadena | La identificación del cliente. Se utiliza para autenticar al cliente contra el punto final del servidor de autorización. | |
client_secret | cadena | El secreto compartido para usar para la autenticación contra el punto final del token. | |
dcr_client_id | cadena | La identificación del cliente del cliente para usar para el registro. | |
dcr_client_secret | cadena | El secreto del cliente del cliente para usar para el registro. | |
scope | cadena | openid | Los ámbitos para pedir. |
verify_ssl_server | booleano | true | Establecer en falso para deshabilitar las verificaciones de certificados. |
debug | booleano | false | Si se establece en True, Flask estará en modo de depuración y escribirá pilas si se produce un error. También se imprime un registro adicional. |
port | número | 5443 | El puerto que el servidor frasco debe escuchar |
disable_https | booleano | false | Establecer en verdadero para ejecutar en http |
base_url | cadena | URL base que se agregará a las redirecciones internas. Si esto no está configurado, la URL base se extraerá de la primera solicitud a la página de índice | |
send_parameters_via | cadena | query_string | Cómo se deben enviar los parámetros de solicitud al punto final de autorización. Los valores válidos son query_string , request_object o request_uri . |
request_object_keys | Objeto json | La clave web JSON (JWK) utilizada para firmar JWTS utilizadas al enviar parámetros de solicitud de autorización por valor en un objeto de solicitud o por referencia en una URI de solicitud. Por ejemplo:{"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"} |
| Nombre | Tipo | Descripción |
|---|---|---|
jwks_uri | Url | La URL que apunta al conjunto JWK. Obligatorio si se solicita el alcance de OpenID. |
authorization_endpoint | La URL al punto final de autorización. | |
token_endpoint | Url | La URL al punto final de token. |
registration_endpoint | Url | La URL al punto final de registro. |
Para ejecutar el ejemplo en un contenedor Docker, cree una imagen y ejecute un contenedor como este.:
$ docker build -t curityio/openid-python-example .
$ docker run -ti curityio/openid-python-example
Toda la configuración se puede establecer utilizando una variable de entorno con letras mayúsculas. Ejemplo:
$ docker build -t curityio/openid-python-example
$ docker run -e DEBUG=true -e ISSUER=se.curity -ti curityio/openid-python-example En la raíz del repositorio, hay un docker-compose.yml . Personalice la configuración utilizando variables de entorno con letras mayúsculas.
$ docker-compose upPara preguntas y apoyo, contactar curidad AB:
Curidad ab
[email protected] https://curity.io
Copyright (c) 2016 Curity AB.