https://github.com/vitormoschetta/vithor.auth
A small package that adds Authentication, Authorization, User Email sending and validation layer to your dotnet application.
https://github.com/vitormoschetta/vithor.auth
aspnet-core authentication authorization dotnet dotnet-core email email-sender email-validation jwt jwt-token openid openid-connect refresh-token token
Last synced: about 1 month ago
JSON representation
A small package that adds Authentication, Authorization, User Email sending and validation layer to your dotnet application.
- Host: GitHub
- URL: https://github.com/vitormoschetta/vithor.auth
- Owner: vitormoschetta
- Created: 2022-12-18T08:40:16.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-12-27T20:39:07.000Z (over 3 years ago)
- Last Synced: 2025-08-14T09:42:36.378Z (10 months ago)
- Topics: aspnet-core, authentication, authorization, dotnet, dotnet-core, email, email-sender, email-validation, jwt, jwt-token, openid, openid-connect, refresh-token, token
- Language: C#
- Homepage:
- Size: 41 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ViThor Auth
A small package that adds Authentication and Authorization layer, based on Json Web Token (JWT), in your dotnet application.
Ready-made endpoints are available for:
- User Registration
- Login (get token)
- Token Validation
- Refresh Token
An email submission and validation service is also now available in this library.
## Installation
Install the package from NuGet:
```bash
dotnet add package ViThor.Auth
```
## Usage
### Authentication
It is necessary to create a class that inherits from UserBase:
```csharp
public class User : UserBase
{
}
```
Next, you need to create a class that implements the IUserService interface.
You can get a sample implementation in `Samples/Vithor.Auth.Sample/Serives/UserService.cs`.
Add the class that implements the IUserService to the `Program.cs` dependency injection service:
```csharp
builder.Services.AddScoped, UserService>();
```
The remaining settings and services are built by running:
```csharp
builder.BuildViThorSettings();
```
The parameterization of these services is done in appsettings:
```json
{
"JwtConfig": {
"Secret": "This is my custom Secret key for authnetication",
"Issuer": "http://localhost:5000",
"Audience": "http://localhost:5000",
"ExpirationType": "Minutes",
"Expiration": 1,
"ValidateIssuerSigningKey": true,
"ValidateLifetime": true,
"ValidateIssuer": false,
"ValidateAudience": false,
"RequireHttpsMetadata": false,
"SaveToken": false
}
}
```
Add AuthController to the API:
```csharp
public class AuthController : AuthControllerBase
{
public AuthController(IJwtService jwtServices, IEmailService emailService, IUserService userService, IOptions appSettings) : base(jwtServices, emailService, userService, appSettings)
{
}
}
```
### E-mail
E-mail configuration is not required. That is, only if you are going to use the email sending service to validate the user registration, add the parameters below in appsettings:
```json
{
"BaseAddress": "http://localhost:5000",
"SmtpConfig": {
"Enabled": true,
"Host": "smtp.gmail.com",
"Port": 587,
"UserName": "user@gmail.com",
"Password": "password-here",
"From": "user@gmail.com"
}
}
```
## Sample
The sample project is available in the repository. It is a simple dotnet web api project that uses the ViThor.Auth package.
### Running the sample
Run the following command to run the sample API:
```bash
dotnet run --project ./Samples/Vithor.Auth.Sample/ViThor.Auth.Sample.csproj
```
### Testing the sample
#### Swagger
The sample project has Swagger configured. To access it, run the API and access the following URL:
```bash
http://localhost:5000/swagger/index.html
```
#### Postman
The example project has a Postman collection that can be used to test endpoints. To use it, import the collections from the `Postman` folder into Postman and run the requests.
## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
## License
[MIT](https://choosealicense.com/licenses/mit/)