Azure AD B2C kullanarak örnek python web uygulamasında kimlik doğrulamasını yapılandırma
Bu makalede, web uygulamalarınıza Azure Active Directory B2C (Azure AD B2C) kimlik doğrulaması eklemeyi gösteren örnek bir Python web uygulaması kullanılmaktadır.
Genel bakış
OpenID Connect (OIDC), OAuth 2.0 üzerinde oluşturulmuş bir kimlik doğrulama protokolüdür. Kullanıcıların uygulamada güvenli bir şekilde oturum açmasını sağlamak için OIDC'yi kullanabilirsiniz. Bu web uygulaması örneği, Python web uygulamalarına kimlik doğrulama ve yetkilendirme desteği eklemeyi kolaylaştırmak için Python için kimlik paketini kullanır.
Oturum açma akışı aşağıdaki adımları içerir:
- Kullanıcılar web uygulamasına gider ve Oturum aç'ı seçer.
- Uygulama bir kimlik doğrulama isteği başlatır ve kullanıcıları Azure AD B2C'ye yönlendirir.
- Kullanıcılar kaydolun veya oturum açın, parolayı sıfırlayın veya bir sosyal hesapla oturum açın.
- Kullanıcılar başarıyla oturum açıldıktan sonra Azure AD B2C uygulamaya bir kimlik belirteci döndürür.
- Uygulama yetkilendirme kodunu bir kimlik belirteci ile değiştirir, kimlik belirtecini doğrular, talepleri okur ve ardından kullanıcılara güvenli bir sayfa döndürür.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Henüz bir kiracınız yoksa, Azure aboneliğinize bağlı bir Azure AD B2C kiracısı oluşturun.
- Python 3.8+
1. Adım: Kullanıcı akışınızı yapılandırma
Kullanıcılar uygulamanızda oturum açmaya çalıştığında, uygulama bir kullanıcı akışı aracılığıyla yetkilendirme uç noktasına bir kimlik doğrulama isteği başlatır. Kullanıcı akışı, kullanıcı deneyimini tanımlar ve denetler. Kullanıcılar kullanıcı akışını tamamladıktan sonra Azure AD B2C bir belirteç oluşturur ve ardından kullanıcıları uygulamanıza geri yönlendirir.
Henüz yapmadıysanız, bir kullanıcı akışı veya özel ilke oluşturun. Üç ayrı kullanıcı akışı oluşturmak için aşağıdaki adımları yineleyin:
- Birleştirilmiş Oturum açma ve kullanıcı akışına kaydolma (gibi).
susi
Bu kullanıcı akışı, Parolanızı unuttunuz deneyimini de destekler. - Kullanıcı akışını düzenleyen profil, örneğin
edit_profile
. - Gibi
reset_password
bir Parola sıfırlama kullanıcı akışı.
Azure AD B2C B2C_1_
, kullanıcı akışı adına ekler. Örneğin susi
, B2C_1_susi
olur.
2. Adım: Web uygulaması kaydetme
Uygulamanızın Azure AD B2C ile oturum açmasını sağlamak için uygulamanızı Azure AD B2C dizinine kaydedin. Uygulamanızı kaydetmek, uygulama ile Azure AD B2C arasında bir güven ilişkisi oluşturur.
Uygulama kaydı sırasında Yeniden Yönlendirme URI'sini belirtirsiniz. Yeniden yönlendirme URI'si, kullanıcıların Azure AD B2C ile kimlik doğrulaması yaptıktan sonra Azure AD B2C tarafından yönlendirildiği uç noktadır. Uygulama kayıt işlemi, uygulamanızı benzersiz olarak tanımlayan ve istemci kimliği olarak da bilinen bir Uygulama Kimliği oluşturur. Uygulamanız kaydedildikten sonra Azure AD B2C, kimlik doğrulama istekleri oluşturmak için hem uygulama kimliğini hem de yeniden yönlendirme URI'sini kullanır.
2.1. Adım: Uygulamayı kaydetme
Web uygulaması kaydını oluşturmak için şu adımları izleyin:
Azure Portal’ında oturum açın.
Birden çok kiracıya erişiminiz varsa, Dizinler + abonelikler menüsünden Azure AD B2C kiracınıza geçmek için üstteki menüden Ayarlar simgesini seçin.
Azure portalında Azure AD B2C'yi arayın ve seçin.
Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.
Ad'ın altında uygulama için bir ad girin (örneğin, webapp1).
Desteklenen hesap türleri altında, herhangi bir kimlik sağlayıcısı veya kuruluş dizinindeki hesaplar (Kullanıcı akışı olan kullanıcıların kimliklerini doğrulamak için) seçeneğini belirleyin.
Yeniden Yönlendirme URI'si'nin altında Web'i seçin ve URL kutusuna yazın
http://localhost:5000/getAToken
.İzinler'in altında Openid ve çevrimdışı erişim izinleri için yönetici onayı ver onay kutusunu seçin.
Kaydet'i seçin.
Genel bakış'ı seçin.
Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) kimliğini kaydedin.
2.2. Adım: Web uygulaması istemci gizli dizisi oluşturma
Kayıtlı web uygulaması için bir istemci gizli dizisi oluşturun. Web uygulaması, belirteç istediğinde kimliğini kanıtlamak için istemci gizli dizisini kullanır.
- 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, clientsecret1).
- Süre Sonu'nun altında gizli dizinin geçerli olduğu süreyi seçin 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.
3. Adım: Web uygulaması örneğini alma
Zip dosyasını indirin veya GitHub'dan örnek web uygulamasını kopyalayın.
git clone https://github.com/Azure-Samples/ms-identity-python-webapp.git
Örnek dosyayı, yolun toplam uzunluğunun 260 veya daha az karakter olduğu bir klasöre ayıklayın.
4. Adım: Örnek web uygulamasını yapılandırma
Projenin kök dizininde şu adımları izleyin:
.env
Kılavuz olarak kullanarak.env.sample
projenin kök klasöründe bir dosya oluşturun.FLASK_DEBUG=True B2C_TENANT_NAME=<tenant name> CLIENT_ID=<client id> CLIENT_SECRET=<client secret> SIGNUPSIGNIN_USER_FLOW=B2C_1_signupsignin1 EDITPROFILE_USER_FLOW=B2C_1_profile_editing RESETPASSWORD_USER_FLOW=B2C_1_reset_password
Anahtar Değer B2C_TENANT_NAME
Azure AD B2C kiracı adınızın ilk bölümü (örneğin, contoso
).CLIENT_ID
2.1. adımdaki web API'si uygulama kimliği. CLIENT_SECRET
2.2. adımda oluşturduğunuz istemci gizli anahtarı değeri. *_USER_FLOW
1. adımda oluşturduğunuz kullanıcı akışları. Ortam değişkenlerine app_config.py başvurulur ve kaynak denetiminden uzak tutmak için ayrı bir .env dosyasında tutulur. Sağlanan .gitignore dosyası .env dosyasının iade edilmesini engeller.
5. Adım: Örnek web uygulamasını çalıştırma
Konsolunuzda veya terminalinizde örneği içeren dizine geçin. Örneğin:
cd ms-identity-python-webapp
Aşağıdaki komutları çalıştırarak PyPi'den gerekli paketleri yükleyin ve web uygulamasını yerel makinenizde çalıştırın:
python -m pip install -r requirements.txt python -m flask run --host localhost --port 5000
Konsol penceresinde yerel olarak çalışan uygulamanın bağlantı noktası numarası görüntülenir:
* Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on `http://localhost:5000/` (Press CTRL+C to quit)
Yerel makinenizde çalışan web uygulamasını görüntülemek için adresine
http://localhost:5000
gidin.Oturum Aç'ı seçin.
Kaydolma veya oturum açma işlemini tamamlayın.
Kimlik doğrulaması başarılı olduktan sonra görünen adınızı burada gösterildiği gibi görürsünüz:
6. Adım: Web API'sine çağrı
Uygulamanızın Azure AD B2C ile oturum açmasını ve web API'sini çağırmasını sağlamak için Azure AD B2C dizinine iki uygulama kaydetmeniz gerekir.
2. Adımda zaten oluşturduğunuz web uygulaması (Python) kaydı. Bu uygulama kaydı, uygulamanızın Azure AD B2C ile oturum açmasını sağlar. Uygulama kayıt işlemi, uygulamanızı benzersiz olarak tanımlayan ve istemci kimliği olarak da bilinen bir Uygulama Kimliği oluşturur. Örneğin, Uygulama Kimliği: 1.
Web API kaydı, uygulamanızın korumalı bir web API'sini çağırmasını sağlar. Kayıt, web API'sinin izinlerini (kapsamları) kullanıma sunar. Uygulama kayıt işlemi, web API'nizi benzersiz olarak tanımlayan bir Uygulama Kimliği oluşturur (örneğin, Uygulama Kimliği: 2). Uygulamanıza (Uygulama Kimliği: 1) web API'si kapsamları için izin verin (Uygulama Kimliği: 2).
Uygulama kayıtları ve uygulama mimarisi aşağıdaki diyagramlarda açıklanmıştır:
Kimlik doğrulaması tamamlandıktan sonra, kullanıcılar korumalı bir web API'sini çağıran uygulamayla etkileşim kurar. Web API'sinde taşıyıcı belirteç kimlik doğrulaması kullanılır. Taşıyıcı belirteci, uygulamanın Azure AD B2C'den aldığı erişim belirtecidir. Uygulama, belirteci HTTPS isteğinin yetkilendirme üst bilgisine geçirir.
Authorization: Bearer <access token>
Erişim belirtecinin kapsamı web API'sinin kapsamlarıyla eşleşmiyorsa, kimlik doğrulama kitaplığı doğru kapsamlara sahip yeni bir erişim belirteci alır.
6.1. Adım: Web API'sini kaydetme
Web API'si uygulama kaydını (Uygulama Kimliği: 2) oluşturmak için şu adımları izleyin:
Azure Portal’ında oturum açın.
Azure AD B2C kiracınızı içeren dizini kullandığınızdan emin olun. Portal araç çubuğunda Dizinler + abonelikler simgesini seçin.
Portal ayarlarında | Dizinler + abonelikler sayfası, Dizin adı listesinde Azure AD B2C dizininizi bulun ve ardından Değiştir'i seçin.
Azure portalında Azure AD B2C'yi arayın ve seçin.
Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.
Ad alanına uygulama için bir ad girin (örneğin, my-api1). Yeniden Yönlendirme URI'sinin ve Desteklenen hesap türlerinin varsayılan değerlerini değiştirmeyin.
Kaydet'i seçin.
Uygulama kaydı tamamlandıktan sonra Genel Bakış'ı seçin.
Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) Kimliği değerini kaydedin.
6.2. Adım: Kapsamları yapılandırma
Oluşturduğunuz my-api1 uygulamasını (Uygulama Kimliği: 2) seçerek Genel Bakış sayfasını açın.
Yönet'in altında API'yi kullanıma sunma'yı seçin.
Uygulama Kimliği URI'si'nin yanındaki Ayarla bağlantısını seçin. Varsayılan değeri (GUID) benzersiz bir adla (örneğin, tasks-api) değiştirin ve kaydet'i seçin.
Web uygulamanız web API'si için bir erişim belirteci istediğinde, API için tanımladığınız her kapsamın ön eki olarak bu URI'yi eklemelidir.
Bu API tarafından tanımlanan kapsamlar'ın altında Kapsam ekle'yi seçin.
API'ye okuma erişimini tanımlayan bir kapsam oluşturmak için:
- Kapsam adı olarak tasks.read girin.
- Yönetici onayı görünen adı için Görevlere okuma erişimi API'sini girin.
- Yönetici onayı açıklaması için Görevler API'sine okuma erişimine izin verir girin.
Kapsam ekle'yi seçin.
Kapsam ekle'yi seçin ve ardından API'ye yazma erişimini tanımlayan bir kapsam ekleyin:
- Kapsam adı olarak tasks.write yazın.
- Yönetici onayı görünen adı için Görevlere yazma erişimi API'sini girin.
- Yönetici onayı açıklaması için Görevler API'sine yazma erişimine izin verir yazın.
Kapsam ekle'yi seçin.
6.3. Adım: Web uygulamasına izin verme
Uygulamanıza (Uygulama Kimliği: 1) izinleri vermek için şu adımları izleyin:
Uygulama kayıtları'ı seçin ve ardından oluşturduğunuz uygulamayı seçin (Uygulama Kimliği: 1).
Yönet'in altında API izinleri'ne tıklayın.
Yapılandırılan izinler'in altında İzin ekle'yi seçin.
API'lerim sekmesini seçin.
Web uygulamasına erişim verilmesi gereken API'yi (Uygulama Kimliği: 2) seçin. Örneğin, my-api1 girin.
İzin'in altında görevleri genişletin ve daha önce tanımladığınız kapsamları seçin (örneğin, tasks.read ve tasks.write).
İzinler ekle'yi seçin.
Kiracı adınız> için< Yönetici onayı ver'i seçin.
Evet'i seçin.
Yenile'yi seçin ve her iki kapsam için durum altında ... için verildi ifadesinin göründüğünü doğrulayın.
Yapılandırılan izinler listesinden kapsamınızı seçin ve kapsamın tam adını kopyalayın.
6.4. Adım: Web API'nizi yapılandırma
Bu örnek, web uygulamasının bir web API'sinde kullanabileceği ilgili kapsamlara sahip bir erişim belirteci alır. Bu örneğin kendisi bir web API'si olarak işlem yapmaz. Bunun yerine, mevcut bir web API'sini kullanmanız veya yeni bir api oluşturmanız gerekir. B2C kiracınızda web API'sini oluşturma öğreticisi için bkz . Azure AD B2C kullanarak kendi web API'nizde kimlik doğrulamasını etkinleştirme.
6.5. Adım: Örnek uygulamayı web API'siyle yapılandırma
app_config.py dosyasını açın. Bu dosya, Azure AD B2C kimlik sağlayıcınız hakkında bilgi içerir. Uygulama ayarlarının aşağıdaki özelliklerini güncelleştirin:
Anahtar | Değer |
---|---|
ENDPOINT |
Web API'nizin URI'sini (örneğin, https://localhost:6000/hello ). |
SCOPE |
Oluşturduğunuz web API kapsamları (örneğin, ["https://contoso.onmicrosoft.com/tasks-api/tasks.read", https://contoso.onmicrosoft.com/tasks-api/tasks.write"] ). |
6.6. Adım: Örnek uygulamayı çalıştırma
Konsolunuzda veya terminalinizde örneği içeren dizine geçin.
Uygulama hala çalışmıyorsa, 5. Adım'dan komutunu kullanarak uygulamayı yeniden başlatın.
Aşağı akış API'si çağır'ı seçin.
7. Adım: Uygulamanızı dağıtma
Bir üretim uygulamasında, uygulama kaydı yeniden yönlendirme URI'si normalde uygulamanızın çalıştığı genel olarak erişilebilir bir uç noktadır, örneğin https://contoso.com/getAToken
.
Kayıtlı uygulamalarınıza istediğiniz zaman yeniden yönlendirme URI'leri ekleyebilir ve değiştirebilirsiniz. Yeniden yönlendirme URI'leri için aşağıdaki kısıtlamalar geçerlidir:
- Yeniden yönlendirme URL'si düzeniyle
https
başlamalıdır. - Yeniden yönlendirme URL'si büyük/küçük harfe duyarlıdır. Büyük/küçük harf, çalışan uygulamanızın URL yolunun durumuyla eşleşmelidir.
Sonraki adımlar
- Azure AD B2C kullanarak Python web uygulamasında kimlik doğrulama seçeneklerini yapılandırmayı öğrenin.