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
- Web veya Visual Studio 2013 için Visual Studio Express 2013.
- Visual Studio 2013 Güncelleştirme 4 - Güncelleştirme 3 veya üzeri gereklidir.
- Azure hesabı. Henüz bir hesabınız yoksa ücretsiz deneme için buraya tıklayın.
Active Directory'nize Genel Yönetici ekleme
Azure Yönetim Portalı'nda oturum açın.
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).
Kullanıcı Ekle'ye tıklayın.
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.
Kullanıcı Ekle iletişim kutusunda yeni kullanıcı için bir ad girin ve sağ oka tıklayın.
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.
İ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.
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.
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.
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.
Yeni ASP.NET Projesi iletişim kutusunda MVC'yi seçin ve kimlik doğrulamasını değiştir'e tıklayın.
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).
Aşağıdaki görüntüde Azure portal etki alanı adı gösterilmektedir.
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.
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.
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.
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.
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.
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.
Hata alırsanız: Değer null veya boş olamaz. Parametre adı: linkText
öğ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.
Ç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.
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.
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.
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.
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.
Uygulamada hata ayıklama
Aşağıdaki hatayı alırsanız: Değer null veya boş olamaz. Parametre adı: linkText
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin