Azure Active Directory Application ve Dynamics 365 Application User Kullanımı Sırasında Karşılaşılan Hatalar ve Çözümleri

Bu yazı 04 Mayıs 2019 tarihinde Medium/@dynamics365 altında yayınlanmıştır. 15 Mayıs 2020 tarihinde emregulcan.com altında taşınmıştır.

İçerikler, yazının oluşturulduğu tarih için geçerli olup, Microsoft Dynamics 365 CE, Power Platform ve Azure hizmetlerinin sürekli iyileştirme ve güncelleme döngüsünden dolayı paylaşılan bilgilerde değişiklikler meydana gelmiş olabilir.

Merhaba,

Bu yazıda Azure Active Directory Application, Dynamics 365 CE Application User tanımlaması, kullanımı ve test senaryoları sırasında karşılaştığım hataları ve çözümleri elimden geldiğince anlatmaya çalışacağım.

Popup Window closed by UI action/ Popup Window handle destroyed due to cross zone navigation in IE/Edge

Hata Nedeni

Authentication işlemi sırasında kullanıcı popup pencereyi kapatmış ya da ilgili browser ‘da popup blocker olduğu için authentication popup açılmıyor.

Çözüm

Kullanıcı Authentication işlemini yeniden tetiklemeli. (Örnek : Login butonuna tıklamalı)

AADSTS650004 : The resource owner or authorization server denied the request

Hata Nedeni

Authentication işlemi sırasında kullanıcı ya da sunucu işlemi iptal etmiş. Muhtemelen kullanıcı Authentication ekranını kapatmış ya da Cancel butonuna basmış olabilir.

Çözüm

Kullanıcı Authentication işlemini yeniden tetiklemeli. (Örnek : Login butonuna tıklamalı)

AADSTS700016 : Application with identifier ‘{Application Id}’ was not found in the directory ‘crm4.dynamics.com’. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in tenant. You may have sent your authentication request to the wrong tenant

Hata Nedeni

Kullanmış olduğunuz Client (Application) Id bilgisi hatalı

Çözüm

Azure Active Directory ‘de tanımladığınız Application overview (detay) sayfasında bulunan Application ID bilgisini kullanmalısınız.

AADSTS500111 : The reply uri specified in the request has an invalid scheme

Hata Nedeni

Active Directory Application için tanımlamış olduğunuz Redirect URI ile mevcut sayfanız eşleşmiyor.

Çözüm

Active Directory Application için tanımlamış olduğunuz Redirect URI bilgisini ya da Authentication işleminin yapıldığı sayfanın url bilgisini kontrol edip düzeltmelisiniz.

AADSTS700054 : response_type ‘id_token’ is not enabled for the application

Hata Nedeni

Kullanmış olduğunuz Client (Application) Id için Active Directory Application ayarlarında Implicit Grant düzenlemeleri yapılmamış.

Çözüm

Active Directory Application için Authentication sekmesinde bulunan Implicit Grant bölümünde Access tokens ve ID tokens izinleri verilmeli.

AADSTS50058 : A silent sign-in request was sent but no user is signed in

Hata Nedeni

Herhangi bir sebepten dolayı Access Token alınamıyor. SessionTimeout ya da oturumu açık olan kullanıcının parola bilgisinin değişmesi (expire, reset, update) ana sebepler.

Çözüm

İlgili kullanıcıyı Authentication işlemi için yönlendirmelisiniz. Eğer web projesi ise ADAL.js ‘nin acquireTokenPopup ya da acquireTokenRedirect fonksiyonlarını kullanmalısınız.

AADSTS65001 : The user or administrator has not consented to use the application with Id ‘xxxx’ named ‘xxxxx’. Send an interactive authorization request for this user and resource

Hata Nedeni

Active Directory Application, organizasyon yöneticisi tarafından onaylanmamış

Çözüm

Bu sorunu çözmek için 2 farklı noktayı incelememiz gerekli.

  1. Yöneticisi / üyesi olduğumuz Active Directory kullanıcılarının uygulamayı kullanabilmesi için Application ayarlarında API Permissions sekmesinden Grant Consent altında yer alan Grant admin consent for ORGANIZASYON ADI butonun kullanarak tüm kullanıcılara kullanım için izin verebiliriz. Böylece yöneticisi / üyesi olduğumuz Active Directory ‘e sahip tüm kullanıcılar uygulama için gerekli izinlere sahip olurlar.
  2. Multi-tenant uygulamalarda, farklı organizasyonlara sahip kullanıcıların uygulamayı kullanabilmesi için aşağıdaki ayarları yapmamız gerekmekte.
    • Bunun için Azure Active Directory ‘de User Settings sekmesinden Manage how end users launch and view their applications bağlantısına tıklayarak, açılan ekranda Users can consent to apps accessing company data on their behalf ayalarının yapmamız gerekli.
      • Yes olarak seçersek, kullanıcılar herhangi bir yönetici onayı olmadan uygulamaya giriş yapabilir ve yetki için onay verebilirler.
      • No seçtiğimizde ise herhangi bir dış organizasyon kullanıcısının uygulamayı kullanabilmesi için öncelikli olarak ilgili organizasyonun yönetici rolüne sahip bir kullanıcısı bu uygulamaya yetki vermelidir.
