Azure Mobile Apps için .NET arka uç sunucusu SDK'sı ile çalışma

Bu konu başlığında, .NET arka uç sunucu SDK'sını Mobile Apps senaryolarında temel Azure App Service nasıl kullanacağınız gösterilmektedir. Azure Mobile Apps SDK'sı, ASP.NET uygulamanızdaki mobil istemcilerle çalışmanıza yardımcı olur.

İpucu

Azure Mobile Apps için .NET sunucu SDK'sı GitHub'da açık kaynak. Depo, sunucu SDK'sı birim test paketinin tamamı ve bazı örnek projeler dahil olmak üzere tüm kaynak kodunu içerir.

Başvuru belgeleri

Sunucu SDK'sı için başvuru belgeleri burada bulunur: Azure Mobile Apps .NET Başvurusu.

Nasıl yapılır: .NET Mobil Uygulaması arka ucu oluşturma

Yeni bir projeye başlıyorsanız, Azure portal veya Visual Studio kullanarak App Service bir uygulama oluşturabilirsiniz. App Service uygulamasını yerel olarak çalıştırabilir veya projeyi bulut tabanlı App Service mobil uygulamanızda yayımlayabilirsiniz.

Mevcut bir projeye mobil özellikler ekliyorsanız SDK'yı indirme ve başlatma bölümüne bakın.

Azure portal kullanarak .NET arka ucu oluşturma

App Service mobil arka ucu oluşturmak için Hızlı Başlangıç öğreticisini izleyin veya şu adımları izleyin:

  1. Azure portalda oturum açın.

  2. +YENİ>Web + Mobil Mobil>Uygulama'yı seçin ve ardından Mobile Apps arka ucunuz için bir ad sağlayın.

  3. Kaynak Grubu için mevcut bir kaynak grubunu seçin veya yeni bir tane oluşturun (uygulamanızla aynı adı kullanarak).

  4. App Service plan için varsayılan plan (Standart katmanda) seçilir. Ayrıca farklı bir plan seçebilir veya yeni bir plan oluşturabilirsiniz.

    App Service planının ayarları, uygulamanızla ilişkili konumu, özellikleri, maliyeti ve işlem kaynaklarını belirler. App Service planları ve farklı bir fiyatlandırma katmanında ve istediğiniz konumda yeni bir plan oluşturma hakkında daha fazla bilgi için bkz. Ayrıntılı Azure App Service planlara genel bakış.

  5. Oluştur’u seçin. Bu adım Mobile Apps arka ucunu oluşturur.

  6. Yeni Mobile Apps arka ucunun Ayarlar bölmesinde İstemci uygulama platformunuzu >hızlı başlat>Veritabanına bağlan'ı seçin.

    Veritabanı bağlama seçimleri

  7. Veri bağlantısı ekle bölmesinde SQL Veritabanı>Yeni veritabanı oluştur'u seçin. Veritabanı adını girin, bir fiyatlandırma katmanı seçin ve ardından Sunucu'ya tıklayın. Bu yeni veritabanını yeniden kullanabilirsiniz. Aynı konumda zaten bir veritabanınız varsa, bunun yerine Mevcut veritabanlarından birini kullanın’ı seçebilirsiniz. Bant genişliği maliyetleri ve daha yüksek gecikme süresi nedeniyle veritabanının farklı bir konumda kullanılmasını önermiyoruz.

    Veritabanı seçme

  8. Yeni sunucu bölmesinde, Sunucu adı kutusuna benzersiz bir sunucu adı girin, oturum açma ve parola girin, Azure hizmetlerinin sunucuya erişmesine izin ver'i seçin ve Tamam'ı seçin. Bu adım yeni veritabanını oluşturur.

  9. Veri bağlantısı ekle bölmesinde Bağlantı dizesi'ni seçin, veritabanınızın oturum açma ve parola değerlerini girin ve Tamam'ı seçin.

    Devam etmeden önce veritabanının başarıyla dağıtılması için birkaç dakika bekleyin.

Başlarken dikey penceresindeki Tablo API'si oluştur'un altında Arka uç diliniz olarak C# öğesini seçin. İndir'e tıklayın, sıkıştırılmış proje dosyalarını yerel bilgisayarınıza ayıklayın ve çözümü Visual Studio'da açın.

Visual Studio 2017 kullanarak .NET arka ucu oluşturma

