Bewit 5.0.0-rc.2
dotnet add package Bewit --version 5.0.0-rc.2
NuGet\Install-Package Bewit -Version 5.0.0-rc.2
<PackageReference Include="Bewit" Version="5.0.0-rc.2" />
paket add Bewit --version 5.0.0-rc.2
#r "nuget: Bewit, 5.0.0-rc.2"
// Install Bewit as a Cake Addin #addin nuget:?package=Bewit&version=5.0.0-rc.2&prerelease // Install Bewit as a Cake Tool #tool nuget:?package=Bewit&version=5.0.0-rc.2&prerelease
Bewit is an authentication scheme alternative to cookies and bearer tokens.
Bewit enables you to provide authentication in use cases where cookies and authentication headers can not be used. With support for both stateful and stateless authentication, Bewit is a practical solution for many scenarii, including file downloads and temporary or single-use links.
Getting Started
We've prepared a simple example of how to use Bewit to provide stateless secure file downloads for a HotChocolate Server. In this scenario, a HotChocolate server will be used to generate secure links. These links can then be used to download content from an Asp.Net MVC Server without cookies or authentication headers.
Install
You will need the following package for your HotChocolate Server:
dotnet add package Bewit.Extensions.HotChocolate
On your MVC Server, add the following package:
dotnet add package Bewit.Extensions.Mvc
HotChocolate Server
First create a simple HotChocolate API with the following Schema:
const string mvcApiUrl = "http://localhost:5000"; //your mvc api url here
ISchema schema = SchemaBuilder.New()
.SetOptions(new SchemaOptions
{
StrictValidation = false //because we don't have a QueryType in this example
})
.AddMutationType(
new ObjectType(
d =>
{
d.Name("Mutation");
d.Field("RequestAccessUrl")
.Type<NonNullType<StringType>>()
.Resolver(ctx => $"{mvcApiUrl}/api/file/123")
.UseBewitUrlProtection();
}))
.Create();
You'll also need to register some things in the service container:
services.AddBewitGeneration<string>(
new BewitOptions
{
Secret = "my encryption key",
TokenDuration = TimeSpan.FromMinutes(1) //lifespan of the generated url
},
builder => builder.UseHmacSha256Encryption()
);
MVC Server
Create a simple Asp.Net MVC Server with the following Controller:
[Route("api/[controller]")]
[ApiController]
public class FileController: Controller
{
[HttpGet("{id}")]
[BewitUrlAuthorization]
public FileResult GetFile(string id)
{
return File(/* your file here*/);
}
}
You'll also need to register some things in the service container:
services.AddBewitUrlAuthorizationFilter(
new BewitOptions
{
Secret = "my encryption key"
},
builder => builder
.UseHmacSha256Encryption()
);
Use
You can now generate secure download urls by calling your mutation:
mutation foo {
requestAccessUrl
}
Features
Generating secured Links
- Vanilla (no overhead)
- HotChocolate integration
- graphql-dotnet integration
Authentication
- Asp.Net MVC
Persistance (for Stateful authentication)
- MongoDb
- Sql Server
- Azure Blob Storage
- PostgresSQL
Community
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the Swiss Life OSS Code of Conduct.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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 is compatible. 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 is compatible. 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. |
-
net6.0
- Microsoft.Extensions.Configuration.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 6.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Newtonsoft.Json (>= 13.0.1)
- System.Threading.Tasks.Extensions (>= 4.5.0)
-
net7.0
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 7.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Newtonsoft.Json (>= 13.0.1)
- System.Threading.Tasks.Extensions (>= 4.5.0)
-
net8.0
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.1)
- System.Threading.Tasks.Extensions (>= 4.5.0)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Bewit:
Package | Downloads |
---|---|
Bewit.Generation
Package Description |
|
Bewit.Validation
Package Description |
|
Bewit.Extensions.HotChocolate
Package Description |
|
Bewit.Storage.MongoDB
Package Description |
|
Bewit.Extensions.Mvc
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
5.0.0-rc.2 | 38 | 11/14/2024 |
5.0.0-rc.1 | 46 | 10/17/2024 |
5.0.0-preview.7 | 50 | 10/9/2024 |
5.0.0-preview.6 | 45 | 10/9/2024 |
5.0.0-preview.5 | 52 | 10/8/2024 |
5.0.0-preview.4 | 44 | 10/8/2024 |
5.0.0-preview.3 | 46 | 10/8/2024 |
4.0.0 | 7,760 | 2/10/2023 |
3.1.0 | 1,699 | 10/7/2022 |
3.1.0-preview.3 | 123 | 10/6/2022 |
3.1.0-preview.2 | 100 | 10/6/2022 |
3.0.0 | 1,077 | 10/3/2022 |
2.1.0 | 1,445 | 10/27/2021 |
2.0.0-preview.6 | 21,036 | 3/4/2021 |
2.0.0-preview.5 | 179 | 3/3/2021 |
2.0.0-preview.4 | 203 | 3/3/2021 |
2.0.0-preview.3 | 190 | 3/2/2021 |
2.0.0-preview.2 | 185 | 3/2/2021 |
2.0.0-preview.1 | 185 | 3/2/2021 |
1.0.1 | 1,043 | 3/2/2021 |
1.0.0 | 1,081 | 3/1/2021 |
0.2.0-preview.1 | 287 | 11/6/2020 |
0.1.0 | 1,236 | 10/5/2020 |
0.1.0-preview.4 | 242 | 10/5/2020 |
0.1.0-preview.3 | 250 | 10/5/2020 |
Release notes: https://github.com/SwissLife-OSS/bewit/releases/