example python openid connect client
1.0.0
これは、OpenID Connectコードフローの実装方法を説明するデモアプリケーションです。
$ python app.pyFlaskは、デモの目的に使用できるすべてのインターフェイスでリスニングされるWebサーバーを起動します。 Webサーバーは、localhostの証明書を備えたHTTPSを使用します。 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 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オブジェクト | JSON Webキー(JWK)は、リクエストオブジェクトのValueまたはリクエスト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 | 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
Copyright(c)2016 Curity AB。