AzureExtensions.Swashbuckle
2.0.1
See the version list below for details.
dotnet add package AzureExtensions.Swashbuckle --version 2.0.1
NuGet\Install-Package AzureExtensions.Swashbuckle -Version 2.0.1
<PackageReference Include="AzureExtensions.Swashbuckle" Version="2.0.1" />
<PackageVersion Include="AzureExtensions.Swashbuckle" Version="2.0.1" />
<PackageReference Include="AzureExtensions.Swashbuckle" />
paket add AzureExtensions.Swashbuckle --version 2.0.1
#r "nuget: AzureExtensions.Swashbuckle, 2.0.1"
#:package AzureExtensions.Swashbuckle@2.0.1
#addin nuget:?package=AzureExtensions.Swashbuckle&version=2.0.1
#tool nuget:?package=AzureExtensions.Swashbuckle&version=2.0.1
AzureExtensions.FunctionToken
Extension Attribute to Azure Functions v3, that allows to obrain ClaimsPrincipal on every request. Currently supports key load from Azure B2C by jwks_uri and simple JsonWebKey. Pluggable into Azure Function Startup
The extension allows you to use custom tokens in Azure Functions v3.
Step 1.
- Add the nuget AzureExtensions.FunctionToken
- Add to Startup file the following code. Currently, accepts simple JWK tokens or tokens loaded out of Azure B2C
builder.AddAzureFunctionsToken(new TokenSinginingKeyOptions()
{
SigningKey = new JsonWebKey("your key"),
Audience = "your audience",
Issuer = "your issuer"
});
OR B2C
builder.AddAzureFunctionsToken(new TokenAzureB2COptions()
{
//AzureB2CSingingKeyUri = new Uri("https://yourapp.b2clogin.com/yourapp.onmicrosoft.com/discovery/v2.0/keys?p=yourapp-policy"),
Audience = "your audience",
Issuer = "your issuer"
});
OR Firebase
builder.AddAzureFunctionsToken(new FireBaseOptions()
{
GoogleServiceAccountJsonUri = new Uri("%uri-to-storage-with-secret-json-from-google")
});
- Add it to Azure Function:
public class Example
{
[FunctionName("Example")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
[FunctionToken] FunctionTokenResult token,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return (ActionResult) new OkObjectResult($"Hello, {token}");
}
}
- By, default AuthLevel.Authorized level is used, but you can also specify AuthLevel.AllowAnonymous
[FunctionName("Example")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequestMessage req,
[FunctionToken(AuthLevel.AllowAnonymous)] FunctionTokenResult token,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult($"Hello, {token}");
}}
- Currently, AF 2.0 does not support invocation to Short Circuit, so in order to return proper 401 code when UnAuthorized, the function should be wrapped in Handler: Wrap/WrapAsync. This one will return 401 if token is invalid:
[FunctionName("Example")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequestMessage req,
[FunctionToken(AuthLevel.Authorized)] FunctionTokenResult token,
ILogger log)
{
return await Handler.WrapAsync(token,async () =>
{
log.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult($"Hello, {token}");
});
}
Also, roles as a set of strings are supported: In order the role to be validated, role ClaimTypes.Role of System.Security should be presented in a token It is also mapped to type: http://schemas.microsoft.com/ws/2008/06/identity/claims/role
[FunctionName("Example")] public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequestMessage req, [FunctionToken("Manager", "Worker")] FunctionTokenResult token, ClaimsPrincipal principal, ILogger log) { var identity = token.Principal.Claims.First(x => x.Type == ClaimTypes.NameIdentifier); return await Handler.WrapAsync(token,async () => { log.LogInformation("C# HTTP trigger function processed a request."); return new OkObjectResult($"Hello, {token}"); }); }
ClaimsPrincipal can be injected, when
builder.Services.AddHttpContextAccessor();
attached via:
var injectedPrincipal = req.HttpContext.User;
- That's it
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- Microsoft.Azure.WebJobs.Extensions.Http (>= 3.0.2)
- Swashbuckle.AspNetCore (>= 5.0.0-rc5)
- Swashbuckle.AspNetCore.Swagger (>= 5.0.0-rc5)
- System.Text.Json (>= 4.7.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on AzureExtensions.Swashbuckle:
| Package | Downloads |
|---|---|
|
Service.Extensions.Functions
Extensions to provide consistent configurations and patterns for your service. |
|
|
GarageGroup.Infra.Azure.Swagger
Package Description |
|
|
Nebularium.Cthulhu.Swagger
Biblioteca para utilização em projetos Azure Functions expond uri do swagger. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on AzureExtensions.Swashbuckle:
| Repository | Stars |
|---|---|
|
Azure-Samples/saga-orchestration-serverless
An orchestration-based saga implementation reference in a serverless architecture
|
| Version | Downloads | Last Updated |
|---|---|---|
| 5.0.5 | 73,350 | 3/9/2026 |
| 5.0.4 | 246 | 3/9/2026 |
| 5.0.3 | 215 | 3/9/2026 |
| 5.0.2 | 215 | 3/9/2026 |
| 5.0.1 | 198 | 3/9/2026 |
| 5.0.0 | 553 | 3/9/2026 |
| 4.0.4 | 568,916 | 8/28/2024 |
| 4.0.3 | 182,123 | 5/24/2024 |
| 4.0.2 | 25,744 | 5/15/2024 |
| 4.0.1 | 16,538 | 5/2/2024 |
| 4.0.0-beta | 345 | 5/1/2024 |
| 3.3.2 | 2,176,533 | 3/24/2021 |
| 3.3.1-beta | 10,062 | 2/2/2021 |
| 3.3.0-beta | 8,738 | 12/8/2020 |
| 3.2.2 | 709,895 | 6/17/2020 |
| 3.2.1-beta | 1,584 | 6/9/2020 |
| 3.2.0-beta | 1,645 | 6/4/2020 |
| 3.1.6 | 93,043 | 5/10/2020 |
| 3.1.5-beta | 1,471 | 5/3/2020 |
| 2.0.1 | 4,164 | 12/28/2019 |