WEB-API - Authentifizierung mit Bearer-token
Habe ich eine MVC-Anwendung für die Zulassung der Externen Authentifizierung/Registrierung. Es hat erstellt alle notwendigen Komponenten (Owin, EF, Regiter, Login ,Logout) und ich bin in der Lage zu führen Sie alle grundlegenden Tätigkeiten in der Anwendung.
Nun, ich möchte, um die Integration der web application mit dem WEB-API, die verwendet wird, durch meine mobile app zu. Ich stecke die Authentifizierung in der web-api-Aufrufe (mit der bearer-token erhielt ich von der web-Applikation).
Sah ich Beispiele zum erstellen von WEB API-Projekte mit OWIN-middleware aktiviert. Aber ich weiß nicht, wie man das zentralisieren der externen Authentifizierung, und verwenden Sie die token für meine web-Anwendung und einer mobilen Applikation
Und ich will nicht gehen für die ECKIGE oder Single-page-Anwendung.
Kann mir jemand empfehlen mit den richtigen technischen Weg, um dieses Problem zu beheben.
Danke.
Schritt 1:
Erstellte ich ein MVC-Projekt in visual studio 2015 mit Individueller Anmeldung Aktiviert. Und konfiguriert die Tasten, dass ich alles konfiguriert in der google developer-Konsole. Meine Start.cs müssen Sie den folgenden code
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))
}
});
Schritt 2:
Verändert die webconfig Datei auf meinen lokalen DB und die app starte, bin ich in der Lage, erfolgreich login über google mit meinem Google Mail-Konto und Benutzer-Informationen werden Hinzugefügt, um ASPUSerTables in die DB erfolgreich
Schritt 3:
Nun wollte ich zum erstellen eines WEB-API-Projekt, die Verbindung mit der DB und ermittelt werden einige Daten, um das MVC-web-Anwendung und Mobile Anwendung (ich bin stuck on authentication Teil hier). Ich muss die Verwendung von third-party-Authentifizierung, um meine Handy-app (Xamarin), und verwenden Sie Standard-API von meiner Mobil-app und MVC-website
Schritt 4
Also dachte ich, Statt der WEB-Anwendung (Schritt 1), sollte ich erstellt haben, WEB-API-Projekt, das wie folgt Aussehen zurückgeben, das auth-token in Start.cs und speichern, die Cookies in der website zu pass in die nachfolgenden Anforderungen.
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
};
Ich nicht gehen wollen mit WINKEL-und ich brauche meine WebApplication(MVC) und WEB-API-Projekt Authentifiziert, ordnungsgemäß für alle Anforderungen. Bitte informieren Sie mich, die
richtigen Weg.
Dank
Hi Jawand. Vielen Dank für Ihre sofortige Antwort. In meinem MVC-Projekt, ich bin in der Lage, um die Ansprüche von google in meinem AccountController und in der Lage, sich die details in ASPUsers Tabellen. Ich erstellte separate web-api-Projekt ohne owin-Komponenten (ist es richtig) und autorisieren müssen von der web-Anwendung. Ich bin mir nicht sicher, wie man das access token in die webapp cookies und genehmigen die REST-Aufrufe. Bitte führe mich die Schritte zum erstellen von einfachen MVC-client-Anwendung (nicht eckig) und web-api-Projekt zur Unterstützung externer Authentifizierung in web und mobile app.
Können Sie fügen Sie einige code, um die Frage?
Hi. Danke, ich habe aktualisiert es Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen
ich bin angenommen, Sie möchten, verwenden Sie ein standard-MVC-Controllers in Ihrem web-Anwendung, richtig ? und Sie wollen rufen Sie Ihre Web API MVC-controller ? bitte korrigieren Sie mich, wenn ich falsch bin. dies wird mir helfen, um Ihre Frage zu beantworten.
InformationsquelleAutor DevExpress | 2017-03-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tun müssen ist, Folgen Sie diese Schritte
gut das wird unsere Architektur
Dies ist API-controller
Dies ist Ihre MVC-controller
Habe ich nicht verwendet async hier, aber Sie können es tun. und auch Sie brauchen, um zu beginnen, Ihre beiden Projekte, wenn Sie es ausführen. rechten Maustaste auf die Projektmappe, und klicken Sie auf
Set Start Up projects
dann können Sie mehrere Projekte und stellen die Aktion alsStart
.ja, Sie werden in der Lage sein, um es ohne Probleme verwenden. Ich werde einige weitere code hinzufügen zu beantworten.
werfen Sie einen Blick ich habe eine Methode, die von web api namens
Register
mit und registrieren Sie einen neuen Benutzer. lassen Sie mich wissen, wenn Sie weitere Hilfe benötigenVielen Dank für Ihre Bemühungen. Ich bin auf der Suche für die Reduzierung der Entwicklungszeit für die Registrierung, sonst muss ich manuell tun, alle diese in der WEB-API. (Passwort zurücksetzen, Passwort vergessen etc..). Also ich habe das MVC-WEB-API, die mit allen code. Ich wollte eine separate web-api-Projekt, das verwendet werden könnte, durch die mobile app und WEB für die anderen Aufrufe. Aber alle Anträge sollten zugelassen werden. Kann ich dann eine einfache API-Projekt mit Individuellen Auth aktiviert haben und die grundlegenden Funktionen für die Authentifizierung der Token auf alle Anfragen.Markiert als Antwort!
Ich habe den ähnlichen Anforderungen der Benutzer-Authentifizierung von web-Anwendung und mobile Anwendung. Kannst du bitte erklären Sie mir, wie kann ich miantain die Identität der Benutzer im mvc-Projekt, das Keinen athentication?
InformationsquelleAutor Jawand Singh
`
public class MVCValuesController : Controller {
HttpClient client;
}`
InformationsquelleAutor Rajesh Kashyap