FormsAuthentication-Objekt obsolet [mit MVC5]

Ich bin mit dem folgenden code in ein MVC5 Website:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel loginModel) {
    if (ModelState.IsValid) {
        var authenticated = FormsAuthentication.Authenticate(loginModel.UserName, loginModel.Password);
        if (authenticated) {
            FormsAuthentication.SetAuthCookie(loginModel.UserName, true);
            return RedirectToAction("AdminPanel");
        }
        ModelState.AddModelError("", "The username and password combination were incorrect");
    }
    return View(loginModel);
}

Das wirft die folgende Warnung:

System.Web.Sicherheit.FormsAuthentication.Authentifizieren(string, string)'
ist veraltet: 'Die empfohlene alternative ist die Nutzung der Mitgliedschaft
APIs, wie zum Beispiel die Mitgliedschaft.ValidateUser. Weitere Informationen finden Sie unter
http://go.microsoft.com/fwlink/?LinkId=252463.'

Zuerst ein disclaimer - ich bin einer der Entwickler, die gerne up to date halten mit den Dingen, und ich bevorzuge es, zu vermeiden, Warnungen in VS komplett. Allerdings, in diesem speziellen Fall, ich bin mit extrem primitiv, die Authentifizierung, die kommt direkt aus dem web.config wie folgt:

<authentication mode="Forms">
    <forms loginUrl="~/account/login" timeout="2880" slidingExpiration="true" name=".ASPXFORMSAUTH">
        <credentials passwordFormat="SHA1">
            <user name="MyUserName" password="a-big-long-password-hash"/>
        </credentials>
    </forms>
</authentication>

Es gibt absolut keine weiteren login-Anforderungen in diesem Projekt mit Hilfe einer Datenbank ist übertrieben, und es gibt keine Notwendigkeit für verteilte anmelden; grundsätzlich ist die Speicherung der Informationen im web.config ist die ideale Lösung, und es wird wahrscheinlich nur ein Benutzer pro Anwendung. Ich werde ohne Zweifel die abstrakte authentication code aus dem controller (mit DI /IoC), aber ich bin immer noch beabsichtigte Verwendung der FormsAuthentication-Objekt zu authentifizieren, die details im web.config.

Ich bin mir zwar durchaus bewusst, Mitgliedschaft Anbieter, DotNetOpenAuth und die neue (aber ziemlich schrecklich imo) OWIN basierte Authentifizierung-Modell der obige code ist mehr als ausreichend.

Erste Frage - Warum hat FormsAuthentication schon veraltet, wenn das ist eine vollkommen gültige use-case? Ich verstehe, dass FormsAuthentication ist eine geschlossene black box, ist schwer zu testen, und der code dahinter ist es, domain-spezifische, aber in diesem besonderen Fall (wo will ich Lesen Sie details direkt aus dem Abschnitt der web.config), es scheint Wahnsinn zu schreiben, eine Mitgliedschaft oder eine benutzerdefinierte Authentifizierung-service?

Zweite Frage - es sei denn, ich bin fehlt etwas, die neue OWIN-Modell für die verteilte Authentifizierung und ist nicht geeignet für eine Rolle, enterprise-level-security-system. Aus den vielen blog-Beiträge, white papers und SO Beiträge, die ich gelesen habe, scheint es auch wie es ist immer noch unvollständig. Bin ich richtig in meinen Annahmen? Ist OWIN die Zukunft aller security-Systeme, oder sollte ich weiter schreiben, maßgeschneiderte security-Systeme besser geeignet für meine Bedürfnisse der Klienten?

InformationsquelleAutor Spikeh | 2014-01-11
Schreibe einen Kommentar