Aracılığıyla paylaş


Azure Active Directory ile ASP.NET Uygulamaları geliştirme

tarafından Rick Anderson

Azure Active Directory için Microsoft ASP.NET araçları, Azure'da barındırılan web uygulamaları için kimlik doğrulamasını etkinleştirmeyi kolaylaştırır. Kuruluşunuzdan Office 365 kullanıcıların, şirket içi Active Directory'nizden eşitlenen şirket hesaplarının veya kendi özel Azure Active Directory etki alanınızda oluşturulan kullanıcıların kimliğini doğrulamak için Azure Kimlik Doğrulaması'nı kullanabilirsiniz. Windows Azure Kimlik Doğrulaması'nın etkinleştirilmesi, uygulamanızı tek bir Azure Active Directory kiracısı kullanarak kullanıcıların kimliğini doğrulayarak yapılandırıyor.

Bu öğreticide, Azure Active Directory (Azure AD) ile oturum açmak için yapılandırılmış bir ASP.NET uygulamasının nasıl oluşturulacağı gösterilir. Ayrıca oturum açmış olan kullanıcı hakkında bilgi almak ve uygulamayı Azure'a dağıtmak için Graph API nasıl çağıracağınızı da öğreneceksiniz.

Önkoşullar

  1. Web veya Visual Studio 2013 için Visual Studio Express 2013.
  2. Visual Studio 2013 Güncelleştirme 4 - Güncelleştirme 3 veya üzeri gereklidir.
  3. Azure hesabı. Henüz bir hesabınız yoksa ücretsiz deneme için buraya tıklayın.

Active Directory'nize Genel Yönetici ekleme

  1. Azure Yönetim Portalı'nda oturum açın.

  2. Tüm Azure hesapları bir Varsayılan Dizin içerir; buna tıklayın, ardından sayfanın üst kısmındaki Kullanıcılar sekmesine tıklayın (aşağıdaki resme bakın).

  3. Kullanıcı Ekle'ye tıklayın. Varsayılan Dizin'in sol tarafta, KULLANICILAR'ın sağda ve ADD USER'ın alt bilgide ana hatlarıyla vurgulandığı Azure Yönetim Portalı'nın ekran görüntüsü.

  4. Genel Yönetici rolüyle yeni bir kullanıcı oluşturun. Üstteki menüden Kullanıcılar'a tıklayın ve ardından komut çubuğundaki Kullanıcı Ekle düğmesine tıklayın.

  5. Kullanıcı Ekle iletişim kutusunda yeni kullanıcı için bir ad girin ve sağ oka tıklayın.

  6. Kullanıcı adını girin ve rolü Genel Yönetici olarak ayarlayın. Genel yöneticiler, parola kurtarma amacıyla alternatif bir e-posta adresi gerektirir. bitirdikten sonra sağ oka tıklayın.

    ROL için Genel Yönetici'nin seçili olduğu KULLANICI EKLE iletişim kutusundaki kullanıcı profilinin ekran görüntüsü. ALTERNATIF E-POSTA ADRESI alanı vurgulanmış.

  7. İletişim kutusunun sonraki sayfasında Oluştur'a tıklayın. Yeni kullanıcı için geçici bir parola oluşturulur ve iletişim kutusunda görüntülenir.

    KULLANıCı EKLE iletişim kutusundaki Kullanıcı profilinin ekran görüntüsü; Geçici parola alma yönergeleri görüntüleniyor ve Oluştur düğmesi aşağıda görüntüleniyor.

    Parolayı kaydedin, ilk oturum açtıktan sonra parolayı değiştirmeniz gerekir. Aşağıdaki resimde yeni yönetici hesabı gösterilmektedir. Bu sayfada gösterilen Microsoft hesabını değil, uygulamanızda oturum açmak için Azure Active Directory'yi kullanmanız gerekir.

    Tabloda GÖRÜNEN AD, KULLANICI ADI ve KAYNAKLI KAYNAK sütunlarının gösterildiği yeni yönetici hesabının ekran görüntüsü.

