Sağlayıcılar ve roller için erişimi yapılandırma

Tamamlandı

Kullanıcı kimlik doğrulaması uygulandığında, alışveriş listesi web uygulamanızın oturum açmamış kullanıcılar için bazı sayfalara erişimi kısıtlamak ve yalnızca belirli sağlayıcılar aracılığıyla oturum açma izni vermek için bir yönteme ihtiyacı vardır.

Web uygulamamıza kullanıcı erişiminde ince ayar yapmak için Azure Static Web Apps'te yönlendirme yapılandırmasını ve rollerini inceleyeceğiz.

Azure Static Web Apps için yapılandırma dosyası

Azure Static Web Apps yapılandırması, aşağıdaki ayarları denetleyen dosyada staticwebapp.config.json tanımlanır:

  • Yönlendirme
  • Kimlik Doğrulaması
  • Yetkilendirme
  • Geri dönüş kuralları
  • HTTP yanıt geçersiz kılmaları
  • Genel HTTP üst bilgi tanımları
  • Özel MIME türleri

için staticwebapp.config.json önerilen konum, dağıtım sırasında seçtiğimiz ayar olarak app_location klasör kümesindedir. Ancak, dosya uygulama kaynak kodu klasörünüzdeki herhangi bir konuma yerleştirilebilir.

Kullanım örneğimizde istediğimizi elde etmek için yönlendirme yapılandırmasını inceleyeceğiz.

Kimlik doğrulama sağlayıcılarını kısıtlama

Önceki bir bölümde tüm kimlik doğrulama sağlayıcılarının varsayılan olarak etkinleştirildiğini görmüştük. Yapılandırmaya yönlendirme kuralları ekleyerek bunu değiştirebiliriz.

Örneğin, GitHub sağlayıcısı aracılığıyla oturum açmayı devre dışı bırakmak için, dosyaya staticwebapp.config.json bunun gibi bir yönlendirme kuralı ekleyebilirsiniz.

{
  "routes": [
    {
      "route": "/.auth/login/github",
      "statusCode": 404
    }
  ]
}

Kullanıcıların erişememeleri için GitHub sağlayıcısında kimlik doğrulaması yapmak için kullanılan yolu /.auth/login/github bir 404 (bulunamadı) hatası döndürmeye zorlarız. Kullanmak istemediğiniz tüm sağlayıcıları devre dışı bırakmak istediğimiz sayıda yol kuralı ekleyebilirsiniz.

Rollerle yolların güvenliğini sağlama

Rotalara varsayılan olarak herhangi bir kısıtlama olmadan herkes erişebilir. Bir kuralın allowedRoles dizisine bir veya daha fazla rol adı ekleyerek yolların güvenliğini sağlayabilirsiniz. Varsayılan olarak, her kullanıcı yerleşik anonymous role aittir ve oturum açan tüm kullanıcılar rolün authenticated üyesidir.

Bu, bir yolu yalnızca kimliği doğrulanmış kullanıcılarla kısıtlamak için yerleşik authenticated rolü diziye allowedRoles ekleyebileceğiniz anlamına gelir.

{
  "routes": [
    {
      "route": "/profile",
      "allowedRoles": ["authenticated"]
    }
  ]
}

Bu yapılandırmada, kimliği doğrulanmamış bir kullanıcı yola erişmeye /profile çalışırsa bir hata 401 (yetkisiz) döndürülür.

Ayrıca, aşağıdaki gibi belirli bir yol için belirli HTTP yöntemlerini kısıtlayabilirsiniz:

{
  "routes": [
    {
      "route": "/profile",
      "methods": ["PUT", "POST", "DELETE"],
      "allowedRoles": ["authenticated"]
    }
  ]
}

Bu örnekte, tüm kullanıcılar rotadaki yöntemine GET erişebilir, ancak yalnızca kimliği doğrulanmış kullanıcılar veya POST DELETEkullanabilirPUT./profile

Joker karakter kullanma

Temel deseni izleyen tüm yolları eşleştirmek için yolun sonunda joker karakter kullanabilirsiniz. Örneğin, ile başlayan tüm URL'leri kimliği doğrulanmış kullanıcılarla /api sınırlamak için şunları yazabilirsiniz:

{
  "routes": [
    {
      "route": "/api/*",
      "allowedRoles": ["authenticated"]
    }
  ]
}

Sonraki adımlar

Ardından uygulamamızda erişim kısıtlamaları uygulayacağız.