-
Notifications
You must be signed in to change notification settings - Fork 147
Style fixes and Python best practices #91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 9 commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
9ccbcd1
Import issues
pamelafox 0bb66e7
Black reformatting
pamelafox 5ffec2e
Dont use flask-session package
pamelafox b48ad3e
Add sample
pamelafox 8bf9bd3
Use .env in b2c
pamelafox a55f6e6
Reimport os
pamelafox c27881c
Updates per comments
pamelafox a0050c6
Trailing comma
pamelafox dd2fbe8
Readme and Powershell updates
pamelafox 4b2d4d8
Update README.md
pamelafox aa116ff
readme updates
pamelafox b20c150
Address B2C issues
pamelafox e445e24
TENANT_ID vs TENANT_NAME
pamelafox bf1db53
Update app_config.py
pamelafox e89204f
Tenant name for b2c
pamelafox 7051225
Merge branch 'style-fixes' of https://github.com/pamelafox/ms-identit…
pamelafox 52c44bf
Flask-session instead of Flask-session2
pamelafox 17c6378
Updated scripts
pamelafox e9aa164
Merge branch 'style-fixes' of https://github.com/pamelafox/ms-identit…
pamelafox File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| FLASK_DEBUG=True | ||
| CLIENT_ID=<client id> | ||
| CLIENT_SECRET=<client secret> | ||
| TENANT_ID=<tenant id> | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -9,162 +9,22 @@ urlFragment: ms-identity-python-webapp | |
| --- | ||
| # Integrating Microsoft Identity Platform with a Python web application | ||
|
|
||
| ## About this sample | ||
| This is a Python web application that uses the Flask framework and the Microsoft identity platform to sign in users and make authenticated calls to the Microsoft Graph API. | ||
|
|
||
| > This sample is also available as a quickstart for the Microsoft identity platform: | ||
| [Quickstart: Add sign-in with Microsoft to a Python web app](https://docs.microsoft.com/azure/active-directory/develop/web-app-quickstart?pivots=devlang-python) | ||
| To get started with this sample, follow this tutorial: | ||
| [Quickstart: Add sign-in with Microsoft to a Python web app](https://docs.microsoft.com/azure/active-directory/develop/web-app-quickstart?pivots=devlang-python). | ||
pamelafox marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
|
|
||
| ### Overview | ||
| ## Using PowerShell scripts | ||
|
|
||
| This sample demonstrates a Python web application that signs-in users with the Microsoft identity platform and calls the Microsoft Graph. | ||
| The linked tutorial above uses the Azure portal to create the Azure AD applications and related objects. | ||
|
|
||
| 1. The python web application uses the Microsoft Authentication Library (MSAL) to obtain a JWT access token from the Microsoft identity platform (formerly Azure AD v2.0): | ||
| 2. The access token is used as a bearer token to authenticate the user when calling the Microsoft Graph. | ||
| However, if you're comfortable with PowerShell, you can use PowerShell scripts that automatically create the Azure AD applications and related objects (passwords, permissions, dependencies) for you, and then modify the applications' configuration files. To use this automation, follow the steps in the [App Creation Scripts README](./AppCreationScripts/AppCreationScripts.md). | ||
|
|
||
|  | ||
|
|
||
| ### Scenario | ||
|
|
||
| This sample shows how to build a Python web app using Flask and MSAL Python, | ||
| that signs in a user, and get access to Microsoft Graph. | ||
| For more information about how the protocols work in this scenario and other scenarios, | ||
| see [Authentication Scenarios for Azure AD](https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-scenarios). | ||
|
|
||
| ## How to run this sample | ||
|
|
||
| To run this sample, you'll need: | ||
|
|
||
| > - [Python 3](https://www.python.org/downloads/) | ||
| > - An Azure Active Directory (Azure AD) tenant. For more information on how to get an Azure AD tenant, see [how to get an Azure AD tenant.](https://docs.microsoft.com/azure/active-directory/develop/quickstart-create-new-tenant) | ||
|
|
||
|
|
||
| ### Step 1: Clone or download this repository | ||
|
|
||
| From your shell or command line: | ||
|
|
||
| ```Shell | ||
| git clone https://github.com/Azure-Samples/ms-identity-python-webapp.git | ||
| ``` | ||
|
|
||
| or download and extract [the repository .zip file](https://github.com/Azure-Samples/ms-identity-python-webapp/archive/refs/heads/master.zip). | ||
|
|
||
| > Given that the name of the sample is quite long, you might want to clone it in a folder close to the root of your hard drive, to avoid file name length limitations when running on Windows. | ||
|
|
||
| ### Step 2: Register the sample application with your Azure Active Directory tenant | ||
|
|
||
| There is one project in this sample. To register it, you can: | ||
|
|
||
| - either follow the steps [Step 2: Register the sample with your Azure Active Directory tenant](#step-2-register-the-sample-with-your-azure-active-directory-tenant) and [Step 3: Configure the sample to use your Azure AD tenant](#choose-the-azure-ad-tenant-where-you-want-to-create-your-applications) | ||
| - or use PowerShell scripts that: | ||
| - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you | ||
| - modify the applications' configuration files. | ||
|
|
||
| If you want to use this automation: | ||
|
|
||
| 1. On Windows, run PowerShell and navigate to the root of the cloned directory | ||
| 1. In PowerShell run: | ||
|
|
||
| ```PowerShell | ||
| Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force | ||
| ``` | ||
|
|
||
| 1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. | ||
| 1. In PowerShell run: | ||
|
|
||
| ```PowerShell | ||
| cd .\AppCreationScripts\ | ||
| .\Configure.ps1 | ||
| cd .. | ||
| ``` | ||
|
|
||
| > Other ways of running the scripts are described in [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) | ||
|
|
||
| If you don't want to use this automation, follow the steps below. | ||
|
|
||
| #### Choose the Azure AD tenant where you want to create your applications | ||
|
|
||
| As a first step you'll need to: | ||
|
|
||
| 1. Sign in to the [Azure portal](https://portal.azure.com) using either a work or school account or a personal Microsoft account. | ||
| 1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory**. | ||
| Change your portal session to the desired Azure AD tenant. | ||
|
|
||
| #### Register the Python Webapp (python-webapp) | ||
|
|
||
| 1. Navigate to the Microsoft identity platform for developers [App registrations](https://go.microsoft.com/fwlink/?linkid=2083908) page. | ||
| 1. Select **New registration**. | ||
| 1. When the **Register an application page** appears, enter your application's registration information: | ||
| - In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `python-webapp`. | ||
| - Change **Supported account types** to **Accounts in any organizational directory and personal Microsoft accounts (e.g. Skype, Xbox, Outlook.com)**. | ||
| - In the Redirect URI (optional) section, select **Web** in the combo-box and enter the following redirect URIs: `http://localhost:5000/getAToken`. | ||
| 1. Select **Register** to create the application. | ||
| 1. On the app **Overview** page, find the **Application (client) ID** value and record it for later. You'll need it to configure the Visual Studio configuration file for this project. | ||
| 1. Select **Save**. | ||
| 1. From the **Certificates & secrets** page, in the **Client secrets** section, choose **New client secret**: | ||
|
|
||
| - Type a key description (of instance `app secret`), | ||
| - Select a key duration of either **In 1 year**, **In 2 years**, or **Never Expires**. | ||
| - When you press the **Add** button, the key value will be displayed, copy, and save the value in a safe location. | ||
| - You'll need this key later to configure the project in Visual Studio. This key value will not be displayed again, nor retrievable by any other means, | ||
| so record it as soon as it is visible from the Azure portal. | ||
| 1. Select the **API permissions** section | ||
| - Click the **Add a permission** button and then, | ||
| - Ensure that the **Microsoft APIs** tab is selected | ||
| - In the *Commonly used Microsoft APIs* section, click on **Microsoft Graph** | ||
| - In the **Delegated permissions** section, ensure that the right permissions are checked: **User.ReadBasic.All**. Use the search box if necessary. | ||
| - Select the **Add permissions** button | ||
|
|
||
| ### Step 3: Configure the sample to use your Azure AD tenant | ||
|
|
||
| In the steps below, "ClientID" is the same as "Application ID" or "AppId". | ||
|
|
||
| #### Configure the pythonwebapp project | ||
|
|
||
| > Note: if you used the setup scripts, the changes below may have been applied for you | ||
|
|
||
| 1. Open the `app_config.py` file | ||
| 1. Find the app key `Enter_the_Tenant_Name_Here` and replace the existing value with your Azure AD tenant name. | ||
| 1. You saved your application secret during the creation of the `python-webapp` app in the Azure portal. | ||
| Now you can set the secret in environment variable `CLIENT_SECRET`, | ||
| and then adjust `app_config.py` to pick it up. | ||
| 1. Find the app key `Enter_the_Application_Id_here` and replace the existing value with the application ID (clientId) of the `python-webapp` application copied from the Azure portal. | ||
|
|
||
|
|
||
| ### Step 4: Run the sample | ||
|
|
||
| - You will need to install dependencies using pip as follows: | ||
| ```Shell | ||
| $ pip install -r requirements.txt | ||
| ``` | ||
|
|
||
| Run Flask on this project's directory (where `app.py` locates). Note that the host and port values need to match what you've set up in your redirect_uri: | ||
|
|
||
| ```Shell | ||
| $ flask run --host localhost --port 5000 | ||
| ``` | ||
|
|
||
| ## Community Help and Support | ||
|
|
||
| Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. | ||
| Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. | ||
| Make sure that your questions or comments are tagged with [`azure-active-directory` `adal` `msal` `python`]. | ||
| ## Contributing | ||
|
|
||
| If you find a bug in the sample, please raise the issue on [GitHub Issues](../../issues). | ||
|
|
||
| To provide a recommendation, visit the following [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). | ||
|
|
||
| ## Contributing | ||
|
|
||
| If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). | ||
|
|
||
| This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [[email protected]](mailto:[email protected]) with any additional questions or comments. | ||
|
|
||
| ## More information | ||
|
|
||
| For more information, see MSAL.Python's [conceptual documentation]("https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki"): | ||
|
|
||
|
|
||
| For more information about web apps scenarios on the Microsoft identity platform see [Scenario: Web app that calls web APIs](https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-web-app-call-api-overview) | ||
|
|
||
| For more information about how OAuth 2.0 protocols work in this scenario and other scenarios, see [Authentication Scenarios for Azure AD](http://go.microsoft.com/fwlink/?LinkId=394414). | ||
| This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [[email protected]](mailto:[email protected]) with any additional questions or comments. | ||
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.