From fca7675274bea6398e3bb7fbd5d7208e86410901 Mon Sep 17 00:00:00 2001 From: Dudi Levy <4785835+dudil@users.noreply.github.com> Date: Wed, 7 Aug 2024 14:15:23 +0300 Subject: [PATCH 1/5] Custom Policy Not Supported Fixes #41 Change read-back tfp claim to string to support custom polices --- fastapi_msal/models/id_token_claims.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastapi_msal/models/id_token_claims.py b/fastapi_msal/models/id_token_claims.py index 0e2cf80..e9d4f66 100644 --- a/fastapi_msal/models/id_token_claims.py +++ b/fastapi_msal/models/id_token_claims.py @@ -6,7 +6,7 @@ from msal.oauth2cli import oidc from pydantic import BaseModel, Field, PrivateAttr -from fastapi_msal.core import MSALPolicies, OptStr, OptStrsDict +from fastapi_msal.core import OptStr, OptStrsDict from .base_auth_model import BaseAuthModel from .user_info import UserInfo @@ -188,7 +188,7 @@ class IDTokenClaims(UserInfo, AADInternalClaims, BaseAuthModel): This claim is the time at which a user last entered credentials, represented in epoch time. """ - msal_policy: Optional[MSALPolicies] = Field(None, alias="tfp") + msal_policy: Optional[str] = Field(None, alias="tfp") """ This is the name of the policy that was used to acquire the token. """ From 6a808249e8044ee51e6261b30940ac672ba20451 Mon Sep 17 00:00:00 2001 From: Dudi Levy <4785835+dudil@users.noreply.github.com> Date: Wed, 7 Aug 2024 14:17:34 +0300 Subject: [PATCH 2/5] Align with general coding syntax (use of OptStr) --- fastapi_msal/models/id_token_claims.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastapi_msal/models/id_token_claims.py b/fastapi_msal/models/id_token_claims.py index e9d4f66..4362a7d 100644 --- a/fastapi_msal/models/id_token_claims.py +++ b/fastapi_msal/models/id_token_claims.py @@ -188,7 +188,7 @@ class IDTokenClaims(UserInfo, AADInternalClaims, BaseAuthModel): This claim is the time at which a user last entered credentials, represented in epoch time. """ - msal_policy: Optional[str] = Field(None, alias="tfp") + msal_policy: OptStr = Field(None, alias="tfp") """ This is the name of the policy that was used to acquire the token. """ From 4d19346ed737221eea0d3b2c52c19e315c94a148 Mon Sep 17 00:00:00 2001 From: Dudi Levy <4785835+dudil@users.noreply.github.com> Date: Wed, 7 Aug 2024 14:23:02 +0300 Subject: [PATCH 3/5] update ruff settings --- pyproject.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a696c78..cfe9fe6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -118,12 +118,16 @@ ignore = [ # "C901", "PLR0912", "PLR0911", "PLR0915", # Ignore print in code "T201", + # Ignore prefer absolute imports over relative imports + "TID252", + # Ignore due to possible conflicts when used with the formatter + "ISC001", ] unfixable = [ # Don't touch unused imports "F401", ] -ignore-init-module-imports = true +# ignore-init-module-imports = true [tool.ruff.lint.per-file-ignores] # avoid warnings related to __init__.py files imports From b9e5ec518298ba430548e595cb68411a9a8e8649 Mon Sep 17 00:00:00 2001 From: Dudi Levy <4785835+dudil@users.noreply.github.com> Date: Wed, 7 Aug 2024 15:32:19 +0300 Subject: [PATCH 4/5] fix mypy warning when using pydantic_settings in python 3.9 and below --- fastapi_msal/core/msal_client_config.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fastapi_msal/core/msal_client_config.py b/fastapi_msal/core/msal_client_config.py index 923bf66..c74e314 100644 --- a/fastapi_msal/core/msal_client_config.py +++ b/fastapi_msal/core/msal_client_config.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from enum import Enum from typing import ClassVar From f12268995da2b478b606c02064092b0d451cde49 Mon Sep 17 00:00:00 2001 From: Dudi Levy <4785835+dudil@users.noreply.github.com> Date: Wed, 7 Aug 2024 15:43:03 +0300 Subject: [PATCH 5/5] Update packages version of github actions --- .github/workflows/codeql-analysis.yml | 81 ++++++++++++--------------- .github/workflows/issue-manager.yml | 2 +- .github/workflows/lint.yml | 4 +- .github/workflows/publish.yml | 4 +- .github/workflows/security.yml | 2 +- 5 files changed, 41 insertions(+), 52 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index cd82b9c..5c8b157 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -1,24 +1,13 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# name: "CodeQL" on: push: - branches: [ master ] + branches: [master] pull_request: # The branches below must be a subset of the branches above - branches: [ master ] + branches: [master] schedule: - - cron: '21 22 * * 1' + - cron: "21 22 * * 1" jobs: analyze: @@ -32,40 +21,40 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'python' ] + language: ["python"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] # Learn more: # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed steps: - - name: Checkout repository - uses: actions/checkout@v2 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Checkout repository + uses: actions/checkout@v4 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹī¸ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/issue-manager.yml b/.github/workflows/issue-manager.yml index eaaa6ac..3b7df5d 100644 --- a/.github/workflows/issue-manager.yml +++ b/.github/workflows/issue-manager.yml @@ -7,7 +7,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v4 + - uses: actions/stale@v9 with: stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ef9940a..4afa920 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,9 +7,9 @@ jobs: matrix: python-version: ["3.9", "3.10", "3.11"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c0ad9e6..b448321 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,9 +16,9 @@ jobs: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.9" cache: "pip" diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 2bb8417..2738b37 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -5,6 +5,6 @@ jobs: runs-on: ubuntu-latest name: Execute the pycharm-security action steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Run PyCharm Security uses: tonybaloney/pycharm-security@master