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).

InformationsquelleAutor DevExpress | 2017-03-23