ASP.NET Uygulaması Oluşturma

Aşağıdaki adımlarda Web için Visual Studio Express 2013 kullanılır ve Güncelleştirme 3'Visual Studio 2013 gerekir.

  1. Visual Studio'da Dosya'ya ve ardından Yeni Proje'ye tıklayın. Yeni Proje iletişim kutusunda, soldaki menüden Visual C# Web projesini seçin ve Tamam'a tıklayın. Uygulamanızın işlevselliğini istemiyorsanız Project'e Application Insights Ekle seçeneğinin işaretini de kaldırabilirsiniz.

  2. Yeni ASP.NET Projesi iletişim kutusunda MVC'yi seçin ve kimlik doğrulamasını değiştir'e tıklayın.

    M V C şablonu seçili, Kimlik Doğrulamasını Değiştir düğmesi ana hatlarıyla ve Bulutta konak seçiliyken Yeni A S P nokta NET Projesi iletişim kutusunun ekran görüntüsü.

  3. Kimlik Doğrulamasını Değiştir iletişim kutusunda Kuruluş Hesapları'nı seçin. Bu seçenekler uygulamanızı otomatik olarak Azure AD kaydetmek ve uygulamanızı Azure AD ile tümleştirilecek şekilde otomatik olarak yapılandırmak için kullanılabilir. Uygulamanızı kaydetmek ve yapılandırmak için Kimlik Doğrulamasını Değiştir iletişim kutusunu kullanmanız gerekmez, ancak bu çok daha kolay hale getirir. Örneğin Visual Studio 2012 kullanıyorsanız, uygulamayı Azure Yönetim Portalı'na el ile kaydetmeye ve Azure AD ile tümleştirmek için yapılandırmasını güncelleştirmeye devam edebilirsiniz. Açılan menülerde Bulut - Tek Kuruluş'a tıklayın ve dizin verilerini okuma Çoklu Oturum Açma. Azure AD dizininizin etki alanını (örneğin, aşağıdaki resimlerde) aricka0yahoo.onmicrosoft.com girin ve tamam'a tıklayın. Etki alanı adını Azure portalındaki Varsayılan Dizin'in Etki Alanları sekmesinden alabilirsiniz (sonraki resme bakın).

    Kimlik Doğrulamayı Değiştir iletişim kutusunun ekran görüntüsü; Kuruluş Hesapları, Bulut tire Tek Kuruluş ve Çoklu Oturum Açma, Özetlenen Dizin verilerini okuma.

    Aşağıdaki görüntüde Azure portal etki alanı adı gösterilmektedir.

    Sol tarafta Varsayılan Dizin seçiliyken sağ taraftaki menüde ETKİ ALANLARI ve aşağıda gösterilen dizin etki alanı adı vurgulanmış Azure portal ekran görüntüsü.

    Not

    İsteğe bağlı olarak, Diğer Seçenekler'e tıklayarak Azure AD kaydedilecek Uygulama Kimliği URI'sini yapılandırabilirsiniz. Uygulama Kimliği URI'si, Azure AD kaydedilen ve uygulama tarafından Azure AD ile iletişim kurarken kendisini tanımlamak için kullanılan uygulamanın benzersiz tanımlayıcısıdır. Uygulama Kimliği URI'si ve kayıtlı uygulamaların diğer özellikleri hakkında daha fazla bilgi için bu konuya bakın. Uygulama Kimliği URI'si alanının altındaki onay kutusuna tıklayarak, aynı Uygulama Kimliği URI'sini kullanan Azure AD varolan bir kaydın üzerine yazmayı da seçebilirsiniz.

  4. Tamam'a tıkladıktan sonra bir oturum açma iletişim kutusu görüntülenir ve bir Genel Yönetici hesabı (aboneliğinizle ilişkilendirilmiş Microsoft hesabı değil) kullanarak oturum açmanız gerekir. Daha önce yeni bir Yönetici hesabı oluşturduysanız parolayı değiştirmeniz ve ardından yeni parolayı kullanarak yeniden oturum açmanız gerekir.

    Genel Yönetici hesabı adı ve parolası alanlarının görüntülendiği Azure Active Directory'de oturum aç iletişim kutusunun ekran görüntüsü.

  5. Kimlik doğrulaması başarıyla tamamlandıktan sonra , Yeni ASP.NET Projesi iletişim kutusu kimlik doğrulama seçiminizi (Kuruluş ) ve yeni uygulamanın kaydedileceği dizini (aşağıdaki resimde aricka0yahoo.onmicrosoft.com ) gösterir. Bu bilgilerin altında Bulutta barındır etiketli onay kutusunu seçin. Bu onay kutusu seçilirse proje bir Azure web uygulaması olarak sağlanır ve daha sonra kolay yayımlama için etkinleştirilir. Tamam'a tıklayın.

    M V C şablonu, kimlik doğrulama seçimi ve dizininin görüntülendiği Yeni A S P nokta NET Projesi iletişim kutusunun ekran görüntüsü. Bulutta konak ana hatlarıyla açıklanmıştır.

  6. Otomatik olarak oluşturulan site adı ve bölgesi kullanılarak Azure Web Sitesini Yapılandır iletişim kutusu görüntülenir. İletişim kutusunda şu anda oturum açtığınız hesabı da not edin. Bu hesabın Azure aboneliğinizin eklendiği hesap olduğundan emin olmak istiyorsunuz( genellikle bir Microsoft hesabı).

    Not

    Bu proje için bir veritabanı gerekir. Mevcut veritabanlarınızdan birini seçmeniz veya yeni bir veritabanı oluşturmanız gerekir. Proje, az miktarda kimlik doğrulama yapılandırma verilerini depolamak için zaten yerel bir veritabanı dosyası kullandığından bir veritabanı gereklidir. Uygulamayı bir Azure Web Sitesine dağıttığınızda, bu veritabanı dağıtımla birlikte paketlenmemiş olduğundan bulutta erişilebilen bir veritabanı seçmeniz gerekir. Tamam'a tıklayın.

    Otomatik oluşturulan Site Adı, Bölge, Veritabanı sunucusu, Veritabanı kullanıcı adı ve Veritabanı parolasını görüntüleyen Azure Web Sitesini Yapılandır iletişim kutusunun ekran görüntüsü.

  7. Proje oluşturulur ve kimlik doğrulama seçenekleriniz ve web uygulaması seçenekleriniz projeyle otomatik olarak yapılandırılır. Bu işlem tamamlandıktan sonra ^F5 tuşlarına basarak projeyi yerel olarak çalıştırın. Kuruluş hesabınızı kullanarak oturum açmanız gerekir. Daha önce oluşturduğunuz hesabın kullanıcı adını ve parolasını girin ve Oturum aç'a tıklayın.

    Kuruluş hesabı kullanıcı adı ve parola alanlarının görüntülendiği Oturum aç iletişim kutusunun ekran görüntüsü.

  8. Oturum başarıyla açıldıktan sonra, ASP.NET sitesinde sayfanın sağ üst köşesinde kullanıcı adı görüntülenerek kimlik doğrulaması yaptığınız gösterilir.

    Adres çubuğunda vurgulanmış ve sağ üst kısımda kullanıcı adı vurgulanmış olarak A S P nokta NET sitesinin ekran görüntüsü.

    Hata alırsanız: Değer null veya boş olamaz. Parametre adı: linkText Sunucu hatasının ekran görüntüsü. Hata iletisi vurgulanmış, okuma, Değer null veya boş olamaz. Parametre adı iki nokta üst üste bağlantısı Metin.

    öğreticinin sonundaki hata ayıklama bölümüne bakın.

