
SAML 서비스 제공자 및 ID 제공자를 구축하기 위한 Flask 라이브러리
.. note:: 유지보수자를 찾고 있습니다. 이 프로젝트는 더 이상 유지보수되지 않습니다. 라이브러리는 제가 마지막으로 사용했을 때까지 작동했지만, 더 이상 이 프로젝트가 구축된 원래 프로젝트에서 작업하지 않습니다. 이 프로젝트의 리더십과 유지보수를 인수하는 데 관심이 있으시면 연락 주세요.
.. image:: https://travis-ci.com/timheap/flask-saml2.svg?branch=master :target: https://travis-ci.com/timheap/flask-saml2 .. image:: https://badge.fury.io/py/flask-saml2.svg :target: https://pypi.org/project/flask-saml2/ .. image:: https://readthedocs.org/projects/flask-saml2/badge/?version=latest :target: https://flask-saml2.readthedocs.io/en/latest/
이 Flask 플러그인은 SAML 서비스 제공자(Service Provider)와 ID 제공자(Identity Provider)를 모두 생성할 수 있는 기능을 제공합니다. 애플리케이션은 이 두 제공자 중 하나 또는 둘 다를 구현할 수 있습니다.
flask-saml2는 Flask 1.0+ 및 Python 3.6+에서 작동합니다.
이 패키지는 NoodleMarkets/dj-saml-idp_ 의 대폭 수정된 포크이며, 이는 다시
deforestg/dj-saml-idp_ 의 포크이고, 이는 다시 novapost/django-saml2-idp_ 의 포크입니다.
SAML의 작동 방식에 대한 전체 설명은 인터넷의 다른 가이드를 참조하세요. 빠른 소개와 이 패키지에서 사용되는 일부 용어에 대한 설명은 계속 읽어보세요.
SAML 프로토콜은 두 당사자 간의 대화입니다: ID 제공자(Identity Providers, IdP) 와 서비스 제공자(Service Providers, SP). 인증되지 않은 클라이언트(일반적으로 브라우저)가 서비스 제공자에 접속하면, 서비스 제공자는 인증 요청(AuthnRequest) 을 만들고, 자체 개인 키로 서명한 후, 클라이언트를 통해 이 요청을 ID 제공자에게 전달합니다. 클라이언트가 중앙 ID 제공자에 로그인하면, ID 제공자는 응답을 만들고 서명한 후, 이 응답을 클라이언트를 통해 요청한 서비스 제공자에게 전달합니다. 그러면 클라이언트는 중앙 ID 제공자를 통해 서비스 제공자에서 인증되며, 서비스 제공자는 인증 방법이나 관련 비밀번호에 대해 전혀 알 필요가 없습니다.
서비스 제공자와 ID 제공자의 최소한이지만 기능적인 예제 구현은 이 저장소의 examples/ 디렉토리에서 찾을 수 있습니다. 예제를 실행하려면 먼저 저장소를 클론하고 종속성을 설치하세요:
.. code-block:: console
$ git clone https://github.com/timheap/flask-saml2
$ cd flask-saml2
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install -e .
$ pip install -r tests/requirements.txt
그런 다음, 별도의 터미널 창에서 IdP와 SP를 실행하세요:
.. code-block:: console
$ cd flask-saml2
$ source venv/bin/activate
$ ./examples/idp.py
.. code-block:: console
$ cd flask-saml2
$ source venv/bin/activate
$ ./examples/sp.py
마지막으로, http://localhost:9000/ 로 이동하여 서비스 제공자 랜딩 페이지에 접속하세요.
테스트 러너는 pytest이며, 다양한 Flask 및 Python 버전에 대해 테스트를 실행하기 위해 tox를 사용합니다. 테스트는 (가상 환경에서) tox를 직접 사용하여 로컬에서 실행할 수 있습니다::
$ pip install tox
$ tox
MIT 라이선스_ 에 따라 배포됩니다.
.. _NoodleMarkets/dj-saml-idp: https://github.com/NoodleMarkets/dj-saml-idp
.. _deforestg/dj-saml-idp: https://github.com/deforestg/dj-saml-idp
.. _novapost/django-saml2-idp: https://github.com/novapost/django-saml2-idp
.. _MIT 라이선스: https://github.com/mobify/dj-saml-idp/blob/master/LICENSE