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 Bağlan (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:

  1. Kullanıcılar web uygulamasına gider ve Oturum aç'ı seçer.
  2. Uygulama bir kimlik doğrulama isteği başlatır ve kullanıcıları Azure AD B2C'ye yönlendirir.
  3. Kullanıcılar kaydolun veya oturum açın, parolayı sıfırlayın veya bir sosyal hesapla oturum açın.
  4. Kullanıcılar başarıyla oturum açıldıktan sonra Azure AD B2C uygulamaya bir kimlik belirteci döndürür.
  5. 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

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ğinedit_profile.
  • Gibi reset_passwordbir 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:

  1. Azure Portal’ında oturum açın.

  2. 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.

  3. Azure portalında Azure AD B2C'yi arayın ve seçin.

  4. Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.

  5. Ad'ın altında uygulama için bir ad girin (örneğin, webapp1).

  6. 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.

  7. Yeniden Yönlendirme URI'si'nin altında Web'i seçin ve URL kutusuna yazınhttp://localhost:5000/getAToken.

  8. İzinler'in altında Openid ve çevrimdışı erişim izinleri için yönetici onayı ver onay kutusunu seçin.

  9. Kaydet'i seçin.

  10. Genel bakış'ı seçin.

  11. Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) kimliğini kaydedin.

    Screenshot of the web app Overview page for recording your web app I D.

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.

  1. Yönet'in altında Sertifikalar ve gizli diziler'i seçin.
  2. Yeni gizli anahtar'ı seçin.
  3. Açıklama kutusuna istemci gizli dizisi için bir açıklama girin (örneğin, clientsecret1).
  4. Süre Sonu'nun altında gizli dizinin geçerli olduğu süreyi seçin ve ardından Ekle'yi seçin.
  5. 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:

  1. .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'de 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

  1. Konsolunuzda veya terminalinizde örneği içeren dizine geçin. Örneğin:

    cd ms-identity-python-webapp
    
  2. 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)
    
  3. Yerel makinenizde çalışan web uygulamasını görüntülemek için adresine http://localhost:5000gidin.

  4. Oturum Aç'ı seçin.

    Screenshot showing the sign-in flow.

  5. Kaydolma veya oturum açma işlemini tamamlayın.

  6. Kimlik doğrulaması başarılı olduktan sonra görünen adınızı burada gösterildiği gibi görürsünüz:

    Screenshot showing the web app token's display name claim.

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:

Diagram describing a web app with web API, registrations, and tokens.

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:

  1. Azure Portal’ında oturum açın.

  2. Azure AD B2C kiracınızı içeren dizini kullandığınızdan emin olun. Portal araç çubuğunda Dizinler + abonelikler simgesini seçin.

  3. Portal ayarlarında | Dizinler + abonelikler sayfası, Dizin adı listesinde Azure AD B2C dizininizi bulun ve ardından Değiştir'i seçin.

  4. Azure portalında Azure AD B2C'yi arayın ve seçin.

  5. Uygulama kayıtları'ı ve ardından Yeni kayıt'ı seçin.

  6. 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.

  7. Kaydet'i seçin.

  8. Uygulama kaydı tamamlandıktan sonra Genel Bakış'ı seçin.

  9. Web uygulamasını yapılandırırken daha sonra kullanmak üzere Uygulama (istemci) Kimliği değerini kaydedin.

    Screenshot that demonstrates how to get a web A P I application I D.

6.2. Adım: Kapsamları yapılandırma

  1. Oluşturduğunuz my-api1 uygulamasını (Uygulama Kimliği: 2) seçerek Genel Bakış sayfasını açın.

  2. Yönet'in altında API'yi kullanıma sunma'yı seçin.

  3. 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.

  4. Bu API tarafından tanımlanan kapsamlar'ın altında Kapsam ekle'yi seçin.

  5. API'ye okuma erişimini tanımlayan bir kapsam oluşturmak için:

    1. Kapsam adı olarak tasks.read girin.
    2. Yönetici onay görünen adı için Görevlere okuma erişimi API'sini girin.
    3. Yönetici onay açıklaması için Görevler API'sine okuma erişimine izin verir girin.
  6. Kapsam ekle'yi seçin.

  7. Kapsam ekle'yi seçin ve ardından API'ye yazma erişimini tanımlayan bir kapsam ekleyin:

    1. Kapsam adı olarak tasks.write yazın.
    2. Yönetici onay görünen adı için Görevlere yazma erişimi API'sini girin.
    3. Yönetici onay açıklaması için Görevler API'sine yazma erişimine izin verir girin.
  8. 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:

  1. Uygulama kayıtları'ı seçin ve ardından oluşturduğunuz uygulamayı seçin (Uygulama Kimliği: 1).

  2. Yönet'in altında API izinleri'ne tıklayın.

  3. Yapılandırılan izinler'in altında İzin ekle'yi seçin.

  4. API'lerim sekmesini seçin.

  5. Web uygulamasına erişim verilmesi gereken API'yi (Uygulama Kimliği: 2) seçin. Örneğin, my-api1 girin.

  6. İ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).

  7. İzinler ekle'yi seçin.

  8. Kiracı adınız> için< Yönetici onayı ver'i seçin.

  9. Evet'i seçin.

  10. Yenile'yi seçin ve her iki kapsam için durum altında ... için verildi ifadesinin göründüğünü doğrulayın.

  11. Yapılandırılan izinler listesinden kapsamınızı seçin ve kapsamın tam adını kopyalayın.

    Screenshot of the configured permissions pane, showing that read access permissions are granted.

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

  1. Konsolunuzda veya terminalinizde örneği içeren dizine geçin.

  2. Uygulama hala çalışmıyorsa, 5. Adım'dan komutunu kullanarak uygulamayı yeniden başlatın.

  3. Aşağı akış API'si çağır'ı seçin.

    Screenshot showing how to call a web API.

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 httpsbaş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