Skip to content

Releases: intility/fastapi-azure-auth

3.1.0 - Trio support

24 Oct 17:31
80cc7aa
Compare
Choose a tag to compare

Features

  • Trio support, by replacing aiohttp with httpx( @JonasKs #34 )
    • Testsuite is now running on both asyncio and trio, using anyio. aioresponses has been replaced with respx
    • Since FastAPI version 0.69.0, trio is officially supported

3.0.3 - Fix syntax for FastAPI version

13 Oct 08:41
Compare
Choose a tag to compare

Fixes

3.0.2 - Loosen FastAPI version requirement

10 Oct 11:16
8075e6a
Compare
Choose a tag to compare

Fixes

  • Loosen FastAPI version requirement, allowing installation of this module on FastAPI 0.70.0+ ( @bmoore #28 )
    • Add Python3.10 and FastAPI==0.70.0 to pipeline matrix ( @JonasKs #28 )

3.0.1 - Cryptography requirement upgrade and documentation fixes

01 Oct 14:37
7a161fc
Compare
Choose a tag to compare

Fixes

  • Multi-tenant schema documentation ( #20 @sondrelg )
  • Multiple errors in the documentation ( #22 @daniwk )
  • Update cryptography requirement to ^35.0.0 and fix imports ( #26 @bmoore )

3.0.0 - Rewrite, v2 token support, single- and multi-tenant support

10 Sep 14:23
Compare
Choose a tag to compare

This release contains breaking changes for how to setup your application, but also a bunch of new features.

The new documentation contains a full tutorial on how to configure Azure AD and FastAPI for both single- and multi-tenant applications.

Features

  • Add v2 token support (and default) for single-tenant applications.
  • Full multi-tenant support
    • Option to provide a callable which returns valid iss(issuers), for those who has multi-tenant applications, but only for specific tenants

Other

  • User object is reworked, now also contain access_token for easier Azure Graph implementation
  • Add support for denying requests with wrong scopes, when Securiy() is used (an alternativ to Depends())
  • Moved InvalidAuth to exceptions.py
  • Documentation for everything from role checks, guest users, locking down tenants etc.
  • No longer inheriting OAuth2AuthorizationCodeBearer, solving mypy errors.
  • Rename provider_config.py to openid_config.py and ProviderConfig() to OpenIdConfig()
  • Removal of pre-instance of provider_config due to OpenAPI authorization URL issues. This is now instanced on SingleTenantAzureAuthorizationCodeBearer or MultiTenantAzureAuthorizationCodeBearer.

Features implemented in #16 ( @JonasKs )

3.0.0-rc1 - Release candidate

01 Sep 08:31
Compare
Choose a tag to compare
Pre-release

Release candidate for 3.0.0.

Release notes will be written for the actual release.

2.0.1 - Make `upn` an optional field in the `User` model

18 Aug 15:30
a555968
Compare
Choose a tag to compare

Fixes

  • Make upn an optional field in the User model, to support Client Credential Flow ( #12 @JonasKs )

2.0.0 - `FastAPI` application is no longer passed to the `AzureAuthorizationCodeBearer`

18 Aug 14:11
db2d852
Compare
Choose a tag to compare

Breaking changes

  • Removal of app parameter from AzureAuthorizationCodeBearer
  • AzureAuthorizationCodeBearer now returns a User object instead of a dictionary with claims

Other

  • Documentation on how to create your own dependencies for checking roles, scp or similar
  • Add docs on how to load provider config on startup, it is no longer auto-loaded by AzureAuthorizationCodeBearer

Related MR: #11 by @JonasKs


Upgrade guide from v1 to v2
I strongly suggest reading the entire README.md again, as it's a bit more verbose compared to before.
With that said, these are the steps you have to do in order to bump from v1 to v2:

  1. Remove app=app from your AzureAuthorizationCodeBearer() in main.py.
  2. If you have a dependencies.py file or similar, move the azure_scheme = AzureAuthorizationCodeBearer( ... ) to that file.
    2.1. In your main.py, import azure_scheme from dependencies.py
  3. In your main.py file, load the provider config on startup:
@app.on_event('startup')
async def load_config() -> None:
    """
    Load config on startup.
    """
    await provider_config.load_config()
  1. If you've overwritten the default tenant_id, you can also add that to load_config()
@app.on_event('startup')
async def load_config() -> None:
    """
    Load config on startup.
    """
+   provider_config.tenant_id = 'my-tenant-id' 
    await provider_config.load_config()

1.1.1 - Signature loop improvements

17 Aug 14:42
a8f108e
Compare
Choose a tag to compare

Features

  • Improve how key to validate token is chosen. It's now based on kid, instead of trying all keys ( #10 @JonasKs )

Other/Improvements

  • More test cases for validating tokens ( #10 @JonasKs )
  • Test case for refreshing of provider config ( #10 @JonasKs )
  • More comments describing patterns and choices in the code ( #10 @JonasKs )

1.1.0 - User attached to the request state

15 Aug 20:01
8122b19
Compare
Choose a tag to compare

Features

  • User attached to the request state ( #6 @JonasKs )

Improvements