Graph API temelleri

Graph API, Azure AD dizininizdeki nesneler üzerinde CRUD ve diğer işlemleri gerçekleştirmek için kullanılan programlı arabirimdir. Visual Studio 2013'da yeni bir proje oluştururken kimlik doğrulaması için Bir Kuruluş Hesabı seçeneğini belirlerseniz, uygulamanız zaten Graph API çağıracak şekilde yapılandırılır. Bu bölümde, Graph API nasıl çalıştığı kısaca gösterilir.

  1. Çalışan uygulamanızda, sayfanın sağ üst kısmındaki oturum açmış kullanıcının adına tıklayın. Bu sizi Giriş Denetleyicisi'nin bir eylemi olan Kullanıcı Profili sayfasına götürür. Tabloda daha önce oluşturduğunuz yönetici hesabıyla ilgili kullanıcı bilgileri olduğunu fark edeceksiniz. Bu bilgiler dizininizde depolanır ve sayfa yüklendiğinde bu bilgileri almak için Graph API çağrılır.

    Yönetici hesabı için Görünen Ad, Ad ve Soyadı gibi bir tablo içeren Kullanıcı Profili sayfasının ekran görüntüsü.

  2. Visual Studio'ya Geri dön Denetleyiciler klasörünü genişletin ve ardından HomeController.cs dosyasını açın. Bir belirteci almak ve ardından Graph API çağırmak için kod içeren bir UserProfile() eylemi görürsünüz. Bu kod aşağıda yinelenmiştir:

    [Authorize]
    public async Task UserProfile()
    {
        string tenantId = ClaimsPrincipal.Current.FindFirst(TenantIdClaimType).Value;
    
        // Get a token for calling the Azure Active Directory Graph
        AuthenticationContext authContext = new AuthenticationContext(String.Format(CultureInfo.InvariantCulture, LoginUrl, tenantId));
        ClientCredential credential = new ClientCredential(AppPrincipalId, AppKey);
        AuthenticationResult assertionCredential = authContext.AcquireToken(GraphUrl, credential);
        string authHeader = assertionCredential.CreateAuthorizationHeader();
        string requestUrl = String.Format(
            CultureInfo.InvariantCulture,
            GraphUserUrl,
            HttpUtility.UrlEncode(tenantId),
            HttpUtility.UrlEncode(User.Identity.Name));
    
        HttpClient client = new HttpClient();
        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
        request.Headers.TryAddWithoutValidation("Authorization", authHeader);
        HttpResponseMessage response = await client.SendAsync(request);
        string responseString = await response.Content.ReadAsStringAsync();
        UserProfile profile = JsonConvert.DeserializeObject<UserProfile>(responseString);
    
        return View(profile);
    }
    

    Graph API çağırmak için önce bir belirteç almanız gerekir. Belirteç alındığında, dize değeri Graph API sonraki tüm istekler için Yetkilendirme üst bilgisine eklenmelidir. Yukarıdaki kodun çoğu belirteç almak için Azure AD kimlik doğrulama, Graph API çağrı yapmak için belirteci kullanma ve ardından yanıtı Görünüm'de sunulabilmesi için dönüştürme ayrıntılarını işler.

    Tartışmanın en ilgili kısmı şu vurgulanmış satırdır: UserProfile profile = JsonConvert.DeserializeObject<UserProfile>(responseString);. Bu satır, JSON yanıtından seri durumdan çıkarılmış olan ve Görünüm'de gösterilen kullanıcının adını temsil eder.

    HttpClient kullanarak Graph API çağırabilir ve ham verileri kendiniz işleyebilirsiniz, ancak daha kolay bir yol NuGet aracılığıyla kullanılabilen Graph İstemci Kitaplığı'nı kullanmaktır. İstemci Kitaplığı ham HTTP isteklerini ve döndürülen verilerin dönüştürülmesini sizin için işler ve bir .NET ortamında Graph API ile çalışmayı çok daha kolay hale getirir. GitHub'da ilgili Graph API kod örneklerine bakın.

