example python openid connect client
1.0.0
이것은 OpenID Connect 코드 흐름이 어떻게 구현되는지 설명하는 데모 응용 프로그램입니다.
$ python app.py플라스크는 데모 목적으로 사용할 수있는 모든 인터페이스에서 웹 서버 청취를 시작합니다. Webserver는 LocalHost에 대한 인증서와 함께 HTTPS를 사용합니다. https : // localhost : 5443을 찾아 앱을 확인하십시오.
Python 3.x (Python 3.9.1로 테스트)
OpenSSL 1.0 최신 TLS 버전을 수행 할 수 있습니다. 0.9.x와 함께 Python에는 핸드 셰이크에서 프로토콜을 선택할 수없는 버그가 있으므로 SSLV2를 비활성화 한 서버에 연결할 수 없습니다.
PIP : pip install -r requirements.txt 사용하여 파이썬 종속성을 설치할 수 있습니다.
settings.json은 예제 앱의 구성 파일로 사용됩니다. 시스템과 일치하도록 값을 변경하십시오.
| 이름 | 유형 | 기본 | 설명 |
|---|---|---|---|
issuer | 끈 | 토큰 발급자의 ID. 이것은 OpenID Connect Discovery와 ID 토큰을 검증하는 데 사용됩니다. 발견을위한 필수 | |
client_id | 끈 | 클라이언트의 ID. 승인 서버 엔드 포인트에 대해 클라이언트를 인증하는 데 사용됩니다. | |
client_secret | 끈 | 토큰 엔드 포인트에 대한 인증을 위해 사용할 공유 비밀. | |
dcr_client_id | 끈 | 등록에 사용할 클라이언트의 클라이언트 ID. | |
dcr_client_secret | 끈 | 등록에 사용하기 위해 클라이언트의 클라이언트 비밀. | |
scope | 끈 | openid | 요청해야 할 범위. |
verify_ssl_server | 부울 | true | 인증서 검사를 비활성화하려면 False로 설정하십시오. |
debug | 부울 | false | true로 설정되면 플라스크가 디버그 모드에 있으며 오류가 발생하면 스택 트레이스를 작성합니다. 일부 추가 로깅도 인쇄됩니다. |
port | 숫자 | 5443 | 플라스크 서버가 들어야하는 포트 |
disable_https | 부울 | false | http에서 실행하도록 true로 설정하십시오 |
base_url | 끈 | 내부 리디렉션에 추가 될베이스 URL. 이 구성이 구성되지 않으면 첫 번째 요청에서 인덱스 페이지로의 기본 URL이 추출됩니다. | |
send_parameters_via | 끈 | query_string | 요청 매개 변수를 권한 부여 엔드 포인트로 전송하는 방법. 유효한 값은 query_string , request_object 또는 request_uri 입니다. |
request_object_keys | JSON 개체 | JWK (JSON Web Key)는 요청 객체에서 또는 요청 URI에서 참조로 승인 요청 매개 변수를 값으로 보낼 때 사용한 JWTS에 서명하는 데 사용되었습니다. 예를 들어:{"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 | JWK 세트를 가리키는 URL. 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에 문의하십시오.
CURITY AB
[email protected] https://curity.io
저작권 (C) 2016 Curity AB.