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" />
paket add AzureExtensions.Swashbuckle --version 2.0.1
#r "nuget: AzureExtensions.Swashbuckle, 2.0.1"
// Install AzureExtensions.Swashbuckle as a Cake Addin #addin nuget:?package=AzureExtensions.Swashbuckle&version=2.0.1 // Install AzureExtensions.Swashbuckle as a Cake Tool #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. |
.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 (2)
Showing the top 2 NuGet packages that depend on AzureExtensions.Swashbuckle:
Package | Downloads |
---|---|
Service.Extensions.Functions
Extensions to provide consistent configurations and patterns for your service. |
|
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 |
---|---|---|
4.0.4 | 20,311 | 8/28/2024 |
4.0.3 | 36,705 | 5/24/2024 |
4.0.2 | 7,586 | 5/15/2024 |
4.0.1 | 5,855 | 5/2/2024 |
4.0.0-beta | 80 | 5/1/2024 |
3.3.2 | 1,715,724 | 3/24/2021 |
3.3.1-beta | 9,659 | 2/2/2021 |
3.3.0-beta | 7,898 | 12/8/2020 |
3.2.2 | 660,504 | 6/17/2020 |
3.2.1-beta | 1,246 | 6/9/2020 |
3.2.0-beta | 1,318 | 6/4/2020 |
3.1.6 | 85,921 | 5/10/2020 |
3.1.5-beta | 1,190 | 5/3/2020 |
3.1.2-beta | 7,620 | 4/14/2020 |
3.1.1-beta | 873 | 4/13/2020 |
3.1.0-beta | 863 | 4/13/2020 |
3.0.2 | 91,368 | 2/29/2020 |
3.0.1 | 1,403 | 2/29/2020 |
3.0.0 | 6,520 | 2/24/2020 |
2.0.2 | 1,177 | 2/24/2020 |
2.0.1 | 3,880 | 12/28/2019 |
2.0.0 | 1,460 | 12/28/2019 |