Auth0으로 Python CLI 애플리케이션 보호

Auth0과 함께 장치 인증 흐름을 사용하여 보호되는 Python CLI 애플리케이션을 빌드합니다.






개발자는 매일 CLI와 상호 작용하여 라이브러리를 설치하고, 애플리케이션을 실행하고, 코드를 확인하는 등의 작업을 할 것입니다. 따라서 자동화를 위한 CLI의 잠재력과 몇 가지 작업을 수행하는 것이 얼마나 간단한지 깨닫게 됩니다. 그러나 이것이 CLI 애플리케이션의 유일한 사용 사례는 아닙니다. 터미널이 우리의 유일한 선택이고 CLI 애플리케이션이 필수인 시각적 환경에 대한 액세스 권한조차 없는 상황이 있습니다.

CLI를 구축할 때 프라이빗 API와 상호 작용해야 하거나 애플리케이션에 액세스하는 사용자의 유효성을 검사해야 할 수 있습니다. 두 경우 모두 애플리케이션에 인증을 추가해야 합니다. 그러나 문제는 이를 수행하는 가장 좋은 방법은 무엇입니까?

그것이 오늘 이 기사의 초점입니다. CLI 응용 프로그램에 대한 인증 방법과 해당 사용 사례를 살펴보고 Python 및 Auth0을 사용하여 고유한hello to me CLI를 구축합니다.

권한 부여 흐름



CLI 애플리케이션에 가장 적합한 것authentication flow을 선택할 때 사용 사례를 먼저 고려해야 합니다.

사용 가능한 three options when it comes to CLIs 가 있으며 오늘은 가장 안전한 방법인 device authorization flow 에 집중할 것이며 Auth0 덕분에 Universal Login 의 모든 기능과 쉽게 통합할 수 있습니다. 이 게시물의 뒷부분에서 조치를 취하십시오.

장치 흐름 작동 방식



사용자를 직접 인증하는 대신 장치 흐름을 통해 응용 프로그램은 사용자에게 웹 사이트에 액세스하고 그곳에서 장치(이 경우 CLI)를 인증하는 지침을 제공합니다.

이 흐름은 스마트 TV 및 기타 IoT 기기의 도입으로 최근 몇 년 동안 인기를 얻었습니다. 예를 들어 TV에서 휴대전화의 YouTube 앱으로 이동하여 사용자 프로필에 액세스하기 위한 코드를 확인하도록 요청합니다.

흐름 세부 정보를 알아보려면 device flow guide을 읽어 보는 것이 좋습니다.

샘플 애플리케이션



앞에서 언급했듯이 Python을 사용하여 hello to me CLI 응용 프로그램을 빌드합니다. CLI는 장치 흐름을 사용하여 사용자를 인증하고 인증 프로세스가 완료되면 사용자에 대한 정보를 추출하여 화면에 표시합니다.

프로젝트의 디렉토리를 생성하여 시작하겠습니다.

mkdir awesome-cli
cd awesome-cli


다음으로 가상 환경을 만들고 활성화합니다. 저는 Python's integrated VENV 을 사용하지만 pipenv , conda 또는 다른 것을 사용할 수 있습니다.

python3 -m venv venv
source venv/bin/activate


다음으로 몇 가지 종속 항목을 설치해야 합니다. 다음은 목록과 이를 설정하는 명령입니다.

  • typer : Typer는 CLI 응용 프로그램을 빌드하기 위한 라이브러리입니다.

  • auth0-python : 토큰의 유효성을 검사하는 데 사용할 Auth0의 Python SDK입니다.

  • requests : HTTP 호출을 수행합니다.

  • pip install auth0-python requests typer
    


    마지막으로 앱의 스켈레톤을 빌드하고 실행해 보겠습니다.

    touch main.py
    


    그런 다음 파일main.py을 열고 다음 코드를 붙여넣습니다.

    import time
    
    from auth0.v3.authentication.token_verifier import TokenVerifier, AsymmetricSignatureVerifier
    import jwt
    import requests
    import typer
    
    app = typer.Typer()
    
    @app.command()
    def say_hi():
        print(f"Hello world!")
    
    if __name__ == "__main__":
        app()
    


    마지막으로 실행하려면 다음을 수행하십시오.

    python main.py
    


    모두 정상이면 터미널에 메시지Hello world!가 표시되어야 합니다.

    Because we added only one command, we can run the file, and Typer will automatically execute it. If you have more than one command, you must provide the wanted command to run it by doing something like python main.py say-hi.



    Read more...

    좋은 웹페이지 즐겨찾기