Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
İş gücü kiracıları
Dış kiracılar (daha fazla bilgi edinin)
Bu öğretici, Python Flask Web uygulamasının güvenliğini sağlama konusunda size yol gösterir.
Bu öğreticide şunları yapacaksınız:
- Python Flask projesi oluşturma
- Gerekli bağımlılıkları yükleme
- Flask web uygulamanızı kimlik doğrulaması için Microsoft kimlik platformunuzu kullanacak şekilde yapılandırma
- Flask web uygulamanızda oturum açma ve oturum kapatma deneyimini test edin
Önkoşullar
- Çalışan konut kiracısı. Varsayılan Dizininizi kullanabilir veya yeni bir kiracı ayarlayabilirsiniz.
-
Microsoft Entra yönetim merkezine, yalnızca bu kuruluş dizinindeki Hesaplar için yapılandırılmış yeni bir uygulama kaydedin. Daha fazla bilgi için Bir uygulamayı kaydetme bölümüne bakın. Daha sonra kullanmak üzere uygulamaya Genel Bakış sayfasından aşağıdaki değerleri kaydedin:
- Uygulama (istemci) kimliği
- Dizin (kullanıcı) kimliği
- Uygulama kaydınıza bir istemci gizli dizisi ekleyin. Üretim uygulamalarında istemci gizli dizilerini kullanmayın. Bunun yerine sertifikaları veya federasyon kimlik bilgilerini kullanın. Daha fazla bilgi için bkz. Uygulamanıza kimlik bilgileri ekleme.
- Python 3+.
- Visual Studio Code veya başka bir kod düzenleyicisi.
Flask projesi oluşturma
Flask uygulamanızı barındırmak için flask-web-appgibi bir klasör oluşturun.
Bir konsol penceresi açın ve komutunu kullanarak dizini flask web uygulaması klasörünüz olarak değiştirin
cd flask-web-appSanal ortamı ayarlama
İşletim sisteminize bağlı olarak, sanal ortamınızı ayarlamak ve etkinleştirmek için aşağıdaki komutları çalıştırın:
Windows işletim sistemi için:
py -m venv .venv .venv\scripts\activatemacOS veya Linux işletim sistemi için:
python3 -m venv .venv source .venv/bin/activate
Uygulama bağımlılıklarını yükleme
Uygulama bağımlılıklarını yüklemek için aşağıdaki komutları çalıştırın:
pip install flask
pip install python-dotenv
pip install requests
pip install "ms_identity_python[flask] @ git+https://github.com/azure-samples/ms-identity-python@0.9"
Yüklediğiniz ms_identity_python kitaplığı, bağımlılığı olarak Python için Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) otomatik olarak yükler. MSAL Python, kullanıcıların kimliğini doğrulamanızı ve erişim belirteçlerini yönetmenizi sağlayan kitaplıktır.
Gerekli kitaplıkları yükledikten sonra aşağıdaki komutu çalıştırarak gereksinimler dosyanızı güncelleştirin:
pip freeze > requirements.txt
Uygulamayı kimlik doğrulaması için yapılandırma
Microsoft kimlik platformunu kullanarak kullanıcılarda oturum açabilen web uygulamaları bir yapılandırma dosyası ( .env) aracılığıyla yapılandırılır. Python Flask'te aşağıdaki değerleri belirtmelidir:
| Ortam değişkeni | Description |
|---|---|
AUTHORITY |
Uygulamanın kaydedildiği bulut örneğinin URL'si. Biçim: https://{Instance}/{TenantId}. Aşağıdaki Örnek değerlerinden birini kullanın:- https://login.microsoftonline.com/ (Azure genel bulutu)- https://login.microsoftonline.us/ (Azure ABD kamu)- https://login.microsoftonline.de/ (Microsoft Entra Germany)- https://login.partner.microsoftonline.cn/ (Microsoft Entra China, 21Vianet tarafından işletilmektedir) |
TENANT_ID |
Uygulamanın kayıtlı olduğu kiracının tanımlayıcısı. Uygulama kaydından kiracı kimliğini tercih edin veya şunlardan birini kullanın: - organizations: kullanıcıların herhangi bir iş veya okul hesabında oturum açması- common: herhangi bir iş veya okul hesabıyla veya Microsoft kişisel hesabıyla kullanıcıları oturum açma- consumers: kullanıcıları yalnızca Microsoft kişisel hesabıyla oturum açma |
CLIENT_ID |
Uygulama kaydından alınan uygulamanın (istemci) tanımlayıcısı. |
CLIENT_SECRET |
Microsoft Entra yönetim merkezine kimlik bilgileri ekleme bölümünden alınan gizli dizi değeri. |
REDIRECT_URI |
Microsoft kimlik platformunun kimlik doğrulamasından sonra güvenlik belirteçleri gönderdiği URI. |
Yapılandırma dosyasını güncelleştirme
Uygulamanızın yapılandırmasını güvenli bir şekilde depolamak için kök klasörünüzde bir .env dosyası oluşturun. .env dosyanız aşağıdaki ortam değişkenlerini içermelidir:
CLIENT_ID="<Enter_your_client_id>" CLIENT_SECRET="<Enter_your_client_secret>" AUTHORITY="https://login.microsoftonline.com/<Enter_tenant_id>" REDIRECT_URI="<Enter_redirect_uri>"Yer tutucuları aşağıdaki değerlerle değiştirin:
- Kaydettiğiniz istemci web uygulamasının
<Enter_your_client_id>ile 'ı değiştirin. -
<Enter_tenant_id>'ı web uygulamanızı kaydettiğiniz Dizin veya Kiracı Kimliği ile değiştirin. -
<Enter_your_client_secret>değerini, oluşturduğunuz web uygulamasının İstemci gizli anahtarı değeriyle değiştirin. Bu öğreticide, tanıtım amacıyla gizli bilgileri kullanıyoruz. Üretimde, sertifikaları veya federasyon kimlik bilgileri gibi daha güvenli yaklaşımlar kullanın. -
<Enter_redirect_uri>değerini daha önce kaydettiğiniz yeniden yönlendirme URI'siyle değiştirin. Bu öğretici, yeniden yönlendirme URI yolunuhttp://localhost:3000/getATokenolarak ayarlar.
- Kaydettiğiniz istemci web uygulamasının
Ortam değişkenlerini okumak ve ihtiyacınız olan diğer yapılandırmaları eklemek için bir app_config.py dosyası oluşturun.
import os AUTHORITY = os.getenv("AUTHORITY") CLIENT_ID = os.getenv("CLIENT_ID") CLIENT_SECRET = os.getenv("CLIENT_SECRET") REDIRECT_URI = os.getenv("REDIRECT_URI") SESSION_TYPE = "filesystem" # Tells the Flask-session extension to store sessions in the filesystem. Don't use in production apps.
Uygulama uç noktalarını yapılandırma
Bu aşamada, web uygulaması uç noktalarınızı oluşturur ve iş mantığını uygulamanıza eklersiniz.
Kök klasörünüzde app.py adlı bir dosya oluşturun.
app.py dosyasının en üstünde gerekli bağımlılıkları içeri aktarın.
import os import requests from flask import Flask, render_template from identity.flask import Auth import app_configFlask uygulamanızı başlatın ve app_config.py dosyanızda belirttiğiniz oturum depolama türünü kullanacak şekilde yapılandırın.
app = Flask(__name__) app.config.from_object(app_config)Uygulama istemcisini başlatın. Flask web uygulaması gizli bir istemcidir. İstemci sırrını geçiririz çünkü gizli istemciler bunu güvenle saklayabilir. Arka planda, kimlik kitaplığı MSAL kitaplığının
ConfidentialClientApplicationsınıfını çağırır.auth = Auth( app, authority=app.config["AUTHORITY"], client_id=app.config["CLIENT_ID"], client_credential=app.config["CLIENT_SECRET"], redirect_uri=app.config["REDIRECT_URI"] )Flask uygulamanıza gerekli uç noktaları ekleyin. Web uygulaması, kullanıcıda oturum açmak için yetkilendirme kodu akışını kullanır. ms_identity_python MSAL sarmalayıcı kitaplığı, MSAL kütüphanesi ile etkileşim kurmayı kolaylaştırarak uygulamanıza kullanıcı oturumu açmayı ve kapatmayı daha kolay eklemenize yardımcı olur. Bir dizin sayfası ekler ve
login_requiredkitaplığı tarafından sağlanan dekoratörü kullanarak bu sayfayı koruruz.login_requireddekoratörü, dizin sayfasına yalnızca kimliği doğrulanmış kullanıcıların erişebilmesini sağlar.@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", )Bu görünümü
@login_requiredile dekore ettiğimiz için kullanıcının mevcut olması garanti edilir.
Uygulama şablonlarını oluşturma
Kök klasörünüzde şablonları adlı bir klasör oluşturun. templates klasöründe index.htmladlı bir dosya oluşturun. Bu, uygulamanın giriş sayfasıdır. index.html dosyasına aşağıdaki kodu ekleyin:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
<h2>Welcome {{ user.get("name") }}!</h2>
<img src="https://github.com/Azure-Samples/ms-identity-python-webapp-django/raw/main/static/topology.png" alt="Topology">
<ul>
{% if api_endpoint %}
<!-- If an API endpoint is declared and scopes defined, this link will show. We set this in the call an API tutorial. For this tutorial, we do not define this endpoint. -->
<li><a href='/call_api'>Call an API</a></li>
{% endif %}
<li><a href="{{ url_for('identity.logout') }}">Logout</a></li>
</ul>
<hr>
<footer style="text-align: right">{{ title }}</footer>
</body>
</html>
Örnek web uygulamasını çalıştırma ve test edin
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 bağlantı noktası, daha önce kaydettiğiniz yeniden yönlendirme URI'sinin bağlantı noktasına benzer olmalıdır.
Tarayıcınızı açın ve
http://localhost:3000'a gidin. Bir oturum açma sayfası görürsünüz.Adımları izleyerek Microsoft hesabınızla oturum açın. Oturum açmak için bir e-posta adresi ve parola sağlamanız istenir.
Uygulamanın ihtiyaç duyduğu kapsamlar varsa bir onay ekranı gösterilir. Uygulama, erişime izin ettiğiniz verilere erişimi korumak ve oturum açmak için izin istemektedir. SeçKabul Et. Hiçbir kapsam tanımlanmadıysa bu ekran görünmez.
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:
başarılı kimlik doğrulamasından sonra flask web uygulaması örneğinin ekran görüntüsü
Uygulamanın oturumunu kapatmak için Oturum Kapatma'ni seçin. Oturumu kapatmak için bir hesap seçmeniz istenir. Oturum açmak için kullandığınız hesabı seçin.
Özel URL alan adı kullanma (İsteğe bağlı)
Workforce kiracıları özel URL alan adlarını desteklemez.