Örnek Python Flask web uygulamasında kullanıcılarda oturum açma
Bu makalede, Microsoft Entra Dış Kimlik tarafından güvenliği sağlanan bir Python Flask web uygulamasını keşfedersiniz. Bu örnek, Python Flask web uygulamasında kimlik doğrulaması yapılan müşterilere yönelik oturum açma deneyiminde size yol gösterir. Örnek web uygulaması, kullanıcı kimlik doğrulamasını işlemek için Python için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL Python) kullanır.
Önkoşullar
- Visual Studio Code veya başka bir kod düzenleyicisi.
- Python 3+.
- Dış kiracı. Oluşturmak için aşağıdaki yöntemlerden birini seçin:
- (Önerilen) Doğrudan Visual Studio Code'da dış kiracı ayarlamak için Microsoft Entra Dış Kimlik uzantısını kullanın.
- Microsoft Entra yönetim merkezinde yeni bir dış kiracı oluşturun.
Web uygulamasını kaydetme
Uygulamanızın Microsoft Entra ile kullanıcılarla oturum açmasını sağlamak için Microsoft Entra Dış Kimlik oluşturduğunuz uygulama hakkında bilgi edinilmesi gerekir. Uygulama kaydı, uygulama ile Microsoft Entra arasında bir güven ilişkisi kurar. Bir uygulamayı kaydettiğinizde, Dış Kimlik, kimlik doğrulama istekleri oluştururken uygulamanızı tanımlamak için kullanılan bir değer olan Uygulama (istemci) kimliği olarak bilinen benzersiz bir tanımlayıcı oluşturur.
Aşağıdaki adımlar, uygulamanızı Microsoft Entra yönetim merkezine nasıl kaydedeceğini gösterir:
Microsoft Entra yönetim merkezinde en azından Uygulama Geliştiricisi olarak oturum açın.
Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden dış kiracınıza geçmek için üst menüdeki Ayarlar simgesini kullanın.
Kimlik>Uygulamaları'na> göz atın Uygulama kayıtları.
+ Yeni kayıt'ı seçin.
Görüntülenen Uygulamayı kaydet sayfasında;
- Uygulamanın kullanıcılarına gösterilen anlamlı bir uygulama Adı girin, örneğin ciam-client-app.
- Desteklenen hesap türleri'nin altında Yalnızca bu kuruluş dizinindeki Hesaplar'ı seçin.
Kaydet'i seçin.
Başarılı bir kayıtta uygulamanın Genel Bakış bölmesi görüntülenir. Uygulama kaynak kodunuzda kullanılacak Uygulama (istemci) kimliğini kaydedin.
Uygulama kaydınıza uygulama türünüzü belirtmek için şu adımları izleyin:
- Yönet'in altında Kimlik Doğrulaması'yı seçin
- Platform yapılandırmaları sayfasında Platform ekle'yi ve ardından Web seçeneğini belirleyin.
- Yeniden Yönlendirme URI'leri için girin
http://localhost:3000/getAToken
. Bu yeniden yönlendirme URI'si, yetkilendirme sunucusunun erişim belirtecini gönderdiği konumdur. Kullanım örneğiniz için özelleştirebilirsiniz. - Değişikliklerinizi kaydetmek için Yapılandır'ı seçin.
Uygulama istemci gizli dizisi ekleme
Kayıtlı uygulama için bir istemci gizli dizisi oluşturun. Uygulama, belirteç istediğinde kimliğini kanıtlamak için istemci gizli dizisini kullanır.
- Uygulama kayıtları sayfasında, oluşturduğunuz uygulamayı (ciam-client-app gibi) seçerek Genel Bakış sayfasını açın.
- Yönet'in altında Sertifikalar ve gizli diziler'i seçin.
- Yeni gizli anahtar'ı seçin.
- Açıklama kutusuna istemci gizli dizisi için bir açıklama girin (örneğin, ciam uygulama istemci gizli dizisi).
- Süre Sonu'nun altında gizli dizinin geçerli olduğu bir süre seçin (kuruluşunuzun güvenlik kurallarına göre) ve ardından Ekle'yi seçin.
- Gizli dizinin Değerini kaydedin. Bu değeri sonraki bir adımda yapılandırma için kullanacaksınız. Gizli dizi değeri yeniden görüntülenmez ve Sertifikalar ve gizli dizilerden uzaklaştıktan sonra herhangi bir yolla alınamaz. Kaydettiğinizden emin olun.
Yönetici onayı verme
Uygulamanızı kaydettikten sonra user.read izni atanır. Ancak, kiracı bir dış kiracı olduğundan, müşteri kullanıcıları bu izni onaylayamaz. Yönetici olarak kiracıdaki tüm kullanıcılar adına bu izni onaylamanız gerekir:
Uygulama kayıtları sayfasında, oluşturduğunuz uygulamayı (ciam-client-app gibi) seçerek Genel Bakış sayfasını açın.
Yönet'in altında API izinleri'ne tıklayın.
- Kiracı adınız> için <Yönetici onayı ver'i ve ardından Evet'i seçin.
- Yenile'yi seçin, ardından izin için Durum altında Kiracı adınız> için <Verildi seçeneğinin gösterildiğini doğrulayın.
Kullanıcı akışı oluşturma
Müşterinin bir uygulamada oturum açmak veya uygulamaya kaydolmak için kullanabileceği bir kullanıcı akışı oluşturmak için bu adımları izleyin.
Microsoft Entra yönetim merkezinde en azından Dış Kimlik Kullanıcı Akışı Yöneticisi olarak oturum açın.
Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden dış kiracınıza geçmek için üst menüdeki Ayarlar simgesini kullanın.
Kimlik>Dış Kimlikleri>Kullanıcı akışları'na göz atın.
+ Yeni kullanıcı akışı'ni seçin.
Oluştur sayfasında:
Kullanıcı akışı için SignInSignUpSample gibi bir Ad girin.
Kimlik sağlayıcıları listesinde E-posta Hesapları'nı seçin. Bu kimlik sağlayıcısı, kullanıcıların e-posta adreslerini kullanarak oturum açmalarına veya kaydolmalarına olanak tanır.
E-posta hesapları'nın altında iki seçenek arasından birini belirleyebilirsiniz. Bu öğretici için Parolayla e-posta gönder'i seçin.
- Parolalı e-posta: Yeni kullanıcıların oturum açma adı olarak bir e-posta adresi ve ilk faktör kimlik bilgileri olarak parola kullanarak kaydolmasına ve oturum açmasına izin verir.
- Tek seferlik geçiş kodunu e-postayla gönderme: Yeni kullanıcıların oturum açma adı olarak bir e-posta adresi ve ilk faktör kimlik bilgileri olarak bir kerelik e-posta geçiş kodu kullanarak kaydolmasına ve oturum açmasına olanak tanır. Bu seçeneğin kullanıcı akışı düzeyinde kullanılabilir olması için tek seferlik e-posta geçiş kodu kiracı düzeyinde (Tüm Kimlik Sağlayıcıları>E-posta Bir kerelik geçiş kodu) etkinleştirilmelidir.
Kullanıcı öznitelikleri'nin altında, kayıt sırasında kullanıcıdan toplamak istediğiniz öznitelikleri seçin. Daha fazla göster'i seçerek Ülke/Bölge, Görünen Ad ve Posta Kodu için öznitelikleri ve talepleri seçebilirsiniz. Tamam'ı seçin. (Kullanıcılardan yalnızca ilk kez kaydolduğunda öznitelikleri istenir.)
Oluştur'u belirleyin. Yeni kullanıcı akışı, Kullanıcı akışları listesinde görünür. Gerekirse sayfayı yenileyin.
Self servis parola sıfırlamayı etkinleştirmek için Self servis parola sıfırlamayı etkinleştirme makalesindeki adımları kullanın.
Web uygulamasını kullanıcı akışıyla ilişkilendirme
Müşteri kullanıcılarının uygulamanızı kullanırken kaydolma veya oturum açma deneyimini görebilmesi için uygulamanızı bir kullanıcı akışıyla ilişkilendirmeniz gerekir. Birçok uygulama kullanıcı akışınız ile ilişkilendirilebilir ancak tek bir uygulama yalnızca bir kullanıcı akışıyla ilişkilendirilebilir.
Kenar çubuğu menüsünde Kimlik'i seçin.
Dış Kimlikler'i ve ardından Kullanıcı akışları'yı seçin.
Kullanıcı akışları sayfasında, daha önce oluşturduğunuz Kullanıcı akışı adını (örneğin, SignInSignUpSample) seçin.
Kullan'ın altında Uygulamalar'ı seçin.
Uygulama ekle'yi seçin.
Ciam-client-app gibi listeden uygulamayı seçin veya uygulamayı bulmak için arama kutusunu kullanın ve ardından seçin.
Seç'i seçin.
Uygulamanızı bir kullanıcı akışıyla ilişkilendirdikten sonra, Microsoft Entra yönetim merkezinden bir kullanıcının uygulamanıza kaydolma veya oturum açma deneyiminin benzetimini yaparak kullanıcı akışınızı test edebilirsiniz. Bunu yapmak için Kaydolma ve oturum açma kullanıcı akışınızı test etme'deki adımları kullanın.
Örnek web uygulamasını kopyalama veya indirme
Örnek uygulamayı edinmek için GitHub'dan kopyalayabilir veya .zip dosyası olarak indirebilirsiniz.
Örneği kopyalamak için bir komut istemi açın ve projeyi oluşturmak istediğiniz yere gidin ve aşağıdaki komutu girin:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-python.git
.zip dosyasını indirin. Adın uzunluğu 260 karakterden az olan bir dosya yoluna ayıklayın.
Proje bağımlılıklarını yükleme
Bir konsol penceresi açın ve Flask örnek web uygulamasını içeren dizine geçin:
cd flask-web-app
Sanal ortamı ayarlama
py -m venv .venv .venv\scripts\activate
Uygulama bağımlılıklarını yüklemek için aşağıdaki komutları çalıştırın:
python3 -m pip install -r requirements.txt
Örnek web uygulamasını yapılandırma
Proje dosyalarınızı Visual Studio Code'da veya kullandığınız düzenleyicide açın.
Kılavuz olarak .env.sample dosyasını kullanarak projenin kök klasöründe bir .env dosyası oluşturun.
.env dosyanızda aşağıdaki ortam değişkenlerini sağlayın:
CLIENT_ID
bu, daha önce kaydettiğiniz uygulamanın Uygulama (istemci) kimliğidir.CLIENT_SECRET
bu, daha önce kopyaladığınız uygulama gizli dizisi değeridir.AUTHORITY
bir belirteç yetkilisini tanımlayan URL'dir. {subdomain}.ciamlogin.com/{subdomain}.onmicrosoft.com https:// biçiminde olmalıdır. Alt etki alanını Dizin (kiracı) alt etki alanıyla değiştirin. Örneğin, kiracı birincil etki alanınız isecontoso.onmicrosoft.com
kullanıncontoso
. Kiracı alt etki alanınız yoksa kiracınızın ayrıntılarını okumayı öğrenin.
Yeniden yönlendirme URI'sinin iyi yapılandırıldığını onaylayın. Daha önce kaydettiğiniz yeniden yönlendirme URI'sinin yapılandırmanızla eşleşmesi gerekir. Bu örnek varsayılan olarak yeniden yönlendirme URI yolunu olarak
/getAToken
ayarlar. Bu, app_config.py dosyasında REDIRECT_PATH olarak yapılandırılır.
Örnek web uygulamasını çalıştırma ve test edin
Uygulamada oturum açma deneyimini görmek için uygulamayı çalıştırın.
Not
Bu örnek Python kimliği üçüncü taraf kitaplığını kullanır. Kitaplık Microsoft tarafından resmi olarak korunmaz ancak kullanımınız için önerilir. Bu kitaplık, MSAL Python ayrıntılarının çoğunu özetlediğinden web uygulamanıza kimlik doğrulaması eklemeyi kolaylaştırır.
Terminalinizde aşağıdaki komutu çalıştırın:
python3 -m flask run --debug --host=localhost --port=3000
İstediğiniz bağlantı noktasını kullanabilirsiniz. Bu, daha önce kaydettiğiniz yeniden yönlendirme URI'sinin bağlantı noktasına benzer olmalıdır.
Tarayıcınızı açın ve adresine
http://localhost:3000
gidin. Sayfayı aşağıdaki ekran görüntüsüne benzer şekilde görmeniz gerekir:Sayfanın yüklenmesi tamamlandıktan sonra Oturum Aç bağlantısı'nı seçin. Oturum açmanız istenir.
Oturum açma sayfasında, E-posta adresinizi yazın, İleri'yi seçin, Parolanızı yazın ve ardından Oturum aç'ı seçin. Hesabınız yoksa Hesap yok mu? seçeneğini belirleyin . Kayıt akışını başlatan bir bağlantı oluşturun.
Kaydolma seçeneğini belirlerseniz sign-uo akışından geçersiniz. Tüm kayıt akışını tamamlamak için e-postanızı, tek seferlik geçiş kodunuzu, yeni parolanızı ve diğer hesap ayrıntılarınızı doldurun.
Oturum açıp kaydolduktan sonra yeniden web uygulamasına yönlendirilirsiniz. Aşağıdaki ekran görüntüsüne benzer bir sayfa görürsünüz:
Kullanıcının web uygulamasında oturumunu kapatmak için Oturumu kapat'ı seçin veya Microsoft Graph uç noktasına çağrı yapmak için Aşağı akış API'sini çağır'ı seçin.
Nasıl çalışır?
Kullanıcılar Oturum aç bağlantısını seçtiğinde, uygulama bir kimlik doğrulama isteği başlatır ve kullanıcıları Microsoft Entra Dış Kimlik'a yönlendirir. Ardından bir kullanıcı görüntülenen sayfada oturum açar veya sayfaya kaydolür. Gerekli kimlik bilgilerini sağladıktan ve gerekli kapsamları onayladıktan sonra Microsoft Entra Dış Kimlik kullanıcıyı yetkilendirme koduyla web uygulamasına geri yönlendirir. Daha sonra web uygulaması, Microsoft Entra Dış Kimlik bir belirteç almak için bu yetkilendirme kodunu kullanır.
Kullanıcılar Oturumu Kapat bağlantısını seçtiğinde, uygulama oturumunu temizler ve kullanıcının oturumu kapattığını bildirmek için kullanıcıyı Microsoft Entra Dış Kimlik oturumu kapatma uç noktasına yönlendirir. Kullanıcı daha sonra web uygulamasına geri yönlendirilir.