L'API WEB de s'Authentifier avec le Porteur du jeton
J'ai créé une application MVC pour permettre l'authentification Externe/Enregistrement. Il a créé avec tous les composants nécessaires (Owin, EF, Regiter, de Connexion ,de Déconnexion) et je suis en mesure d'effectuer toutes les activités de base dans l'application.
Maintenant, je souhaite intégrer l'application web avec l'API WEB qui va être utilisé par mon application mobile de trop. Je l'ai coincé dans l'authentification dans le web des appels d'api (avec le porteur du jeton que j'ai reçu de l'application web).
J'ai vu des exemples pour créer des WEB API projets avec OWIN middleware activé. Mais je ne sais pas comment centraliser l'authentification externe de traiter et d'utiliser le jeton à la fois pour mon application web et l'application mobile
Et je ne veux pas y aller pour l'angle d' ou Single page application.
Quelqu'un peut-il me suggérer le droit chemin de technique pour résoudre ce problème.
Merci.
Étape 1:
J'ai créé un projet MVC dans visual studio 2015, avec l'ouverture de session Individuelle Activé. Et configuré les Touches que j'ai tout configuré dans le google developer console. Mon De Démarrage.cs aura le code suivant
public void ConfigureAuth(IAppBuilder app)
{
//Configure the db context, user manager and signin manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
//Enable the application to use a cookie to store information for the signed in user
//and to use a cookie to temporarily store information about a user logging in with a third party login provider
//Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
//Enables the application to validate the security stamp when the user logs in.
//This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Étape 2:
Changé le webconfig fichier à point de de mon de la bd locale et à exécuter l'application, je suis en mesure de réussir la connexion par le biais de google avec mon compte gmail et les détails de l'utilisateur sont ajoutés à ASPUSerTables dans la DB avec succès
Étape 3:
Maintenant, je voulais créer un Projet d'API WEB qui sera connecté à la base de données et restauration des données à la MVC de l'application web et une application Mobile (je suis coincé à l'authentification de la partie ici). J'ai besoin d'utiliser une authentification tierce pour mon application mobile de trop (Xamarin) et l'utilisation de l'API commune à partir de mon application mobile et le site web MVC
Étape 4
Alors j'ai pensé, au Lieu de l'application WEB (Étape 1), je devrais avoir créé le Projet de API WEB qui va ressembler à ci-dessous pour retourner le jeton d'authentification dans de Démarrage.cs et de stocker le cookie dans le site web de passer à la suite.
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
//Configure the application for OAuth based flow
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
//In production mode set AllowInsecureHttp = false
AllowInsecureHttp = true
};
Je ne veux pas aller avec ANGULAIRES et j'ai besoin de mon WebApplication(MVC) et le projet de API WEB Authentifie correctement pour toutes les demandes. Merci de me conseiller
droit chemin.
Grâce
- où en êtes-vous coincé dans l'authentification avec le porteur du jeton ?? quelle est l'erreur que vous obtenez qui seront utiles pour répondre à votre question. J'ai fait des projets, où à la fois mobile et web utilisent la même Api sans aucun problème.
- Salut Jawand. Merci pour votre réponse immédiate. Dans mon projet MVC, je suis en mesure d'obtenir les réclamations des utilisateurs de google dans mon AccountController et en mesure d'enregistrer les détails dans ASPUsers tables. J'ai créé séparée projet d'api web sans owin composants (est-il à droite) et le besoin de l'autoriser à partir de l'application web. Je ne suis pas sûr de la façon d'obtenir le jeton d'accès dans la webapp cookies et d'autoriser les appels de REPOS. Merci de me guider à la création d'un simple MVC de l'application client (pas angulaire) et de l'api web du projet à l'appui de l'authentification externe à la fois sur internet et l'application mobile.
- Pouvez-vous ajouter un peu de code sur la question?
- Salut. Merci j'ai mis à jour s'il vous Plaît laissez-moi savoir si vous avez besoin de plus d'informations
- je suis en supposant que vous voulez utiliser la norme MVC contrôleur dans votre application web à droite ? et vous voulez appeler votre API Web MVC contrôleur ? s'il vous plaît corrigez-moi si je me trompe. cela va m'aider à répondre à votre question.
- Salut Jawand. Oui. J'ai besoin exactement. J'ai compris que si nous créons un projet MVC avec WEBAPI Activé, il vous donne tout le soutien des fonctionnalités de l'API projets trop.. (appels de l'API avec un jeton etc).. Mais je me demande encore, avec cette approche, je ne peux pas decouplemy WEB API projet seul. (Je ne veux pas dupliquer les OWIN mise en œuvre dans les deux mon MVC et projets de l'API).
Vous devez vous connecter pour publier un commentaire.
Ce que vous devez faire est de suivre ces étapes
bien ce sera notre architecture
C'est l'API contrôleur
C'est votre contrôleur MVC
Je n'ai pas utilisé async ici, mais vous pouvez le faire. et aussi vous avez besoin pour commencer à la fois de vos projets lorsque vous l'exécutez. clic droit sur la solution et cliquez sur
Set Start Up projects
ensuite, vous pouvez sélectionner de multiples projets et de définir l'action commeStart
.Register
et l'a utilisé pour enregistrer un nouvel utilisateur. laissez-moi savoir si vous avez besoin de plus d'aideUserManager.Create(user)
, il n'accepte pas le mot de passe. Ainsi, vous aurez votre créés par les utilisateurs sans mot de passe. Maintenant, vient la question de la façon de maintenir l'identité des utilisateurs. J'aimerai savoir si vous êtes planification pour certains OAuth genre de choses ? ensuite, vous pouvez maintenir l'identité des utilisateurs comme vous l'aurez (par exemple FB) externe jeton d'accès et vous pouvez de nouveau appel FB demandant si c'est un jeton valide ou pas ? c'est comment vous pouvez empêcher l'utilisation abusive de l'API. permettez-moi de savoir si je vous avez obtenu votre réponse ou pas .