Uygulamayı Azure'a dağıtma

Aşağıdaki adımlarda uygulamanın Azure'a nasıl dağıtılacağı gösterilir. Önceki adımlarda yeni projenizi Azure'daki bir web uygulamasına bağladığınızdan, yalnızca birkaç adımda yayımlanmaya hazır olur.

  1. Visual Studio'da projeye sağ tıklayın ve Yayımla'yı seçin. Web'i Yayımla iletişim kutusu, her ayar zaten yapılandırılmış olarak görüntülenir. Ayarlar sayfasına gitmek için İleri düğmesine tıklayın. Kimlik doğrulaması yapmanız istenebilir; daha önce oluşturduğunuz kuruluş hesabını değil Azure abonelik hesabınızı (genellikle bir Microsoft hesabı) kullanarak kimlik doğrulaması yaptığınızdan emin olun.

    Bağlantı'nın vurgulandığı ve her ayarın sağda yapılandırılmış olduğu Web'i Yayımla iletişim kutusunun ekran görüntüsü.

  2. Kuruluş Kimlik Doğrulamasını Etkinleştir seçeneğini işaretleyin. Etki alanı alanına dizininizin etki alanını girin. Erişim Düzeyi açılan listesinden Çoklu Oturum Açma, Dizin verilerini oku'ya tıklayın. Kullandığınız önceki veritabanının Veritabanları bölümünde zaten doldurulmuş olduğunu fark edeceksiniz. Yayımla’ya tıklayın.

    Web'i Yayımla iletişim kutusunun ekran görüntüsü. Dosya Yayımlama Seçenekleri, Kuruluş Kimlik Doğrulamasını Etkinleştir, Etki Alanı alanı ve Erişim Düzeyi dahil olmak üzere özetlenmiştir.

  3. Visual Studio web sitenizi dağıtmaya başlar ve ardından yeni bir tarayıcı penceresi görüntülenir. Dizininizde bir kez daha kimlik doğrulaması yapmanız istenebilir. Kimlik doğrulaması yaptıktan sonra Azure'da yeni yayımlanan web sitenize yönlendirilirsiniz.

    Azure'da yeni yayımlanan web sitesinin adres çubuğunda görüntülendiği A S P nokta NET sitesinin ekran görüntüsü.

