Giter VIP home page Giter VIP logo

python-flask-sso-example's Introduction

python-flask-sso-example

An example Flask application demonstrating how to use the WorkOS Python SDK to authenticate users via SSO.

Prerequisites

  • Python 3.6+

Flask Project Setup

  1. In your CLI, navigate to the directory into which you want to clone this git repo.

    $ cd ~/Desktop/
  2. Clone this git repo using your preferred secure method (HTTPS or SSH).

    # HTTPS
    $ git clone https://github.com/workos-inc/python-flask-sso-example.git

    or

    # SSH
    $ git clone [email protected]:workos-inc/python-flask-sso-example.git
  3. Navigate to the cloned repo.

    $ cd python-flask-sso-example
  4. Create and source a Python virtual environment. You should then see (env) at the beginning of your command-line prompt.

    $ python3 -m venv env
    $ source env/bin/activate
    (env) $
  5. Install the cloned app's dependencies.

    (env) $ pip install -r requirements.txt
  6. Obtain and make note of the following values. In the next step, these will be set as environment variables.

  7. Ensure you're in the root directory for the example app, python-flask-sso-example/. Create a .env file to securely store the environment variables. Open this file with the Nano text editor. (This file is listed in this repo's .gitignore file, so your sensitive information will not be checked into version control.)

    (env) $ touch .env
    (env) $ nano .env
  8. Once the Nano text editor opens, you can directly edit the .env file by listing the environment variables:

    export WORKOS_API_KEY=<value found in step 6>
    export WORKOS_PROJECT_ID=<value found in step 6>

    To exit the Nano text editor, type CTRL + x. When prompted to "Save modified buffer", type Y, then press the Enter or Return key.

  9. Source the environment variables so they are accessible to the operating system.

    (env) $ source .env

    You can ensure the environment variables were set correctly by running the following commands. The output should match the corresponding values.

    (env) $ echo $WORKOS_API_KEY
    (env) $ echo $WORKOS_PROJECT_ID
  10. In python-flask-sso-example/app.py change the CUSTOMER_EMAIL_DOMAIN string value to an email domain that makes sense for your testing purposes if the default gmail.com isn't relevant.

  11. The final setup step is to start the server.

(env) $ flask run

You'll know the server is running when you see no errors in the CLI, and output similar to the following is displayed:

* Tip: There are .env or .flaskenv files present. Do "pip install python-dotenv" to use them.
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Navigate to localhost:5000 in your web browser. You should see a "Login" button. If you click this link, you'll be redirected to an HTTP 404 page because we haven't set up SSO yet!

You can stop the local Flask server for now by entering CTRL + c on the command line.

SSO Setup with WorkOS

Follow the SSO authentication flow instructions to set up an SSO connection.

When you get to the step where you provide the REDIRECT_URI value, use http://localhost:5000/auth/callback.

If you get stuck, please reach out to us at [email protected] so we can help.

Testing the Integration

  1. Naviagte to the python-flask-sso-example directory. Source the virtual environment we created earlier, if it isn't still activated from the steps above. Start the Flask server locally.

    $ cd ~/Desktop/python-flask-sso-example/
    $ source env/bin/activate
    (env) $ flask run

    Once running, navigate to http://localhost:5000 to test out the SSO workflow.

    Hooray!

Need help?

If you get stuck and aren't able to resolve the issue by reading our API reference or tutorials, you can reach out to us at [email protected] and we'll lend a hand.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.