Visual Studio'dan Azure Mobile Apps projesine yayımlamak için Visual Studio Yükleyicisi aracılığıyla Azure iş yükünü yükleyin. SDK'yı yükledikten sonra aşağıdaki adımları kullanarak bir ASP.NET uygulaması oluşturun:

  1. Yeni Proje iletişim kutusunu açın (Dosya>Yeni>Proje'den...).
  2. Visual C# öğesini genişletin ve Web'i seçin.
  3. ASP.NET Web Uygulaması (.NET Framework) öğesini seçin.
  4. Proje adını girin. Daha sonra, Tamam'a tıklayın.
  5. Şablon listesinden Azure Mobil Uygulaması'nı seçin.
  6. Çözümü oluşturmak için Tamam'a tıklayın.
  7. Çözüm Gezgini projeye sağ tıklayın ve Yayımla... öğesini seçin, ardından yayımlama hedefi olarak App Service'i seçin.
  8. Kimlik doğrulaması yapmak için istemleri izleyin ve yayımlamak üzere yeni veya mevcut bir Azure App Service seçin.

Visual Studio 2015 kullanarak .NET arka ucu oluşturma

Visual Studio'da bir Azure Mobile Apps projesi oluşturmak için .NET için Azure SDK'sını (sürüm 2.9.0 veya üzeri) yükleyin. SDK'yı yükledikten sonra aşağıdaki adımları kullanarak bir ASP.NET uygulaması oluşturun:

  1. Yeni Proje iletişim kutusunu açın (Dosya>Yeni>Proje'den...).
  2. Şablonlar>Visual C# öğesini genişletin ve Web'i seçin.
  3. ASP.NET Web Uygulaması'nı seçin.
  4. Proje adını girin. Daha sonra, Tamam'a tıklayın.
  5. ASP.NET 4.5.2 Şablonları'nın altında Azure Mobil Uygulama'yı seçin. Bu projeyi yayımlayabileceğiniz bulutta bir mobil arka uç oluşturmak için Bulutta konak seçeneğini işaretleyin.
  6. Tamam'a tıklayın.

Nasıl yapılır: SDK'yi indirme ve başlatma

SDK , NuGet.org'da kullanılabilir. Bu paket, SDK'yi kullanmaya başlamak için gereken temel işlevleri içerir. SDK'yı başlatmak için HttpConfiguration nesnesinde eylemler gerçekleştirmeniz gerekir.

SDK Yükleme

SDK'yı yüklemek için Visual Studio'da sunucu projesine sağ tıklayın, NuGet Paketlerini Yönet'i seçin, Microsoft.Azure.Mobile.Server paketini arayın ve yükle'ye tıklayın.

Sunucu projesini başlatma

Bir .NET arka uç sunucusu projesi, diğer ASP.NET projelerine benzer şekilde bir OWIN başlangıç sınıfı dahil ederek başlatılır. NuGet paketine Microsoft.Owin.Host.SystemWebbaşvurduğunuzdan emin olun. Visual Studio'da bu sınıfı eklemek için sunucu projenize sağ tıklayın veYeni ÖğeEkle'yi> ve ardından Web>Genel>OWIN Başlangıç sınıfı'na tıklayın. Aşağıdaki öznitelikle bir sınıf oluşturulur:

[assembly: OwinStartup(typeof(YourServiceName.YourStartupClassName))]

Configuration() OWIN başlangıç sınıfınızın yönteminde, Azure Mobile Apps ortamını yapılandırmak için bir HttpConfiguration nesnesi kullanın. Aşağıdaki örnek, sunucu projesini ek özellikler olmadan başlatır:

// in OWIN startup class
public void Configuration(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    new MobileAppConfiguration()
        // no added features
        .ApplyTo(config);

    app.UseWebApi(config);
}

Tek tek özellikleri etkinleştirmek için ApplyTo çağrısı yapmadan önce MobileAppConfiguration nesnesinde uzantı yöntemlerini çağırmanız gerekir. Örneğin, aşağıdaki kod başlatma sırasında özniteliğine [MobileAppController] sahip tüm API denetleyicilerine varsayılan yolları ekler:

new MobileAppConfiguration()
    .MapApiControllers()
    .ApplyTo(config);

Azure portal sunucusu hızlı başlangıcı UseDefaultConfiguration() öğesini çağırır. Bu, aşağıdaki kurulumla eşdeğerdir:

    new MobileAppConfiguration()
        .AddMobileAppHomeController()             // from the Home package
        .MapApiControllers()
        .AddTables(                               // from the Tables package
            new MobileAppTableConfiguration()
                .MapTableControllers()
                .AddEntityFramework()             // from the Entity package
            )
        .AddPushNotifications()                   // from the Notifications package
        .MapLegacyCrossDomainController()         // from the CrossDomain package
        .ApplyTo(config);

Kullanılan uzantı yöntemleri şunlardır:

  • AddMobileAppHomeController() varsayılan Azure Mobile Apps giriş sayfasını sağlar.
  • MapApiControllers() özniteliğiyle [MobileAppController] süslenmiş WebAPI denetleyicileri için özel API özellikleri sağlar.
  • AddTables() uç noktaların tablo denetleyicilerine /tables eşlemini sağlar.
  • AddTablesWithEntityFramework() , Entity Framework tabanlı denetleyicileri kullanarak uç noktaları eşlemek /tables için kısa bir adımdır.
  • AddPushNotifications() Notification Hubs için cihaz kaydetmeye yönelik basit bir yöntem sağlar.
  • MapLegacyCrossDomainController() yerel geliştirme için standart CORS üst bilgileri sağlar.

SDK uzantıları

Aşağıdaki NuGet tabanlı uzantı paketleri, uygulamanız tarafından kullanılabilecek çeşitli mobil özellikler sağlar. Başlatma sırasında MobileAppConfiguration nesnesini kullanarak uzantıları etkinleştirirsiniz.

  • Microsoft.Azure.Mobile.Server.QuickStart Temel Mobile Apps kurulumunu destekler. Başlatma sırasında UseDefaultConfiguration uzantısı yöntemini çağırarak yapılandırmaya eklendi. Bu uzantı aşağıdaki uzantıları içerir: Bildirimler, Kimlik Doğrulaması, Varlık, Tablolar, Etki Alanları Arası ve Giriş paketleri. Bu paket, Azure portal bulunan Mobile Apps Hızlı Başlangıcı tarafından kullanılır.
  • Microsoft.Azure.Mobile.Server.Home Web sitesi kökü için bu mobil uygulamanın çalışır durumda olduğu varsayılan sayfayı uygular. AddMobileAppHomeController uzantı yöntemini çağırarak yapılandırmaya ekleyin.
  • Microsoft.Azure.Mobile.Server.Tables , verilerle çalışmaya yönelik sınıflar içerir ve veri işlem hattını ayarlar. AddTables uzantı yöntemini çağırarak yapılandırmaya ekleyin.
  • Microsoft.Azure.Mobile.Server.Entity Entity Framework'ün SQL Veritabanı verilere erişmesini sağlar. AddTablesWithEntityFramework uzantısı yöntemini çağırarak yapılandırmaya ekleyin.
  • Microsoft.Azure.Mobile.Server.Authentication Kimlik doğrulamasını etkinleştirir ve belirteçleri doğrulamak için kullanılan OWIN ara yazılımını ayarlar. AddAppServiceAuthentication ve IAppBuilder'ı çağırarak yapılandırmaya ekleyin. UseAppServiceAuthentication uzantısı yöntemleri.
  • Microsoft.Azure.Mobile.Server.Notifications Anında iletme bildirimlerini etkinleştirir ve bir anında iletme kayıt uç noktası tanımlar. AddPushNotifications uzantısı yöntemini çağırarak yapılandırmaya ekleyin.
  • Microsoft.Azure.Mobile.Server.CrossDomain Mobil Uygulamanızdan eski web tarayıcılarına veri sunan bir denetleyici oluşturur. MapLegacyCrossDomainController uzantı yöntemini çağırarak yapılandırmaya ekleyin.
  • Microsoft.Azure.Mobile.Server.Login Özel kimlik doğrulama senaryoları sırasında kullanılan statik bir yöntem olan AppServiceLoginHandler.CreateToken() yöntemini sağlar.

Nasıl yapılır: Sunucu projesini yayımlama

Bu bölümde Visual Studio'dan .NET arka uç projenizi nasıl yayımlayabileceğiniz gösterilmektedir. Arka uç projenizi Git'i veya orada bulunan diğer yöntemlerden herhangi birini kullanarak da dağıtabilirsiniz.

  1. Visual Studio'da NuGet paketlerini geri yüklemek için projeyi yeniden derleyin.

  2. Çözüm Gezgini'da projeye sağ tıklayın ve Yayımla'ya tıklayın. İlk kez yayımladığınızda bir yayımlama profili tanımlamanız gerekir. Zaten tanımlanmış bir profiliniz varsa profili seçip Yayımla'ya tıklayabilirsiniz.

  3. Yayımlama hedefi seçmeniz istenirse Microsoft Azure App Service>İleri'ye tıklayın ve ardından (gerekirse) Azure kimlik bilgilerinizle oturum açın. Visual Studio yayımlama ayarlarınızı doğrudan Azure'dan indirir ve güvenli bir şekilde depolar.

  4. Aboneliğinizi seçin, Görünüm'denKaynak Türü'nü seçin, Mobil Uygulama'yı genişletin ve Mobil Uygulama arka ucuna tıklayın, ardından Tamam'a tıklayın.

  5. Yayımlama profili bilgilerini doğrulayın ve Yayımla'ya tıklayın.

    Mobil Uygulama arka ucunuz başarıyla yayımlandığında, başarılı olduğunu belirten bir giriş sayfası görürsünüz.

Nasıl yapılır: Tablo denetleyicisi tanımlama

Sql tablosunu mobil istemcilere göstermek için Tablo Denetleyicisi tanımlayın. Tablo Denetleyicisi'ni yapılandırmak için üç adım gerekir:

  1. Veri Aktarım Nesnesi (DTO) sınıfı oluşturun.
  2. Mobile DbContext sınıfında bir tablo başvurusu yapılandırın.
  3. Tablo denetleyicisi oluşturma.

Veri Aktarım Nesnesi (DTO), öğesinden EntityDatadevralan düz bir C# nesnesidir. Örnek:

public class TodoItem : EntityData
{
    public string Text { get; set; }
    public bool Complete {get; set;}
}

DTO, SQL veritabanındaki tabloyu tanımlamak için kullanılır. Veritabanı girdisini oluşturmak için, kullandığınız DbContext'e bir DbSet<> özellik ekleyin. Azure Mobile Apps için varsayılan proje şablonunda DbContext olarak adlandırılır Models\MobileServiceContext.cs:

public class MobileServiceContext : DbContext
{
    private const string connectionStringName = "Name=MS_TableConnectionString";

    public MobileServiceContext() : base(connectionStringName)
    {

    }

    public DbSet<TodoItem> TodoItems { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Add(
            new AttributeToColumnAnnotationConvention<TableColumnAttribute, string>(
                "ServiceColumnTable", (property, attributes) => attributes.Single().ColumnType.ToString()));
    }
}

Azure SDK yüklüyse, artık aşağıdaki gibi bir şablon tablo denetleyicisi oluşturabilirsiniz:

  1. Denetleyiciler klasörüne sağ tıklayın ve Denetleyici Ekle>... seçeneğini belirleyin.
  2. Azure Mobile Apps Tablo Denetleyicisi seçeneğini belirleyip Ekle'ye tıklayın.
  3. Denetleyici Ekle iletişim kutusunda:
    • Model sınıfı açılan listesinde yeni DTO'nuzu seçin.
    • DbContext açılan listesinde Mobile Service DbContext sınıfını seçin.
    • Denetleyici adı sizin için oluşturulur.
  4. Ekle'ye tıklayın.

Hızlı başlangıç sunucusu projesi, basit bir TodoItemController örneği içerir.

Nasıl yapılır: Tablo sayfalama boyutunu ayarlama

Azure Mobile Apps varsayılan olarak istek başına 50 kayıt döndürür. Disk belleği, istemcinin kullanıcı arabirimi iş parçacığını veya sunucuyu çok uzun süre bağlamamasını sağlayarak iyi bir kullanıcı deneyimi sağlar. Tablo sayfalama boyutunu değiştirmek için sunucu tarafı "izin verilen sorgu boyutu" değerini ve istemci tarafı sayfa boyutunu artırın Sunucu tarafı "izin verilen sorgu boyutu" özniteliği kullanılarak EnableQuery ayarlanır:

[EnableQuery(PageSize = 500)]

PageSize'ın istemci tarafından istenen boyuttan aynı veya daha büyük olduğundan emin olun. İstemci sayfası boyutunu değiştirme hakkında ayrıntılı bilgi için belirli istemci HOWTO belgelerine bakın.

Nasıl yapılır: Özel API denetleyicisi tanımlama

Özel API denetleyicisi, bir uç noktayı kullanıma sunarak Mobil Uygulama arka ucunuza en temel işlevselliği sağlar. [MobileAppController] özniteliğini kullanarak mobil kullanıma özgü bir API denetleyicisi kaydedebilirsiniz. MobileAppController özniteliği yolu kaydeder, Mobile Apps JSON seri hale getiricisini ayarlar ve istemci sürümü denetimini açar.

  1. Visual Studio'da Denetleyiciler klasörüne sağ tıklayın, ardındanDenetleyiciEkle'ye> tıklayın, Web API 2 Denetleyici—Boş'u seçin ve Ekle'ye tıklayın.

  2. Gibi CustomControllerbir Denetleyici adı girin ve Ekle'ye tıklayın.

  3. Yeni denetleyici sınıfı dosyasına aşağıdaki using deyimini ekleyin:

     using Microsoft.Azure.Mobile.Server.Config;
    
  4. Aşağıdaki örnekte olduğu gibi [MobileAppController] özniteliğini API denetleyicisi sınıf tanımına uygulayın:

     [MobileAppController]
     public class CustomController : ApiController
     {
           //...
     }
    
  5. App_Start/Startup.MobileApp.cs dosyasında, aşağıdaki örnekte olduğu gibi MapApiControllers uzantısı yöntemine bir çağrı ekleyin:

     new MobileAppConfiguration()
         .MapApiControllers()
         .ApplyTo(config);
    

yerine uzantı yöntemini MapApiControllers()de kullanabilirsinizUseDefaultConfiguration(). MobileAppControllerAttribute uygulanmamış tüm denetleyicilere istemciler tarafından erişilebilir, ancak herhangi bir Mobil Uygulama istemci SDK'sı kullanan istemciler tarafından doğru şekilde kullanılamayabilir.

Nasıl yapılır: Kimlik doğrulaması ile çalışma

Azure Mobile Apps, mobil arka ucunuzun güvenliğini sağlamak için App Service Kimlik Doğrulaması / Yetkilendirme kullanır. Bu bölümde, .NET arka uç sunucu projenizde kimlik doğrulamasıyla ilgili aşağıdaki görevlerin nasıl gerçekleştirebileceğiniz gösterilmektedir:

Nasıl yapılır: Sunucu projesine kimlik doğrulaması ekleme

MobileAppConfiguration nesnesini genişleterek ve OWIN ara yazılımını yapılandırarak sunucu projenize kimlik doğrulaması ekleyebilirsiniz. Microsoft.Azure.Mobile.Server.Quickstart paketini yükleyip UseDefaultConfiguration uzantısı yöntemini çağırdığınızda, 3. adıma atlayabilirsiniz.

  1. Visual Studio'da Microsoft.Azure.Mobile.Server.Authentication paketini yükleyin.

  2. Startup.cs proje dosyasında Configuration yönteminin başına aşağıdaki kod satırını ekleyin:

     app.UseAppServiceAuthentication(config);
    

    Bu OWIN ara yazılım bileşeni, ilişkili App Service ağ geçidi tarafından verilen belirteçleri doğrular.

  3. Özniteliği kimlik [Authorize] doğrulaması gerektiren herhangi bir denetleyiciye veya yönteme ekleyin.

Mobile Apps arka ucunuzda istemcilerin kimliğini doğrulama hakkında bilgi edinmek için bkz. Uygulamanıza kimlik doğrulaması ekleme.

Nasıl yapılır: Uygulamanız için özel kimlik doğrulaması kullanma

Önemli

Özel kimlik doğrulamasını etkinleştirmek için önce Azure portal App Service için bir sağlayıcı seçmeden App Service Kimlik Doğrulamasını etkinleştirmeniz gerekir. Bu, barındırıldığında WEBSITE_AUTH_SIGNING_KEY ortam değişkenini etkinleştirir.

App Service Kimlik Doğrulaması/Yetkilendirme sağlayıcılarından birini kullanmak istemiyorsanız, kendi oturum açma sisteminizi uygulayabilirsiniz. Kimlik doğrulama belirtecinin oluşturulmasına yardımcı olması için Microsoft.Azure.Mobile.Server.Login paketini yükleyin. Kullanıcı kimlik bilgilerini doğrulamak için kendi kodunuzu sağlayın. Örneğin, veritabanındaki tuzlu ve karma parolaları denetleyebilirsiniz. Aşağıdaki örnekte yöntemi isValidAssertion() (başka bir yerde tanımlanmıştır) bu denetimlerden sorumludur.

Özel kimlik doğrulaması, apicontroller oluşturulup kullanıma sunulur ve login eylemler kullanıma sunulurregister. İstemci, kullanıcıdan bilgi toplamak için özel bir kullanıcı arabirimi kullanmalıdır. Daha sonra bilgiler standart bir HTTP POST çağrısıyla API'ye gönderilir. Sunucu onaylama işlemini doğruladıktan sonra yöntemi kullanılarak AppServiceLoginHandler.CreateToken() bir belirteç verilir. ApiController özniteliğini [MobileAppController]kullanmamalıdır.

Örnek login bir eylem:

    public IHttpActionResult Post([FromBody] JObject assertion)
    {
        if (isValidAssertion(assertion)) // user-defined function, checks against a database
        {
            JwtSecurityToken token = AppServiceLoginHandler.CreateToken(new Claim[] { new Claim(JwtRegisteredClaimNames.Sub, assertion["username"]) },
                mySigningKey,
                myAppURL,
                myAppURL,
                TimeSpan.FromHours(24) );
            return Ok(new LoginResult()
            {
                AuthenticationToken = token.RawData,
                User = new LoginResultUser() { UserId = userName.ToString() }
            });
        }
        else // user assertion was not valid
        {
            return this.Request.CreateUnauthorizedResponse();
        }
    }

Yukarıdaki örnekte LoginResult ve LoginResultUser, gerekli özellikleri ortaya çıkarmak için seri hale getirilebilir nesnelerdir. İstemci, oturum açma yanıtlarının formun JSON nesneleri olarak döndürülmesini bekler:

    {
        "authenticationToken": "<token>",
        "user": {
            "userId": "<userId>"
        }
    }

AppServiceLoginHandler.CreateToken() yöntemi bir izleyici ve veren parametresi içerir. Bu parametrelerin her ikisi de HTTPS şeması kullanılarak uygulama kökünüzün URL'sine ayarlanır. Benzer şekilde secretKey değerini uygulamanızın imzalama anahtarının değeri olarak ayarlamanız gerekir. İmzalama anahtarını istemciye dağıtmayın, bu anahtarlar basılabilir ve kullanıcıların kimliğine bürünülebilir. WEBSITE_AUTH_SIGNING_KEY ortam değişkenine başvurarak App Service'de barındırılan imzalama anahtarını alabilirsiniz. Yerel hata ayıklama bağlamında gerekirse, anahtarı almak ve bir uygulama ayarı olarak depolamak için Kimlik doğrulamasıyla yerel hata ayıklama bölümündeki yönergeleri izleyin.

Verilen belirteç başka talepler ve bir süre sonu tarihi de içerebilir. En düşük düzeyde, verilen belirtecin bir konu (alt) talebi içermesi gerekir.

Kimlik doğrulama yolunu aşırı yükleyerek standart istemci loginAsync() yöntemini destekleyebilirsiniz. İstemci oturum açmak için çağırırsa client.loginAsync('custom'); , yolunuz olmalıdır /.auth/login/custom. kullanarak özel kimlik doğrulama denetleyicisinin MapHttpRoute()yolunu ayarlayabilirsiniz:

config.Routes.MapHttpRoute("custom", ".auth/login/custom", new { controller = "CustomAuth" });

İpucu

yaklaşımının loginAsync() kullanılması, kimlik doğrulama belirtecinin hizmete yapılan sonraki her çağrıya eklenmesini sağlar.

Nasıl yapılır: Kimliği doğrulanmış kullanıcı bilgilerini alma

Kullanıcının kimliği App Service tarafından doğrulandığında, atanan kullanıcı kimliğine ve .NET arka uç kodunuzdaki diğer bilgilere erişebilirsiniz. Kullanıcı bilgileri, arka uçta yetkilendirme kararları vermek için kullanılabilir. Aşağıdaki kod, bir istekle ilişkili kullanıcı kimliğini elde eder:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

SID, sağlayıcıya özgü kullanıcı kimliğinden türetilir ve belirli bir kullanıcı ve oturum açma sağlayıcısı için statiktir. Geçersiz kimlik doğrulama belirteçleri için SID null.

App Service ayrıca oturum açma sağlayıcınızdan belirli talepler istemenizi sağlar. Her kimlik sağlayıcısı, kimlik sağlayıcısı SDK'sını kullanarak daha fazla bilgi sağlayabilir. Örneğin, arkadaş bilgileri için Facebook Graph API kullanabilirsiniz. İstenen talepleri Azure portal sağlayıcı dikey penceresinde belirtebilirsiniz. Bazı talepler, kimlik sağlayıcısıyla ek yapılandırma gerektirir.

Aşağıdaki kod, Facebook Graph API karşı istekte bulunmak için gereken erişim belirtecini içeren oturum açma kimlik bilgilerini almak için GetAppServiceIdentityAsync uzantısı yöntemini çağırır:

// Get the credentials for the logged-in user.
var credentials =
    await this.User
    .GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);

if (credentials.Provider == "Facebook")
{
    // Create a query string with the Facebook access token.
    var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
        + credentials.AccessToken;

    // Create an HttpClient request.
    var client = new System.Net.Http.HttpClient();

    // Request the current user info from Facebook.
    var resp = await client.GetAsync(fbRequestUrl);
    resp.EnsureSuccessStatusCode();

    // Do something here with the Facebook user information.
    var fbInfo = await resp.Content.ReadAsStringAsync();
}

GetAppServiceIdentityAsync uzantısı yöntemini sağlamak için için System.Security.Principal bir using deyimi ekleyin.

Nasıl yapılır: Yetkili kullanıcılar için veri erişimini kısıtlama

Önceki bölümde kimliği doğrulanmış bir kullanıcının kullanıcı kimliğini nasıl alacağımızı gösterdik. Verilere ve diğer kaynaklara erişimi bu değere göre kısıtlayabilirsiniz. Örneğin, tablolara bir userId sütunu eklemek ve sorgu sonuçlarını kullanıcı kimliğine göre filtrelemek, döndürülen verileri yalnızca yetkili kullanıcılarla sınırlamanın basit bir yoludur. Aşağıdaki kod, veri satırlarını yalnızca SID TodoItem tablosundaki UserId sütunundaki değerle eşleştiğinde döndürür:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

// Only return data rows that belong to the current user.
return Query().Where(t => t.UserId == sid);

yöntemi, Query() filtrelemeyi işlemek için LINQ tarafından işlenebilen bir IQueryable döndürür.

Nasıl yapılır: Sunucu projesine anında iletme bildirimleri ekleme

MobileAppConfiguration nesnesini genişleterek ve Notification Hubs istemcisi oluşturarak sunucu projenize anında iletme bildirimleri ekleyin.

  1. Visual Studio'da sunucu projesine sağ tıklayın ve NuGet Paketlerini Yönet'e tıklayın, araması yapın Microsoft.Azure.Mobile.Server.Notificationsve yükle'ye tıklayın.

  2. Notification Hubs istemci kitaplığını Microsoft.Azure.NotificationHubs içeren paketi yüklemek için bu adımı yineleyin.

  3. App_Start/Startup.MobileApp.cs içinde ve başlatma sırasında AddPushNotifications() uzantı yöntemine bir çağrı ekleyin:

     new MobileAppConfiguration()
         // other features...
         .AddPushNotifications()
         .ApplyTo(config);
    
  4. Notification Hubs istemcisi oluşturan aşağıdaki kodu ekleyin:

     // Get the settings for the server project.
     HttpConfiguration config = this.Configuration;
     MobileAppSettingsDictionary settings =
         config.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
     // Get the Notification Hubs credentials for the Mobile App.
     string notificationHubName = settings.NotificationHubName;
     string notificationHubConnection = settings
         .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
     // Create a new Notification Hub client.
     NotificationHubClient hub = NotificationHubClient
         .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    

Artık kayıtlı cihazlara anında iletme bildirimleri göndermek için Notification Hubs istemcisini kullanabilirsiniz. Daha fazla bilgi için bkz. Uygulamanıza anında iletme bildirimleri ekleme. Notification Hubs hakkında daha fazla bilgi edinmek için bkz. Notification Hubs'a Genel Bakış.

Nasıl yapılır: Etiketler kullanarak hedeflenen gönderimi etkinleştirme

Notification Hubs, etiketleri kullanarak belirli kayıtlara hedeflenen bildirimler göndermenizi sağlar. Otomatik olarak birkaç etiket oluşturulur:

  • Yükleme Kimliği belirli bir cihazı tanımlar.
  • Kimliği doğrulanmış SID'yi temel alan Kullanıcı Kimliği belirli bir kullanıcıyı tanımlar.

Yükleme kimliğine MobileServiceClient üzerindeki installationId özelliğinden erişilebilir. Aşağıdaki örnekte, Notification Hubs'ta belirli bir yüklemeye etiket eklemek için yükleme kimliğinin nasıl kullanılacağı gösterilmektedir:

hub.PatchInstallation("my-installation-id", new[]
{
    new PartialUpdateOperation
    {
        Operation = UpdateOperationType.Add,
        Path = "/tags",
        Value = "{my-tag}"
    }
});

İstemci tarafından anında iletme bildirimi kaydı sırasında sağlanan etiketler, yükleme oluşturulurken arka uç tarafından yoksayılır. İstemcinin yüklemeye etiket eklemesini sağlamak için, önceki deseni kullanarak etiket ekleyen özel bir API oluşturmanız gerekir.

Örnek için bkz. App Service Mobile Apps tamamlandı hızlı başlangıç örneğinde İstemci tarafından eklenen anında iletme bildirimi etiketleri.

Nasıl yapılır: Kimliği doğrulanmış bir kullanıcıya anında iletme bildirimleri gönderme

Kimliği doğrulanmış bir kullanıcı anında iletme bildirimlerine kaydolduğunda, kayda otomatik olarak bir kullanıcı kimliği etiketi eklenir. Bu etiketi kullanarak ilgili kişi tarafından kaydedilen tüm cihazlara anında iletme bildirimleri gönderebilirsiniz. Aşağıdaki kod, isteği yapan kullanıcının SID'sini alır ve bu kişi için her cihaz kaydına bir şablon anında iletme bildirimi gönderir:

// Get the current user SID and create a tag for the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;
string userTag = "_UserId:" + sid;

// Build a dictionary for the template with the item message text.
var notification = new Dictionary<string, string> { { "message", item.Text } };

// Send a template notification to the user ID.
await hub.SendTemplateNotificationAsync(notification, userTag);

Kimliği doğrulanmış bir istemciden anında iletme bildirimlerine kaydolduğunda, kayıt denemeden önce kimlik doğrulamasının tamamlandığından emin olun. Daha fazla bilgi için bkz. App Service Mobile Apps tamamlandı .NET arka ucu için hızlı başlangıç örneğinde kullanıcılara gönderme.

Nasıl yapılır: .NET Server SDK'sının hatalarını ayıklama ve sorunlarını giderme

Azure App Service, ASP.NET uygulamaları için çeşitli hata ayıklama ve sorun giderme teknikleri sağlar:

Günlüğe Kaydetme

Standart ASP.NET izleme yazısını kullanarak App Service tanılama günlüklerine yazabilirsiniz. Günlüklere yazabilmeniz için önce Mobil Uygulama arka ucunuzda tanılamayı etkinleştirmeniz gerekir.

Tanılamayı etkinleştirmek ve günlüklere yazmak için:

  1. Uygulama günlüğünü etkinleştirme (Windows) bölümündeki adımları izleyin.

  2. Kod dosyanıza aşağıdaki using deyimini ekleyin:

     using System.Web.Http.Tracing;
    
  3. .NET arka uçtan tanılama günlüklerine yazmak için aşağıdaki gibi bir izleme yazıcısı oluşturun:

     ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
     traceWriter.Info("Hello, World");
    
  4. Sunucu projenizi yeniden yayımlayın ve günlük kaydıyla kod yolunu yürütmek için Mobil Uygulama arka ucuna erişin.

  5. Access günlük dosyalarında açıklandığı gibi günlükleri indirin ve değerlendirin.

Kimlik doğrulaması ile yerel hata ayıklama

Değişiklikleri bulutta yayımlamadan önce test etmek için uygulamanızı yerel olarak çalıştırabilirsiniz. Çoğu Azure Mobile Apps arka ucu için Visual Studio'dayken F5 tuşuna basın. Ancak, kimlik doğrulaması kullanılırken dikkat edilmesi gereken bazı ek noktalar vardır.

App Service Kimlik Doğrulaması/Yetkilendirmesi yapılandırılmış bulut tabanlı bir mobil uygulamanız olmalı ve istemcinizde alternatif oturum açma ana bilgisayarı olarak belirtilen bulut uç noktası olmalıdır. Gereken belirli adımlar için istemci platformunuzun belgelerine bakın.

Mobil arka ucunuzda Microsoft.Azure.Mobile.Server.Authentication'ın yüklü olduğundan emin olun. Ardından, uygulamanızın OWIN başlangıç sınıfına aşağıdakini ekleyin:MobileAppConfigurationHttpConfiguration

    app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
    {
        SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
        ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
        ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
        TokenHandler = config.GetAppServiceTokenHandler()
    });

Yukarıdaki örnekte, https düzenini kullanarak Web.config dosyanızdaki authAudience ve authIssuer uygulama ayarlarını uygulama kökünüzün URL'si olacak şekilde yapılandırmanız gerekir. Benzer şekilde , authSigningKey değerini uygulamanızın imzalama anahtarının değeri olarak ayarlamanız gerekir. İmzalama anahtarını almak için:

  1. Azure portal içinde uygulamanıza gidin
  2. Araçlar, Kudu, Git'e tıklayın.
  3. Kudu Yönetimi sitesinde Ortam'a tıklayın.
  4. WEBSITE_AUTH_SIGNING_KEY değerini bulun.

Yerel uygulama yapılandırmanızda authSigningKey parametresi için imzalama anahtarını kullanın. Mobil arka ucunuz artık yerel olarak çalışırken belirteçleri doğrulayacak şekilde donatılmıştır ve istemci bu belirteci bulut tabanlı uç noktadan alır.