Ini adalah aplikasi demo untuk menjelaskan bagaimana aliran kode OpenID Connect diimplementasikan.
$ python app.pyFlask akan memulai server web mendengarkan di semua antarmuka yang dapat digunakan untuk tujuan demo. Server web akan menggunakan https dengan sertifikat untuk localhost. Jelajahi ke https: // localhost: 5443 untuk melihat aplikasi.
Python 3.x (diuji dengan Python 3.9.1)
OpenSSL 1.0 untuk dapat melakukan versi TLS modern. Python bersama dengan 0.9.x memiliki bug yang membuat mustahil untuk memilih protokol di jabat tangan, sehingga tidak dapat terhubung ke server yang telah menonaktifkan SSLV2.
Dependensi Python dapat diinstal dengan menggunakan PIP: pip install -r requirements.txt
Settings.json digunakan sebagai file konfigurasi untuk aplikasi contoh. Ubah nilai agar sesuai dengan sistem Anda.
| Nama | Jenis | Bawaan | Keterangan |
|---|---|---|---|
issuer | rangkaian | ID dari penerbit token. Ini digunakan untuk penemuan OpenID Connect, dan memvalidasi token ID. Wajib untuk penemuan | |
client_id | rangkaian | ID untuk klien. Digunakan untuk mengotentikasi klien terhadap titik akhir server otorisasi. | |
client_secret | rangkaian | Rahasia bersama untuk digunakan untuk otentikasi terhadap titik akhir token. | |
dcr_client_id | rangkaian | ID klien klien untuk digunakan untuk pendaftaran. | |
dcr_client_secret | rangkaian | Rahasia klien klien untuk digunakan untuk pendaftaran. | |
scope | rangkaian | openid | Lingkup yang harus diminta. |
verify_ssl_server | Boolean | true | Setel ke False untuk menonaktifkan pemeriksaan sertifikat. |
debug | Boolean | false | Jika diatur ke True, Flask akan berada dalam mode debug dan menulis stacktraces jika terjadi kesalahan. Beberapa penebangan tambahan juga dicetak. |
port | nomor | 5443 | Port yang harus didengarkan server Flask |
disable_https | Boolean | false | Diatur ke true untuk dijalankan di http |
base_url | rangkaian | URL dasar yang akan ditambahkan ke pengalihan internal. Jika ini tidak dikonfigurasi, URL dasar akan diekstraksi dari permintaan pertama ke halaman indeks | |
send_parameters_via | rangkaian | query_string | Bagaimana Parameter Permintaan harus dikirim ke titik akhir otorisasi. Nilai yang valid adalah query_string , request_object atau request_uri . |
request_object_keys | Objek json | Kunci web JSON (JWK) yang digunakan untuk menandatangani JWT yang digunakan saat mengirim parameter permintaan otorisasi dengan nilai pada objek permintaan atau dengan referensi dalam permintaan URI. Misalnya:{"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"} |
| Nama | Jenis | Keterangan |
|---|---|---|
jwks_uri | Url | URL yang menunjuk ke set JWK. Wajib jika ruang lingkup OpenID diminta. |
authorization_endpoint | URL ke titik akhir otorisasi. | |
token_endpoint | Url | URL ke titik akhir token. |
registration_endpoint | Url | URL ke titik akhir pendaftaran. |
Untuk menjalankan contoh dalam wadah Docker, membangun gambar dan menjalankan wadah seperti ini.:
$ docker build -t curityio/openid-python-example .
$ docker run -ti curityio/openid-python-example
Semua pengaturan dapat diatur menggunakan variabel lingkungan dengan huruf besar. Contoh:
$ docker build -t curityio/openid-python-example
$ docker run -e DEBUG=true -e ISSUER=se.curity -ti curityio/openid-python-example Di akar repositori, ada docker-compose.yml . Kustomisasi pengaturan menggunakan variabel lingkungan dengan huruf besar.
$ docker-compose upUntuk pertanyaan dan dukungan, hubungi Curity AB:
Curity AB
[email protected] https://curity.io
Hak Cipta (C) 2016 Curity AB.