SORU
31 Temmuz 2012, Salı


ASP.NET kullanıcı Kimlik API Web

Bu konu benim için çok kafa karıştırıcı oldu. HTTP apps bir çaylak değilim ama bir yerden JSON veri tüketen iPhone istemcisi geliştirmek gerekir. Çok kolay gibi görünüyordu, çünkü MS Web API seçtim ama kullanıcı kimlik doğrulaması gelince durum biraz sinir bozucu.

Buna hayret ediyorum nasıl oldum değil bulur net bir örnek olduğunu doğrulamak için bir kullanıcı doğru giriş ekranında, aşağı kullanarak Authorize öznitelik benim ApiController yöntemlerden sonra birkaç saat Googling.

Bu bir soru ama bu tam olarak nasıl yapılacağı ile ilgili bir örnek için bir talep değil. Şu sayfalara baktım:

Bu yetkisiz istekleri işlemek için nasıl açıklar olsa bile, bu LoginController Bir ya da kullanıcı kimlik bilgilerini isteyin ve onları doğrulamak için böyle bir şey gibi açıkça bir şey göstermek değil.

Herkes güzel ve basit bir örnek yazabilir veya doğru yönde bana gelin istekli, lütfen?

Teşekkürler.

CEVAP
31 Temmuz 2012, Salı


Buna hayret ediyorum nasıl oldum değil bulur net bir örnek olduğunu doğrulamak için bir kullanıcı doğru giriş ekranında, aşağı kullanma Yetkisi öznitelik benim ApiController yöntemlerden sonra birkaç saat Googling.

Bu iki kavram hakkında yanlış hatırlıyorsun çünkü

  • Kimlik doğrulama sistemleri ile güvenli bir şekilde kendi kullanıcıları tanımlamak yönünde mekanizmadır. Kimlik doğrulama sistemleri sorulara bir cevap vermek:

    • Kullanıcı kim?
    • Gerçekten kendisini temsil eder kullanıcıdır?
  • Yetkilendirme, sistem belirli bir kullanıcı kimlik doğrulaması, güvenli kaynakları sistemi tarafından kontrol edilebilir olması gerekeni belirler mekanizmasıdır. Örneğin, bir veritabanı yönetim sistemi olabilir dizayn olarak sağlamak belirli kişiler ile yetenek, bilgi almak için bir veritabanı değil yeteneği için değişiklik veri kayıtlı datbase, süre veren diğer bireylerin yeteneğini değiştirmek veri. Yetkilendirme sistemleri sorulara cevap vermek:

    • Kullanıcı X kaynak R erişim yetkisi var mı?
    • Kullanıcı X P işlemi gerçekleştirmek için yetkiniz?
    • Kullanıcı X işlemi kaynak R P gerçekleştirmek için yetkilidir?

MVC Authorize öznitelik, örneğin: erişim kuralları uygulamak için kullanılır

 [System.Web.Http.Authorize(Roles = "Admin, Super User")]
 public ActionResult AdministratorsOnly()
 {
     return View();
 }

Yukarıdaki kural sadece izin verirbu kullanıcılarAdminveSüper Bir Kullanıcıyöntem erişmek için rolleri

Bu kurallar aynı zamanda web ayarlanabilir.dosya location öğesini kullanarak config. Örnek:

  <location path="Home/AdministratorsOnly">
    <system.web>
      <authorization>
        <allow roles="Administrators"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

Bu yetki kuralları yürütülür ancak, önce, olmak zorundageçerli web sitesi için kimlik doğrulaması.

Bu yetkisiz istekleri işlemek için nasıl açıklar olsa bile, bu bir LoginController veya kullanıcı kimlik bilgilerini isteyin ve onları doğrulamak için böyle bir şey gibi açıkça bir şey göstermek değil.

Burada, iki sorun ayırabiliriz:

  • Aynı Web uygulamasında Web API hizmetleri tüketen zaman kullanıcı kimlik doğrulaması

    Bu Authentication in ASP.Net güveniyor çünkü en basit yaklaşım olacaktır

    Bu basit bir örnek

    Web.config

    <authentication mode="Forms">
      <forms
        protection="All"
        slidingExpiration="true"
        loginUrl="account/login"
        cookieless="UseCookies"
        enableCrossAppRedirects="false"
        name="cookieName"
      />
    </authentication>
    

    Kullanıcılar için yönlendirilecekhesap/girişrota, Özel kontroller kullanıcı kimlik bilgilerini sor işlemek ve sonra da kimlik doğrulama tanımlama bilgisini kullanarak ayarlamak istiyorum

        if (ModelState.IsValid)
        {
            if (Membership.ValidateUser(model.UserName, model.Password))
            {
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }
    
        // If we got this far, something failed, redisplay form
        return View(model);
    
  • Çapraz platform doğrulaması

    Bu dava ne zaman olursadece açıklamanızı Web uygulaması içinde API hizmetleribu nedenle, başka bir müşteri hizmetleri alıcı olurdu, istemci başka bir Web uygulaması ya da herhangi biri olabilir .Net uygulama (Forms, WPF, konsol, Windows Kazan servisi, vb.)

    Örneğin varsayalım ve siz alıcı Web API hizmetten başka bir web uygulama aynı ağ etki alanı içinde bir intranet), bu durumda olabilir güveniyor Windows kimlik doğrulaması tarafından sağlanan ASP.Net.

    <authentication mode="Windows" />
    

    Eğer hizmetlerinizi İnternet üzerinde açık ise, o zaman her Web API hizmeti için kimlik doğrulaması belirteçleri geçmek gerekir.

    Daha fazla bilgi için, aşağıdaki makalelere bir ganimet almak:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 365multimedia

    365multimedi

    26 ŞUBAT 2009
  • jcortes187

    jcortes187

    24 Mart 2006
  • Matt Steffanina

    Matt Steffan

    1 EYLÜL 2011