Salutare,se da o aplicatie Angular 12+.Net Core 3.1,API urile nu sunt publice,autorizare se face pe baza unui Jwt token
Un user vrea sa poata citi de pe site ul propriu niste date din aceasta aplicatie,vreau sa i adau acces extern doar la un api din ea,cum as putea sa adaug o a doua autorizare?
ma ganeam sa trimita un cod de acces la request,in header, si pe baza lui sa fac autorizarea,probabil metoda nu e safe.
multumesc
Poti sa treci in token resursele la care userul are acces, si sa creezi Authorization Policies pe Controller prin care sa validezi daca are sau nu acces la resursa respectiva.
am mai gasit ca pot folosi mai multe Jwt Bearer Authentication,
pe langa cel existent(‘Default’) mai adaug unul(‘Custom’)
services
.AddAuthentication()
.AddJwtBearer("Default", o=> {...};})
.AddJwtBearer("Custom",o=> {...});
services
.AddAuthorization(o =>
{
o.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("Default")
.Build();
o.AddPolicy("ExternalAuth1", new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("Custom")
.Build());
});
});
Controllerul este doar pentru acces extern,in el voi pune:
[Authorize(Policy = "ExternalAuth1")]
acum nu stiu care va fi scenariul din siteul clientului,ii dau un user+parola,face request,dc ii vine Forbidden,va incerca logare pt obtinere token?el face totul din partea de backend
multumesc
E vorba de un singur user sau mai multi din siteul clientului?
Daca e doar un user, poti folosi API Key.
Unul singur.poti sa mi dai cateva detalii despre Api key?ms
Setting up ApiKey-based Authentication | ASP.NET Core 5 REST API Tutorial 24 - YouTube . Exemplu minimal.
Practic ce iti ramane tie, este cum gandesti securitatea.
Ideal, API-ul ar fi apelat dintr-un backend, nu din client, caz in care totul devine mult mai simplu.
In cazul meu, verific in header daca este prezent api key-ul. User-ul il poate genera din interfata web a aplicatei.