C
C#2w ago
Salight

✅ Onion Architecture Authorization doesn't work

I got a presentation layer and api project i make the default scheme JwtBearer in api but when i try to access a authorized controller in presentation layer i got 404 because of the scheme i gotta make manually like this
[Authorize(AuthenticationSchemes =JwtBearerDefaults.AuthenticationScheme)]
[Authorize(AuthenticationSchemes =JwtBearerDefaults.AuthenticationScheme)]
I don't want to make every authorize attribute like this so how can i solve this problem
No description
2 Replies
Salight
SalightOP2w ago
public static void ConfigureJWT(this IServiceCollection services, IConfiguration
configuration)
{
var jwtConfiguration = new JwtConfiguration();
configuration.Bind(jwtConfiguration.Section, jwtConfiguration);
var secretKey = Environment.GetEnvironmentVariable("SECRET");
services.AddAuthentication(opt =>
{
opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
opt.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,

ValidIssuer = jwtConfiguration.ValidIssuer,
ValidAudience = jwtConfiguration.ValidAudience,
IssuerSigningKey = new
SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey))
};
});
}
public static void ConfigureJWT(this IServiceCollection services, IConfiguration
configuration)
{
var jwtConfiguration = new JwtConfiguration();
configuration.Bind(jwtConfiguration.Section, jwtConfiguration);
var secretKey = Environment.GetEnvironmentVariable("SECRET");
services.AddAuthentication(opt =>
{
opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
opt.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,

ValidIssuer = jwtConfiguration.ValidIssuer,
ValidAudience = jwtConfiguration.ValidAudience,
IssuerSigningKey = new
SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey))
};
});
}
my extension method
"JwtSettings": {
"validIssuer": "https://localhost:5001",
"validAudience": "https://localhost:5001",
"expires": 5
}
"JwtSettings": {
"validIssuer": "https://localhost:5001",
"validAudience": "https://localhost:5001",
"expires": 5
}
Unknown User
Unknown User2w ago
Message Not Public
Sign In & Join Server To View

Did you find this page helpful?