32 votes

Stockage des comptes d'utilisateurs locaux pour l'API Web dans ASP.NET Core 2.0

J'utilise ASP.Net Core 2.0, je veux construire un projet d'API Web avec le type d'autorisation Comptes d'utilisateurs individuels, mais la seule option est la suivante Connect to an existing user store in the cloud . Create new project screenshot

Comment puis-je ajouter un modèle pour l'API Web avec des comptes d'utilisateur individuels avec Store user accounts in-app ?

Cette option est disponible pour l'application Web mais pas pour l'API Web.

0 votes

J'aimerais bien connaître la réponse à cette question. Sur le Mac, c'est encore pire : vous n'avez même pas la possibilité de créer des comptes d'utilisateurs individuels.

14voto

Kirsten Points 1

Essayez de démarrer votre projet dans la console avec la commande

dotnet new webapi -au Individual

Vous pouvez ouvrir votre projet dans VS après cela. (pour contourner la boîte de dialogue). Vous pouvez alors utiliser par exemple l'attribut authorize. Mais le projet est toujours configuré pour utiliser l'authentification Azure Bearer. Vous devez décider où obtenir l'identité. Vous pouvez prendre identityserver4 ou construire votre propre "Custom storage providers for ASP.NET Core Identity" ( MS-Docs )

La différence avec une application Web MVC : ici, vous avez un contrôleur de compte avec des vues pour gérer les inscriptions et obtenir un nom d'utilisateur et un mot de passe, etc.

6 votes

" Mais le projet est toujours configuré pour utiliser Azure Bearer Authentication. " Je ne comprends pas comment cela répond à la question -- vous n'effectuez pas l'identité in-app dans le projet généré. C'est toujours dépendant d'Azure. services.AddAuthentication(sharedOptions => { sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddAzureAdB2CBearer(options => Configuration.Bind("AzureAdB2C", options));

7voto

Felix Points 910

Je me suis posé la même question, et j'ai fini par sélectionner Web Application au lieu de Web API . Il y a probablement une logique dans le fait que MS supprime les "comptes in-app" - Avec l'API Web, vous écrivez probablement des SPA, et les "vues" (connexion, mot de passe oublié, etc.) devraient être dans votre code client ; pas les vues Razor sur le serveur.

Notez que si vous optez pour IdentityServer 4, les vues sont générées dans l'application IS4 ; pas dans l'application Business API.

Je pense donc que Microsoft essaie de vous donner un indice ici...

4 votes

Je suis d'accord avec Felix. Vous pouvez simplement choisir le modèle d'application Web, puis supprimer les vues et les contrôleurs pour la gestion des comptes, et modifier le modèle d'application Web. Startup.cs pour n'avoir que le middleware nécessaire à l'authentification par jeton.

1 votes

@ajawad987 Qu'est-ce qu'il reste dans votre Startup.cs quand tu auras fini ?

3voto

Clearhat Points 201

Pour obtenir la réponse, j'ai construit la version de l'API sans authentification et la version avec, puis j'ai fait une différence sur les dossiers générés (et j'ai ignoré le bloc de code supplémentaire dans appsettings.json qui apparaît lorsque vous utilisez l'option cloud-auth).

Il s'avère que l'activation de l'authentification ne nécessite que quelques lignes de code.

Si vous apportez les modifications suivantes à une version sans authentification du modèle d'API, vous disposerez d'une version avec authentification :

Sur Startup.cs , ajoutez : using Microsoft.AspNetCore.Authentication; dans la section "utilisation". Ajoutez aussi : app.UseAuthentication(); juste avant app.UseMvc(); comme indiqué ci-dessous :

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseAuthentication();
    app.UseMvc();
}

Sur Contrôleurs \ValuesController.cs , ajoutez : using Microsoft.AspNetCore.Authorization; dans la section "utilisation". Ajoutez aussi : [Authorize] immédiatement au-dessus [Route("api/[controller]")]

C'est tout ce dont vous avez besoin pour ajouter l'authentification par modèle au modèle API vanille. Bien sûr, vous devrez ajouter le code d'authentification proprement dit, mais au niveau du modèle, vous avez terminé.

(Note annexe : Microsoft a également supposé dans la version Auth que vous utiliserez UserSecretsId, donc si vous le souhaitez également, il suffit de cliquer avec le bouton droit de la souris sur la solution et de sélectionner Manage User Secrets).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X