Uygulamada hata ayıklama

Aşağıdaki hatayı alırsanız: Değer null veya boş olamaz. Parametre adı: linkText

Sonuç olarak ortaya çıkabilecek hatanın ekran görüntüsü. Hata iletisi vurgulanmış, okuma, Değer null veya boş olamaz. Parametre adı iki nokta üst üste bağlantısı Metin.

Views\Shared\_LoginPartial.cshtml dosyasındaki kodu aşağıdakilerle değiştirin:

@{
   var user = "Null User";
   if (!String.IsNullOrEmpty(User.Identity.Name))
   {
      user = User.Identity.Name;
   }

}

@if (Request.IsAuthenticated)
{
    <text>
         <ul class="nav navbar-nav navbar-right">
            <li>
                @*@Html.ActionLink(User.Identity.Name, "UserProfile", "Home", routeValues: null, htmlAttributes: null)*@
               @Html.ActionLink(user, "UserProfile", "Home", routeValues: null, htmlAttributes: null)
            </li>
            <li>
                @Html.ActionLink("Sign out", "SignOut", "Account")
            </li>
        </ul>
    </text>
}
else
{
     <ul class="nav navbar-nav navbar-right">
        <li>@Html.ActionLink("Sign in", "Index", "Home", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
    </ul>
}

Uygulamayı çalıştırdıktan sonra, oturum açan kullanıcı "Null Kullanıcı" gösteriyorsa oturumu kapatın ve daha önce oluşturduğunuz Active Directory hesabıyla yeniden oturum açın.

Rick Rainey'nin Ayrıntılı İncelemesi: Azure AD kullanarak Azure Web Siteleri ve Kurumsal Kimlik Doğrulaması harika bir öğreticidir.

Daha Fazla Bilgi