2011-07-20 34 views
10

Şu anda giriş yapmak ve Form kimlik doğrulaması kullanarak kimlik doğrulaması extranet açması gerekir gereken bir MVC3 web uygulaması geliştiriyorum. Intranet kullanıcıları, Windows kimlik doğrulaması kullanılarak otomatik olarak oturum açılmalıdır.
Bu makaleyi buldum , http://aspalliance.com/553_Mixed_Mode_Authentication.all ama Kasım 2004 tarihli ve daha yakın 7 yıl öncesine göre yazılı bir şey bulmak nasıl bir duygu.ASP.NET Karışık Formlar/Windows Kimlik

planım aynı fiziksel dizinde işaret sanal dizinleri ile IIS iki uygulamalarını sahip olmaktır, ancak bir Anonim Erişim sağlayacak ve diğer olmaz. Bir kullanıcı şeylerin Windows/Intranet tarafında kimlik doğrulaması yapıldığında

, ben sadece form kimlik doğrulaması üzerinden oturum kullanıcıyı taklit etmek istiyoruz. Bu yaklaşıma herhangi bir tuzak var mı? Daha iyi bir fikir var mı?

DÜZENLEME: Beni yaşlı makalelerinde öne şey çok yapmak izin vermez IIS7 kullanıyorum 7/22/2011

. Kimlik doğrulaması, IIS7 ve ASP.NET web siteleri arasında biraz daha sıkı bir şekilde entegre olduğundan, bazı şeylere izin verilmez. Örneğin, uygulamanın geri kalanı Forms Auth kullanıyorken, Windows Auth'ı tek bir dosyada ayarlayamıyorum.

+0

Kullanıcıların formlarla girişini nasıl simüle etmeyi planlıyorsunuz? Onlar için ASP üyelik tablolarında kullanıcı mı olacaksınız? – Erix

+0

Evet. Her windows kullanıcısının, bir üyeye asp üyeliğinde karşılık verecek olan rolleri (Windows'daki Gruplar) olacaktır. Dolayısıyla, Windows'ta Yönetici Grubu'ndaysa, Formlar'da bir Yönetici kullanıcı olarak oturum açılır. Windows kullanıcıları için, her biri birebir bir ilişkiye (Kullanıcıdan Rol'e) sahip olan ASP üyelik tablolarında kullanıcılar olduğu kadar çok rol olacaktır. –

cevap

3

burada iyi yaklaşım ilk uygulama Windows kimlik doğrulaması kullanır iki uygulamalara sahip ve yalnızca HTTP boru hattı PostAuthenticate etkinliğine bir kanca ibaret olmaz diye merak. Kullanıcı kimliği doğrulanmışsa, onlara form bileti verin ve form kimlik doğrulamasını kullanan hedef uygulamaya, App2'ye yönlendirin. Çerezlerin yola özel olmadığına ve iki uygulamanın aynı sunucuda bulunduğuna (veya şifreleme anahtarlarının web.config'te senkronize edildiğine) dikkat edin. Kullanıcının kimliği doğrulanmamışsa, onları yalnızca bir auth bileti olmadan yönlendirirsiniz ve App2'ye vardıklarında giriş yaparlar.

Uyg1: www.myUrl.com Uygulamam

Bu uygulama için "kamu" url ve PostAuthenticate olayı içine çengel ağ kullanıcıları algılar \ (Professional ASP.NET 2.0 Security, Membership, and Role Management bakınız):

//Hook PostAuthenticateRequest inside of global.asax 
void Application_PostAuthenticateRequest(Object sender, EventArgs e) 
{ 
    IPrincipal p = HttpContext.Current.User; 

    if (p.Identity.IsAuthenticated) 
    { 
     // to do: give them a non-path specific ticket and redirect to App2 
    } 
} 

Uygulama2: www.myUrl.com \ MyApp2

Gerçek uygulama budur. Ağ kullanıcıları App1'den geldiklerinde, zaten bir form bileti alacaklar. Ağ dışındaki kullanıcılar geldiğinde, login.aspx'e yönlendirilirler.

Notlar: Ağ kullanıcıları App2'yi işaretlerse bunun bir dezavantajı olur. Bunu nasıl halledeceğime emin değilim. Süresi bitmeyen bir çerez varsa, çok fazla önemli olmaz. Bir seçenek oturum açma sayfasına, "Ben zaten bir ağ kullanıcısıyım - otomatik olarak giriş yap" gibi bir şey yazacaktı.

Form bileti verme konusunda yardımcı olacak bir kodum var. Cevabı zamanım olduğu gibi güncelleyeceğim.

Farklı rol sağlayıcılarını işlemek için App2'de bazı fantezi rol yönetimi ayak işi yapmanız gerekeceğini unutmayın.Yukarıdaki Amazon referansı eskiydi, ancak bu tür özel Kimlik Doğrulama ve Yetkilendirme sorunlarına rastladığımda kendimi sürekli referans olarak görüyorum.

+0

Giriş için teşekkürler Brett. Ağ kullanıcıları için giriş kritik değildir, ancak müşteri tarafından istenir. Bu işlevi uygulamak zorunda kaldığımda, sizinkileri de dahil olmak üzere seçeneklerimi değerlendirmeye devam edeceğim. –

+0

Bu rotayı çoktan gittim. Üstesinden gelmek için birçok engel vardı, ama çoğunlukla işe yarıyor. Windows Auth sitesi (Site1) için URL'yi yerel intranet site etki alanına ekledim, böylece kullanıcılar otomatik olarak oturum açıp Site2'ye yönlendirildi. –

0

size iş yapılır, böylece IIS iki farklı uygulamaları yaratacaktır, bu mükemmel mümkün! =)

+0

IIS7 ile değil. IIS7'deki uygulamayı Formlar'dan Windows kimlik doğrulamasına veya tam tersi olarak değiştirdiğinizde, proje için WebConfig değiştirir. İki uygulama yapacağım, ancak ikisi de dosyadaki aynı fiziksel dizine işaret ediyor olacaklar. Kimlik doğrulama türünü tek bir uygulamada değiştirmek diğerini etkiler. –

İlgili konular