Este é um aplicativo de demonstração para explicar como o fluxo de código de conexão OpenID é implementado.
$ python app.pyO Flask iniciará um servidor da Web ouvindo todas as interfaces que podem ser usadas para fins de demonstração. O servidor da web usará HTTPS com um certificado para localhost. Navegue para https: // localhost: 5443 para ver o aplicativo.
Python 3.x (testado com Python 3.9.1)
OpenSSL 1.0 para poder fazer versões modernas do TLS. O Python, juntamente com 0.9.x, possui um bug que impossibilita a seleção de protocolo no aperto de mão, para que não possa se conectar aos servidores que desativaram o SSLV2.
As dependências do Python podem ser instaladas usando o PIP: pip install -r requirements.txt
Settings.json é usado como um arquivo de configuração para o aplicativo Exemplo. Altere os valores para corresponder ao seu sistema.
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
issuer | corda | O ID do emissor do token. Isso é usado para a descoberta do OpenID Connect e a validação de um token de identificação. Obrigatório para a descoberta | |
client_id | corda | O id para o cliente. Usado para autenticar o cliente em relação ao terminal do servidor de autorização. | |
client_secret | corda | O segredo compartilhado a ser usado para autenticação contra o terminal do token. | |
dcr_client_id | corda | O ID do cliente do cliente para usar para registro. | |
dcr_client_secret | corda | O segredo do cliente do cliente para usar para registro. | |
scope | corda | openid | Os escopos para pedir. |
verify_ssl_server | booleano | true | Defina como false para desativar verificações de certificado. |
debug | booleano | false | Se definido como true, o Flask estará no modo de depuração e gravará Stacktraces se ocorrer um erro. Alguns registros extras também são impressos. |
port | número | 5443 | A porta que o servidor Flask deve ouvir |
disable_https | booleano | false | Definido como true para executar no http |
base_url | corda | URL base a ser adicionado aos redirecionamentos internos. Se isso não estiver configurado, o URL base será extraído da primeira solicitação para a página de índice | |
send_parameters_via | corda | query_string | Como os parâmetros de solicitação devem ser enviados ao terminal de autorização. Os valores válidos são query_string , request_object ou request_uri . |
request_object_keys | Objeto json | A JSON Web Key (JWK) usada para assinar os JWTs usados ao enviar parâmetros de solicitação de autorização por valor em um objeto de solicitação ou por referência em um URI de solicitação. Por exemplo:{"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"} |
| Nome | Tipo | Descrição |
|---|---|---|
jwks_uri | Url | O URL que aponta para o conjunto da JWK. Obrigatório se o escopo OpenID for solicitado. |
authorization_endpoint | O URL para o terminal de autorização. | |
token_endpoint | Url | O URL para o ponto final do token. |
registration_endpoint | Url | O URL para o terminal de registro. |
Para executar o exemplo em um contêiner do Docker, construa uma imagem e execute um contêiner como este.:
$ docker build -t curityio/openid-python-example .
$ docker run -ti curityio/openid-python-example
Toda a configuração pode ser definida usando uma variável de ambiente com letras maiúsculas. Exemplo:
$ docker build -t curityio/openid-python-example
$ docker run -e DEBUG=true -e ISSUER=se.curity -ti curityio/openid-python-example Na raiz do repositório, há um docker-compose.yml . Personalize as configurações usando variáveis de ambiente com letras maiúsculas.
$ docker-compose upPara perguntas e apoio, entre em contato com a Curity AB:
Curidade ab
[email protected] https://curity.io
Copyright (c) 2016 Curidade AB.