นี่คือแอปพลิเคชันตัวอย่างเพื่ออธิบายว่าการไหลของรหัส OpenID Connect ถูกนำไปใช้อย่างไร
$ python app.pyFlask จะเริ่มต้นเว็บเซิร์ฟเวอร์ที่ฟังทุกส่วนที่สามารถใช้เพื่อการสาธิต เว็บเซิร์ฟเวอร์จะใช้ HTTPS พร้อมใบรับรองสำหรับ LocalHost เรียกดู https: // localhost: 5443 เพื่อดูแอพ
Python 3.x (ทดสอบด้วย Python 3.9.1)
OpenSSL 1.0 สามารถทำรุ่น TLS ที่ทันสมัย Python พร้อมกับ 0.9.x มีข้อผิดพลาดที่ทำให้ไม่สามารถเลือกโปรโตคอลในการจับมือกันได้ดังนั้นจึงไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ที่ปิดใช้งาน SSLV2 ได้
การพึ่งพา Python สามารถติดตั้งได้โดยใช้ PIP: pip install -r requirements.txt
settings.json ใช้เป็นไฟล์กำหนดค่าสำหรับแอปตัวอย่าง เปลี่ยนค่าเพื่อให้ตรงกับระบบของคุณ
| ชื่อ | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
issuer | สาย | ID ของผู้ออกโทเค็น สิ่งนี้ใช้สำหรับการค้นพบ OpenID Connect และตรวจสอบความถูกต้องของโทเค็น ID บังคับสำหรับการค้นพบ | |
client_id | สาย | ID สำหรับลูกค้า ใช้เพื่อตรวจสอบสิทธิ์ไคลเอนต์กับจุดสิ้นสุดของเซิร์ฟเวอร์การอนุญาต | |
client_secret | สาย | ความลับที่ใช้ร่วมกันเพื่อใช้สำหรับการตรวจสอบความถูกต้องกับจุดสิ้นสุดโทเค็น | |
dcr_client_id | สาย | รหัสลูกค้าของไคลเอนต์เพื่อใช้สำหรับการลงทะเบียน | |
dcr_client_secret | สาย | ความลับของลูกค้าของลูกค้าเพื่อใช้สำหรับการลงทะเบียน | |
scope | สาย | openid | ขอบเขตที่จะขอ |
verify_ssl_server | บูลีน | true | ตั้งค่าเป็นเท็จเพื่อปิดการตรวจสอบใบรับรอง |
debug | บูลีน | false | หากตั้งค่าเป็นจริง Flask จะอยู่ในโหมดดีบักและเขียน stacktraces หากเกิดข้อผิดพลาด การบันทึกเพิ่มเติมบางอย่างก็พิมพ์ออกมา |
port | ตัวเลข | 5443 | พอร์ตที่เซิร์ฟเวอร์ขวดควรฟัง |
disable_https | บูลีน | false | ตั้งค่าเป็นจริงเพื่อทำงานบน http |
base_url | สาย | URL พื้นฐานที่จะเพิ่มเข้าไปในการเปลี่ยนเส้นทางภายใน หากไม่ได้รับการกำหนดค่า URL พื้นฐานจะถูกดึงออกจากคำขอแรกไปยังหน้าดัชนี | |
send_parameters_via | สาย | query_string | วิธีการส่งพารามิเตอร์การร้องขอไปยังจุดสิ้นสุดการอนุญาต ค่าที่ถูกต้องคือ query_string , request_object หรือ request_uri |
request_object_keys | วัตถุ JSON | JSON Web Key (JWK) ใช้เพื่อลงนาม JWT ที่ใช้เมื่อส่งพารามิเตอร์การร้องขอการอนุญาตโดยค่าใช้จ่ายในวัตถุคำขอหรือโดยการอ้างอิงในคำขอ URI ตัวอย่างเช่น:{"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"} |
| ชื่อ | พิมพ์ | คำอธิบาย |
|---|---|---|
jwks_uri | url | URL ที่ชี้ไปที่ชุด JWK บังคับหากมีการร้องขอขอบเขต OpenID |
authorization_endpoint | URL ไปยังจุดสิ้นสุดการอนุญาต | |
token_endpoint | url | URL ไปยังจุดสิ้นสุดโทเค็น |
registration_endpoint | url | URL ไปยังจุดสิ้นสุดการลงทะเบียน |
ในการเรียกใช้ตัวอย่างในคอนเทนเนอร์ Docker ให้สร้างภาพและเรียกใช้คอนเทนเนอร์แบบนี้:
$ docker build -t curityio/openid-python-example .
$ docker run -ti curityio/openid-python-example
การตั้งค่าทั้งหมดสามารถตั้งค่าได้โดยใช้ตัวแปรสภาพแวดล้อมด้วยตัวอักษรตัวพิมพ์ใหญ่ ตัวอย่าง:
$ docker build -t curityio/openid-python-example
$ docker run -e DEBUG=true -e ISSUER=se.curity -ti curityio/openid-python-example ในรูทของที่เก็บจะมี docker-compose.yml ปรับแต่งการตั้งค่าโดยใช้ตัวแปรสภาพแวดล้อมด้วยตัวอักษรตัวพิมพ์ใหญ่
$ docker-compose upสำหรับคำถามและการสนับสนุนติดต่อ Curity AB:
ความโค้ง AB
[email protected] https://curity.io
ลิขสิทธิ์ (C) 2016 CURITY AB