Active Directory User Settings Ekranı
Active Directory User Settings Ekranı
Active Directory User Settings — Enterprise Application Erişim İzinleri Ekranı
Active Directory User Settings — Enterprise Application Erişim İzinleri Ekranı

AADSTS50020 : User account ‘abc@xyz.com’ from identity provider ‘https://sts.windows.net/{GUID}’ does not exist in tenant ‘{tenant adı}’ and cannot access the application ‘{Application ID}’ ({Application Adı}) in that tenant. The account needs to be added as an external user in the tenant first. Sign out and sign in again with different Azure Active Directory user account

Hata Nedeni

Authentication işlemi yapılan Application, multi-tenant işleme izin vermiyor.

Çözüm

Bu sorunu çözmek için 2 farklı noktayı incelememiz gerekli.

  1. Öncelikle Azure Active Directory Application ayarlarında Authentication sekmesinden Supported account types ayarlarını ya da Manifest sekmesinden manifesto dosyasını açıp, signInAudience değerini kontrol etmeniz ve multi-tenant işlem için değiştirmeniz gerekmekte.
    • Supported account types üzerinden değişiklik yapmak isterseniz Accounts in any organizational directory ya da Accounts in any organization directory and personal Microsoft accounts seçmelisiniz.
    • Manifest dosyası üzerinden değişiklik yaparken signInAudience değerine AzureADMultipleOrgs ya da AzureADandPersonalMicrosoftAccount yazmalısınız.
  2. Application ayarlarımızda multi-tenant izin verilmiş olsa bile web sayfamızda AuthenticationContext için oluşturduğumuz Config nesnesinde tenant bilgisi verilmiş ise burada yer alan tenant dışından hiç bir kullanıcı uygulamamızı kullanamaz. Bu durumda Config.tenant bilgisini kaldırmanız gerekmekte
AuthenticationContext Config parametreleri
AuthenticationContext Config parametreleri

Yukarıda vermiş olduğum örnek Config tanımlamasında tenant bilgisi yer almakta, bunu aşağıdaki gibi değiştirmeniz gerekmekte.

AuthenticationContext Config parametreleri
AuthenticationContext Config parametreleri

Azure Active Directory Application tanımlama işlemlerini detayları ile daha önce yazmıştım, ilgili yazıya buradan erişebilirsiniz.

Ayrıca Manifest dosyasının içerdiği property ‘ler ve değerleri hakkında Microsoft tarafından yayınlanmış detaylı bir dokümantasyon bulunmakta, https://docs.microsoft.com/en-us/azure/active-directory/develop/reference-app-manifest adresinden bakabilirsiniz.

AADSTS90002 : Tenant ‘authorize’ not found. This may happen if there are no active subscription for tenant. Check with your subscription administrator.

Hata Nedeni

Düşük ihtimalle Azure ‘‘da geçerli / aktif bir Subscription kaydınız yok. Yüksek ihtimalle kullanmış olduğunuz ADAL kütüphanesi ve Authority URI uyuşmazlığı mevcut.

Çözüm

Öncelikle düşük ihtimale odaklanıp, Azure Portal üzerinden gerekli kontrolleri yapmanızda fayda var.

ADAL kütüphanesi ve Authority URI uyuşmazlığı konusunda ise aşağıdaki adımları uygulayabilirsiniz.

  • ADAL ‘ın son sürümleri Authority URI adresini https://login.microsoftonline.com/common ya da https://login.microsoftonline.com/{TENANT_ID} olarak kabul ediyor, eğer Authority URI bilginizin sonunda /oauth2/authorize varsa bunu kaldırıp deneyebilirsiniz.
  • Bir diğer çözüm ise kullanmış olduğunuz ADAL kütüphanesinin önceki sürümlerini kullanmanız, fakat ileriye dönük geliştirmeler ve güncellemeler için bu yöntemi tavsiye etmiyorum.

Farklı hatalar ile karşılaştıkça bu yazıyı güncelleyeceğim.

Umarım faydalı bir yazı olmuştur.

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.