Nasıl Microsoft AD ve php web uygulaması tek oturum kullanırım?

5 Cevap php

Ben bir bilgisayarda IE otomatik olarak bir uygulamaya imza için kullanabileceğiniz bazı ekstra başlık göndermek istedi edilebilir bir etki alanına katılmış belli belirsiz farkında değilim. Ben mod php ile bir windows sunucu üzerinde çalışan apache var. Ben gerekirse oturum zorunda kullanıcıyı önlemek mümkün olmak istiyorum. Ben kebros ve apache modülleri hakkında konuşurken bazı bağlantılar tespit ettik.

http://www.onlamp.com/pub/a/onlamp/2003/09/11/kerberos.html?page=last https://metacpan.org/pod/Apache2::AuthenNTLM

Ben windows koşuyorum yana Onun olmayan önemsiz olduğu kanıtlanmış perl veya apache modülleri yüklü almak için. Ama php başlıklarına erişim yok?

I found this but it doesn't do any authentication, it just shows that php can read the ntlm headers. http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

Benim kullanıcıları sadece uygulama işaret ve bunları otomatik olarak doğrulanmış olması var edebilmek istiyorum. Herkes bu ile herhangi bir deneyimi vardı ya da hiç işe aldı?

UPDATE Since originally posting this question, we've changed setups to nginx and php-fcgi still running on windows. Apache2 and php-cgi on windows is probably one of the slowest setups you could configure on windows. It's looking like apache might still be needed (it works with php-fcgi) but I would prefer a nginx solution.

Ben de hala anlamıyorum (ve eğitimli olmak isterdim) http sunucu eklentileri gereklidir ve biz bir php, web sunucusu agnostik çözüm değil neden.

5 Cevap

IIS / PHP fcgi için, yetkisiz bir başlık göndermek gerekir:

function EnableAuthentication()
{
    $realm = "yoursite";
    header('WWW-Authenticate: Digest realm="'.$realm.'",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');
    header("HTTP/1.1 401 Unauthorized"); 
    exit;
}

Daha sonra birlikte adı da alabilirsiniz:

$winuser = $_SERVER["REMOTE_USER"];

Sonra $ winuser izin kullanıcıların benim veritabanında olduğundan emin olun.

EMİN olun ve ayrıcalıklı olmayan bir hesap altında bu test edin. Ben ilk bu yüklü zaman ben de denedim ve iyi çalıştı, ancak standart olmayan sunucu admin kullanıcı çalıştı daha sonra bu başarısız oldu. Geçici bazı dizinlerin izinleri misafir kullanıcılar için değişmiş olması gerekir çıkıyor. Ben tam ayarlarını hatırlamıyorum.

Benim organizasyon için çözmek için gereken benzer bir sorun vardı.

I adLDAP kullanarak içine bakıyordu.

Çok Active Directory ile kesintisiz kimlik ulaşmak için sitedeki bazı belgeler vardır.

Sizin için bir seçenek CAS (merkezi kimlik doğrulama servisi) kullanmaktır.

Bu php istemci kütüphanesi vardır.

Nasıl-MS Active Directory bağlantı: http://www.ja-sig.org/wiki/display/CASUM/Active+Directory

Gerçi Apache Maven 2 gerektirir.

Bunun için (tür) bir arka uç olarak OpenID kullanan bir çözüm merak olurdu ... Ben (çabuk) googled zaman doğrudan ActiveDirectory içine kanca bir şey görmek değildi. Ancak, (yerel AD karşı kimlik kontrol bir OpenID sağlayıcısı olurdu) düz HTTP (S) üzerinden uygulamak oldukça ağrısız olabilir. Hiçbir web sunucu modülleri gereklidir - en iyi durum senaryosu, sadece uygulaması için bir kaç sınıfları eklemek ve kapalı ve çalışan olmak mümkün olabilir. Orada bu iki yanındaki açık kaynak kod bir sürü, bu yüzden başka bir şey varsa, bir göz atmaya değer. Eğer kullanıcılar (yani onlara OpenID URL'leri verdi) için backend maruz varsa, onları bu kimlik bilgilerini kullanarak sadece iç bölgelerde daha fazla giriş mümkün olmanın yararı olurdu. (Örnek:. Yığın taşması)

Bir kenara, ben Internet Explorer gerekmektedir ki, böyle yapmakla karşı olurdum. Sanırım bu soruyu yazdı yoldan hedef ise emin değilim, ama BT ortamına bağlı olarak, ben Firefox veya Safari (ya da Opera ya da ...) kullanan insanların daha az hevesli olmasını beklersiniz. (Sen, önce IE karşı size gelişmekte olan değil mi? Ben öyle yaptım zaman bu acı oldu.) Bu da tek seçenek olmamalı sadece, IE bu özelliği kullanmak olamayacağını söylemek değildir . Deftere bağlantı NTLM IE fazla ile çalıştı belirtti, ama ben onunla herhangi bir deneyimi yok, çünkü bu işe ne kadar iyi yargılamak zor.