Comments (7)
Have you verified that the client is passing the JWT bearer token in the authorize header? Can you post a copy of the entire Authorize header including the JWT token here?
from authorization.
Is it enough? Because I am not sure if it possible to review the whole header in altair.
from authorization.
I have JWT authentication working in a few of my installations but I still don’t immediately see anything wrong with your setup.
I suggest you create a git repository with your progress so far and I can download it and take a look.
from authorization.
https://github.com/HnatiukSerhiy/GraphQLAuthorisationTest
from authorization.
Reference the GraphQL.Server.Authorization.AspNetCore
NuGet package and not the GraphQL.Authorization
package.
Then change your startup like this:
using GraphQL;
using GraphQL.MicrosoftDI;
using GraphQL.SystemTextJson;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;
using Test.Api;
using Test.Repository;
using GraphQL.Types;
using GraphQL.Server;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<IEmployeeRepository, EmployeeRepository>();
builder.Services.AddControllersWithViews();
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = true,
ValidateIssuer = true,
ValidateIssuerSigningKey = true,
ValidAudience = "audience",
ValidIssuer = "issuer",
RequireSignedTokens = false,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("secretsecretsecret"))
};
options.RequireHttpsMetadata = false;
options.SaveToken = true;
});
builder.Services.AddAuthorization(policyBuilder =>
{
policyBuilder.AddPolicy("UserPolicy", p => p.RequireClaim(System.Security.Claims.ClaimTypes.Role, "User"));
});
builder.Services.AddGraphQL(b => b
.AddHttpMiddleware<ISchema>()
.AddGraphQLAuthorization()
.AddSystemTextJson()
.AddErrorInfoProvider(opt => opt.ExposeExceptionStackTrace = true)
.AddSchema<AppSchema>()
.AddGraphTypes(typeof(AppSchema).Assembly));
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseCors("AllowAll");
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseGraphQL<ISchema>();
app.UseGraphQLAltair();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
You can also delete the GraphQLUserContext class. (Or you can continue to use it for other purposes; but I removed the reference from the startup.)
Notice that p.RequireClaim(System.Security.Claims.ClaimTypes.Role, "User")
was changed from p.RequireClaim("role", "User")
.
from authorization.
I'm sure there's a way to use the GraphQL.Authorization
package, but I'm not familiar with that package; sorry. The GraphQL.Server.Authorization.AspNetCore
package is part of GraphQL.Server
and designed for use with ASP.NET Core
from authorization.
No need to apologize, you helped me a lot. Thank you!
from authorization.
Related Issues (20)
- Checking for a valid JWT and integrating with a Refresh-Token-Workflow HOT 10
- UNAUTHENTICATED error code HOT 3
- In AuthorizationValidationRule.cs the method CheckAuth is called multiple times. Why? HOT 4
- ETA for v4? HOT 18
- IAuthorizationRequirement is not sent the same variable names as those in IResolveField context HOT 2
- ClaimsPrincipal not retrived trying to use AuthorizeWith in GraphQL queries HOT 6
- Any example for schema first auth example? HOT 2
- How to get a status code 401 when not authorized HOT 6
- Move GraphQLAuthExtensions from Harness into new package HOT 6
- Add docs about IAuthorizationSkipCondition and DI
- Method 'ValidateAsync' in type 'GraphQL.Authorization.AuthorizationValidationRule' from assembly 'GraphQL.Authorization, Version=4.0.0.0 HOT 7
- Question: AuthorizeWithPolicy is being ignored HOT 10
- AddGraphQLAuth no longer works after switching to Middleware HOT 1
- Return 401 and 403 status code HOT 5
- Is this library still relevant with GraphQL 7+ HOT 22
- How to read graphql query from authorization requirement ?
- Graphql Authorization not working HOT 4
- Faulty reference HOT 6
- How to login user and return token and id ? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from authorization.