Az Azure Mobile Appshez készült .NET-háttérkiszolgáló SDK használata

Ez a témakör bemutatja, hogyan használhatja a .NET háttérkiszolgáló SDK-t Azure App Service Mobile Apps-forgatókönyvekben. Az Azure Mobile Apps SDK segít az ASP.NET-alkalmazásból származó mobil ügyfelekkel való munkában.

Tipp

Az Azure Mobile Appshez készült .NET-kiszolgáló SDK a GitHubon nyílt forráskód. Az adattár tartalmazza az összes forráskódot, beleértve a teljes kiszolgálóI SDK-egység tesztcsomagját és néhány mintaprojektet.

Referenciadokumentáció

A kiszolgálói SDK referenciadokumentációja itt található: Azure Mobile Apps .NET-referencia.

Útmutató: .NET-mobilalkalmazás háttérrendszer létrehozása

Ha új projektet indít el, létrehozhat egy App Service alkalmazást a Azure Portal vagy a Visual Studióval. A App Service alkalmazást helyileg futtathatja, vagy közzéteheti a projektet a felhőalapú App Service mobilalkalmazásban.

Ha mobilképességeket ad hozzá egy meglévő projekthez, tekintse meg az SDK letöltését és inicializálását bemutató szakaszt .

.NET-háttérrendszer létrehozása a Azure Portal

App Service mobil háttérrendszer létrehozásához kövesse a rövid útmutatót, vagy kövesse az alábbi lépéseket:

  1. Jelentkezzen be az Azure Portalra.

  2. Válassza a +NEW>Web + Mobile>Mobile App lehetőséget, majd adjon nevet a Mobile Apps háttéralkalmazásának.

  3. Erőforráscsoport esetén válasszon ki egy meglévő erőforráscsoportot, vagy hozzon létre egy újat (ugyanazzal a névvel, mint az alkalmazás).

  4. App Service csomag esetén az alapértelmezett csomag (a Standard szinten) van kiválasztva. Másik csomagot is kiválaszthat, vagy létrehozhat egy újat.

    A App Service csomag beállításai határozzák meg az alkalmazáshoz társított helyet, funkciókat, költségeket és számítási erőforrásokat. A App Service csomagokról, valamint arról, hogyan hozhat létre új csomagot egy másik tarifacsomagban és a kívánt helyen, tekintse meg Azure App Service csomagok részletes áttekintését.

  5. Válassza a Létrehozás lehetőséget. Ez a lépés létrehozza a Mobile Apps háttérrendszerét.

  6. Az új Mobile Apps háttérrendszer Beállítások panelén válassza az Ügyfélalkalmazás-platform >gyors üzembe helyezése> adatbázis csatlakoztatása lehetőséget.

    Adatbázisok csatlakoztatásának kijelölései

  7. Az Adatkapcsolat hozzáadása panelen válassza az SQL Database>Új adatbázis létrehozása lehetőséget. Adja meg az adatbázis nevét, válasszon egy tarifacsomagot, majd válassza a Kiszolgáló lehetőséget. Ezt az új adatbázist többször is felhasználhatja. Ha már rendelkezik adatbázissal ugyanazon a helyen, választhatja a Meglévő adatbázis használata lehetőséget is. A sávszélességi költségek és a nagyobb késés miatt nem javasoljuk egy másik helyen található adatbázis használatát.

    Adatbázis kiválasztása

  8. Az Új kiszolgáló panelen adjon meg egy egyedi kiszolgálónevet a Kiszolgálónév mezőben, adjon meg egy bejelentkezést és jelszót, válassza az Azure-szolgáltatások hozzáférésének engedélyezése a kiszolgálóhoz lehetőséget, majd kattintson az OK gombra. Ez a lépés létrehozza az új adatbázist.

  9. Az Adatkapcsolat hozzáadása panelen válassza a Kapcsolati sztring lehetőséget, adja meg az adatbázis bejelentkezési és jelszóértékeit, majd kattintson az OK gombra.

    A folytatás előtt várjon néhány percet, amíg az adatbázis sikeresen üzembe lesz helyezve.

Az Első lépések panelen, a Tábla API létrehozása területen válassza a C# nyelvet háttérnyelvként. Kattintson a Letöltés gombra, bontsa ki a tömörített projektfájlokat a helyi számítógépre, és nyissa meg a megoldást a Visual Studióban.

.NET-háttérrendszer létrehozása a Visual Studio 2017 használatával

Telepítse az Azure számítási feladatot a Visual Studio telepítőjén keresztül, hogy közzétehesse az Azure Mobile Apps-projektben a Visual Studióból. Miután telepítette az SDK-t, hozzon létre egy ASP.NET alkalmazást az alábbi lépésekkel:

  1. Nyissa meg az Új projekt párbeszédpanelt (azÚj>projekt fájlból>...).
  2. Bontsa ki a Visual C# elemet, és válassza a Web lehetőséget.
  3. Válassza ASP.NET webalkalmazás (.NET-keretrendszer) lehetőséget.
  4. Adja meg a projekt nevét. Ezután kattintson az OK gombra.
  5. Válassza ki az Azure Mobile Appot a sablonok listájából.
  6. Kattintson az OK gombra a megoldás létrehozásához.
  7. Kattintson a jobb gombbal a projektre a Megoldáskezelő, és válassza a Közzététel..., majd a App Service lehetőséget közzétételi célként.
  8. Kövesse az utasításokat a hitelesítéshez, és válasszon ki egy új vagy meglévő Azure App Service a közzétételhez.

.NET-háttérrendszer létrehozása a Visual Studio 2015 használatával

Telepítse a .NET-hez készült Azure SDK-t (2.9.0-s vagy újabb verzió) egy Azure Mobile Apps-projekt létrehozásához a Visual Studióban. Miután telepítette az SDK-t, hozzon létre egy ASP.NET alkalmazást az alábbi lépésekkel:

  1. Nyissa meg az Új projekt párbeszédpanelt (azÚj>projekt fájlból>...).
  2. Bontsa ki aVisual C#sablonjait>, és válassza a Web lehetőséget.
  3. Válassza az ASP.NET Web Application (ASP.NET-es webalkalmazás) lehetőséget.
  4. Adja meg a projekt nevét. Ezután kattintson az OK gombra.
  5. A ASP.NET 4.5.2-sablonok területen válassza az Azure Mobile App elemet. A gazdagép felhőben való beállításával hozzon létre egy mobil háttérrendszert a felhőben, amelyen közzéteheti ezt a projektet.
  6. Kattintson az OK gombra.

Útmutató: Az SDK letöltése és inicializálása

Az SDK elérhető NuGet.org. Ez a csomag tartalmazza az SDK használatának megkezdéséhez szükséges alapfunkciót. Az SDK inicializálásához műveleteket kell végrehajtania a HttpConfiguration objektumon.

Az SDK telepítése

Az SDK telepítéséhez kattintson a jobb gombbal a kiszolgálóprojektre a Visual Studióban, válassza a NuGet-csomagok kezelése lehetőséget, keresse meg a Microsoft.Azure.Mobile.Server csomagot, majd kattintson a Telepítés gombra.

A kiszolgálóprojekt inicializálása

A .NET háttérkiszolgáló-projektek inicializálása más ASP.NET projektekhez hasonlóan történik egy OWIN indítási osztály belevételével. Győződjön meg arról, hogy hivatkozott a NuGet-csomagra Microsoft.Owin.Host.SystemWeb. Az osztály Visual Studióban való hozzáadásához kattintson a jobb gombbal a kiszolgálóprojektre, és válassza azÚj elemhozzáadása>, majd a Webes>általános>OWIN indítási osztály lehetőséget. A rendszer létrehoz egy osztályt a következő attribútummal:

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

Configuration() Az OWIN indítási osztály metódusában egy HttpConfiguration objektummal konfigurálja az Azure Mobile Apps-környezetet. Az alábbi példa további funkciók nélkül inicializálja a kiszolgálóprojektet:

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

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

    app.UseWebApi(config);
}

Az egyes funkciók engedélyezéséhez a MobileAppConfiguration objektum bővítménymetódusait kell meghívnia az ApplyTo meghívása előtt. Az alábbi kód például hozzáadja az alapértelmezett útvonalakat az összes olyan API-vezérlőhöz, amely rendelkezik az attribútummal [MobileAppController] az inicializálás során:

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

A Azure Portal kiszolgáló rövid útmutatója meghívja a UseDefaultConfiguration()-t. Ez egyenértékű a következő beállítással:

    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);

A használt bővítménymetenek a következők:

  • AddMobileAppHomeController() Az az Azure Mobile Apps alapértelmezett kezdőlapját biztosítja.
  • MapApiControllers() A egyéni API-képességeket biztosít az [MobileAppController] attribútummal ellátott WebAPI-vezérlőkhöz.
  • AddTables() provides a mapping of the /tables endpoints to table controllers.
  • AddTablesWithEntityFramework() A rövid használható a /tables végpontok Entity Framework-alapú vezérlők használatával történő leképezéséhez.
  • AddPushNotifications() A egyszerű módszert biztosít az eszközök Notification Hubshoz való regisztrálására.
  • MapLegacyCrossDomainController() A szabványos CORS-fejléceket biztosít a helyi fejlesztéshez.

SDK-bővítmények

Az alábbi NuGet-alapú bővítménycsomagok különböző mobilszolgáltatásokat nyújtanak, amelyeket az alkalmazás használhat. A bővítményeket az inicializálás során a MobileAppConfiguration objektummal engedélyezheti.

  • A Microsoft.Azure.Mobile.Server.Quickstart támogatja a Mobile Apps alapszintű beállítását. Az inicializálás során a UseDefaultConfiguration bővítmény metódus meghívásával adhatók hozzá a konfigurációhoz. Ez a bővítmény a következő bővítményeket tartalmazza: Értesítések, Hitelesítés, Entitás, Táblák, Tartományok közötti és Otthoni csomagok. Ezt a csomagot az Azure Portal elérhető Mobile Apps rövid útmutatója használja.
  • A Microsoft.Azure.Mobile.Server.Home a webhely gyökeréhez tartozó alapértelmezett mobilalkalmazást valósítja meg . Adja hozzá a konfigurációhoz az AddMobileAppHomeController bővítménymetódus meghívásával.
  • A Microsoft.Azure.Mobile.Server.Tables osztályokat tartalmaz az adatok kezeléséhez és az adatfolyamat beállításához. Adja hozzá a konfigurációhoz az AddTables bővítménymetódus meghívásával.
  • A Microsoft.Azure.Mobile.Server.Entity lehetővé teszi, hogy az Entity Framework hozzáférjen a SQL Database lévő adatokhoz. Adja hozzá a konfigurációhoz az AddTablesWithEntityFramework bővítménymetódus meghívásával.
  • A Microsoft.Azure.Mobile.Server.Authentication lehetővé teszi a hitelesítést, és beállítja a jogkivonatok érvényesítéséhez használt OWIN köztes szoftvereket. Adja hozzá a konfigurációhoz az AddAppServiceAuthentication és az IAppBuilder meghívásával. Használja azAppServiceAuthentication bővítmény metódusokat.
  • A Microsoft.Azure.Mobile.Server.Notifications engedélyezi a leküldéses értesítéseket, és leküldéses regisztrációs végpontot határoz meg. Adja hozzá a konfigurációhoz az AddPushNotifications bővítménymetódus meghívásával.
  • A Microsoft.Azure.Mobile.Server.CrossDomain létrehoz egy vezérlőt, amely a mobilalkalmazás régi webböngészőinek szolgáltat adatokat. Adja hozzá a konfigurációhoz a MapLegacyCrossDomainController bővítménymetódus meghívásával.
  • A Microsoft.Azure.Mobile.Server.Login az AppServiceLoginHandler.CreateToken() metódust biztosítja, amely az egyéni hitelesítési forgatókönyvek során használt statikus módszer.

Útmutató: A kiszolgálóprojekt közzététele

Ez a szakasz bemutatja, hogyan teheti közzé a .NET-háttérprojektet a Visual Studióból. A háttérprojektet a Git vagy az ott elérhető egyéb módszerek bármelyikével is üzembe helyezheti.

  1. A Visual Studióban építse újra a projektet a NuGet-csomagok visszaállításához.

  2. A Megoldáskezelő kattintson a jobb gombbal a projektre, és válassza a Közzététel parancsot. Az első közzétételkor meg kell határoznia egy közzétételi profilt. Ha már definiált egy profilt, jelölje ki, és kattintson a Közzététel gombra.

  3. Ha a rendszer a közzétételi cél kiválasztására kéri, kattintson a Microsoft Azure App Service>Next elemre, majd (ha szükséges) jelentkezzen be az Azure-beli hitelesítő adataival. A Visual Studio közvetlenül az Azure-ból tölti le és tárolja biztonságosan a közzétételi beállításokat.

  4. Válassza ki előfizetését, válassza az Erőforrástípus lehetőségeta nézetben, bontsa ki a Mobilalkalmazás elemet, kattintson a mobilalkalmazás háttérrendszerére, majd kattintson az OK gombra.

  5. Ellenőrizze a közzétételi profil adatait, és kattintson a Közzététel gombra.

    Ha a mobilalkalmazás háttérrendszere sikeresen közzé lett téve, megjelenik egy sikert jelző kezdőlap.

Útmutató: Táblavezérlő definiálása

Táblavezérlő definiálása sql-tábla mobil ügyfelek számára való elérhetővé ásához. A Táblavezérlő konfigurálásához három lépés szükséges:

  1. Hozzon létre egy Adatátviteli objektum (DTO) osztályt.
  2. Konfiguráljon egy táblahivatkozást a Mobile DbContext osztályban.
  3. Hozzon létre egy táblavezérlőt.

Az adatátviteli objektum (DTO) egy egyszerű C#-objektum, amely a forrásból EntityDataöröklődik. Például:

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

A DTO az SQL-adatbázisban lévő tábla meghatározására szolgál. Az adatbázis-bejegyzés létrehozásához adjon hozzá egy tulajdonságot DbSet<> a használt DbContext elemhez. Az Azure Mobile Apps alapértelmezett projektsablonjában a DbContext neve 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()));
    }
}

Ha telepítve van az Azure SDK, az alábbiak szerint hozhat létre sablontábla-vezérlőt:

  1. Kattintson a jobb gombbal a Vezérlők mappára, és válassza aVezérlő hozzáadása...parancsot>.
  2. Válassza az Azure Mobile Apps Table Controller lehetőséget, majd kattintson a Hozzáadás gombra.
  3. A Vezérlő hozzáadása párbeszédpanelen:
    • A Modellosztály legördülő listában válassza ki az új DTO-t.
    • A DbContext legördülő listában válassza a Mobile Service DbContext osztályt.
    • A vezérlő neve létrejön.
  4. Kattintson a Hozzáadás parancsra.

A rövid útmutató kiszolgálóprojektje egy egyszerű TodoItemControllerre mutat példát.

Útmutató: A táblázat lapozási méretének módosítása

Alapértelmezés szerint az Azure Mobile Apps kérésenként 50 rekordot ad vissza. A lapozás biztosítja, hogy az ügyfél ne kösse össze a felhasználói felület szálát és a kiszolgálót túl sokáig, így biztosítva a jó felhasználói élményt. A tábla lapozási méretének módosításához növelje a kiszolgálóoldali "engedélyezett lekérdezésméretet" és az ügyféloldali oldalméretet. A kiszolgálóoldali "engedélyezett lekérdezésméret" a következő attribútummal EnableQuery módosul:

[EnableQuery(PageSize = 500)]

Győződjön meg arról, hogy a PageSize mérete megegyezik vagy nagyobb, mint az ügyfél által kért méret. Az ügyféloldal méretének módosításával kapcsolatos részletekért tekintse meg az adott ügyfél ÚTMUTATÓ dokumentációját.

Útmutató: Egyéni API-vezérlő definiálása

Az egyéni API-vezérlő végpontok felfedésével biztosítja a mobilalkalmazás háttérrendszerének legalapvetőbb funkcióit. Mobilspecifikus API-vezérlőt a [MobileAppController] attribútummal regisztrálhat. Az MobileAppController attribútum regisztrálja az útvonalat, beállítja a Mobile Apps JSON szerializálót, és bekapcsolja az ügyfélverzió-ellenőrzést.

  1. A Visual Studióban kattintson a jobb gombbal a Vezérlők mappára, majd kattintson aVezérlőhozzáadása> parancsra, válassza a Webes API 2 vezérlő – Üres, majd a Hozzáadás parancsot.

  2. Adjon meg egy vezérlőnevet(például CustomController), és kattintson a Hozzáadás gombra.

  3. Az új vezérlőosztályfájlban adja hozzá a következő using utasítást:

     using Microsoft.Azure.Mobile.Server.Config;
    
  4. Alkalmazza a [MobileAppController] attribútumot az API-vezérlő osztálydefinícióra, az alábbi példában látható módon:

     [MobileAppController]
     public class CustomController : ApiController
     {
           //...
     }
    
  5. A App_Start/Startup.MobileApp.cs fájlban adjon hozzá egy hívást a MapApiControllers bővítménymetódushoz, az alábbi példához hasonlóan:

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

A bővítménymetódust is használhatja UseDefaultConfiguration() ahelyett, hogy MapApiControllers(). A MobileAppControllerAttribute alkalmazással nem rendelkező vezérlők továbbra is elérhetők az ügyfelek számára, de előfordulhat, hogy a Mobile App ügyféloldali SDK-t használó ügyfelek nem használják megfelelően.

Útmutató: A hitelesítés használata

Az Azure Mobile Apps App Service hitelesítést/engedélyezést használ a mobil háttérrendszer védelméhez. Ez a szakasz bemutatja, hogyan hajthatja végre a következő hitelesítéssel kapcsolatos feladatokat a .NET háttérkiszolgáló projektjében:

Útmutató: Hitelesítés hozzáadása kiszolgálóprojekthez

Hitelesítést adhat a kiszolgálóprojekthez a MobileAppConfiguration objektum kibővítésével és az OWIN köztes szoftver konfigurálásával. Amikor telepíti a Microsoft.Azure.Mobile.Server.Quickstart csomagot, és meghívja a UseDefaultConfiguration bővítménymetódust, továbbléphet a 3. lépésre.

  1. A Visual Studióban telepítse a Microsoft.Azure.Mobile.Server.Authentication csomagot.

  2. A Startup.cs projektfájlban adja hozzá a következő kódsort a Configuration metódus elejéhez:

     app.UseAppServiceAuthentication(config);
    

    Ez az OWIN köztes szoftverösszetevő ellenőrzi a társított App Service átjáró által kiadott jogkivonatokat.

  3. Adja hozzá az [Authorize] attribútumot bármely hitelesítést igénylő vezérlőhöz vagy metódushoz.

Az ügyfelek Mobile Apps-háttérrendszerben való hitelesítéséről további információt a Hitelesítés hozzáadása az alkalmazáshoz című témakörben talál.

Útmutató: Egyéni hitelesítés használata az alkalmazáshoz

Fontos

Az egyéni hitelesítés engedélyezéséhez először engedélyeznie kell App Service-hitelesítést anélkül, hogy szolgáltatót választanál a App Service a Azure Portal. Ez engedélyezi a WEBSITE_AUTH_SIGNING_KEY környezeti változót az üzemeltetéskor.

Ha nem szeretné használni az App Service hitelesítési/engedélyezési szolgáltatók egyikét, saját bejelentkezési rendszert is implementálhat. Telepítse a Microsoft.Azure.Mobile.Server.Login csomagot a hitelesítési jogkivonatok létrehozásához. Adja meg a saját kódját a felhasználói hitelesítő adatok érvényesítéséhez. Ellenőrizheti például a sózott és kivonatolt jelszavakat egy adatbázisban. Az alábbi példában a isValidAssertion() (máshol definiált) módszer felelős ezekért az ellenőrzésekért.

Az egyéni hitelesítés egy ApiController létrehozásával, közzétevővel register és login műveletekkel érhető el. Az ügyfélnek egyéni felhasználói felületet kell használnia a felhasználótól származó információk gyűjtéséhez. Az információk ezután egy szabványos HTTP POST-hívással lesznek elküldve az API-nak. Miután a kiszolgáló érvényesíti a helyességi feltételt, a rendszer kibocsát egy jogkivonatot a AppServiceLoginHandler.CreateToken() metódussal. Az ApiController nem használhatja az [MobileAppController] attribútumot.

Példaművelet login :

    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();
        }
    }

Az előző példában a LoginResult és a LoginResultUser szerializálható objektumok, amelyek kötelező tulajdonságokat tárnak fel. Az ügyfél azt várja, hogy a bejelentkezési válaszok az űrlap JSON-objektumaiként lesznek visszaadva:

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

A AppServiceLoginHandler.CreateToken() metódus tartalmaz egy célközönséget és egy kiállítói paramétert. Mindkét paraméter az alkalmazás gyökerének URL-címére van beállítva a HTTPS-séma használatával. Hasonlóképpen állítsa be a secretKey értéket az alkalmazás aláírókulcsának értékeként. Ne terjessze az aláírókulcsot az ügyfélben, mert a kulcsok kimentésére és a felhasználók megszemélyesítésére használható. Az aláírókulcsot a App Service üzemeltetve szerezheti be a WEBSITE_AUTH_SIGNING_KEY környezeti változóra való hivatkozással. Ha helyi hibakeresési környezetben van rá szükség, kövesse a helyi hibakeresés hitelesítési szakaszában található utasításokat a kulcs lekéréséhez és alkalmazásbeállításként való tárolásához.

A kibocsátott jogkivonat egyéb jogcímeket és lejárati dátumot is tartalmazhat. A kiállított jogkivonatnak minimálisan tartalmaznia kell egy tulajdonosi (al)jogcímet.

A szabványos ügyfélmetódus loginAsync() támogatásához túlterhelheti a hitelesítési útvonalat. Ha az ügyfél a bejelentkezéshez hív client.loginAsync('custom'); , az útvonalnak a következőnek kell lennie /.auth/login/custom: . Az egyéni hitelesítési vezérlő útvonalát a következővel MapHttpRoute()állíthatja be:

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

Tipp

loginAsync() A módszer használatával biztosítható, hogy a hitelesítési jogkivonat a szolgáltatás minden további hívásához csatolva legyen.

Útmutató: Hitelesített felhasználói adatok lekérése

Ha egy felhasználót App Service hitelesít, hozzáférhet a hozzárendelt felhasználói azonosítóhoz és a .NET-háttérkód egyéb adataihoz. A felhasználói adatok felhasználhatók engedélyezési döntések meghozatalához a háttérrendszerben. A következő kód lekéri a kéréshez társított felhasználói azonosítót:

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

Az SID a szolgáltatóspecifikus felhasználói azonosítóból származik, és statikus egy adott felhasználó- és bejelentkezési szolgáltatóhoz. Érvénytelen hitelesítési jogkivonatok esetén az SID null értékű.

App Service lehetővé teszi adott jogcímek lekérését is a bejelentkezési szolgáltatótól. Minden identitásszolgáltató további információt nyújthat az identitásszolgáltató SDK-val. Használhatja például a Facebook Graph API a barátok adataihoz. A kért jogcímeket a Azure Portal szolgáltató paneljén adhatja meg. Egyes jogcímek további konfigurálást igényelnek az identitásszolgáltatónál.

Az alábbi kód meghívja a GetAppServiceIdentityAsync bővítménymetódust a bejelentkezési hitelesítő adatok lekéréséhez, amelyek tartalmazzák a Facebook-Graph API irányuló kérésekhez szükséges hozzáférési jogkivonatot:

// 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();
}

Adjon hozzá egy using utasítást a GetAppServiceIdentityAsync bővítménymetódus megadásáhozSystem.Security.Principal.

Útmutató: Az adathozzáférés korlátozása a jogosult felhasználók számára

Az előző szakaszban bemutattuk, hogyan kérhető le egy hitelesített felhasználó felhasználói azonosítója. Ezen érték alapján korlátozhatja az adatokhoz és más erőforrásokhoz való hozzáférést. Ha például felvesz egy userId oszlopot a táblákba, és a lekérdezési eredményeket a felhasználói azonosító alapján szűri, egyszerűen korlátozhatja a visszaadott adatokat csak a jogosult felhasználókra. A következő kód csak akkor ad vissza adatsorokat, ha a SID megegyezik a TodoItem tábla UserId oszlopában szereplő értékkel:

// 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);

A Query() metódus olyan értéket IQueryable ad vissza, amelyet a LINQ kezelhet a szűrés kezeléséhez.

Útmutató: Leküldéses értesítések hozzáadása kiszolgálóprojekthez

Leküldéses értesítések hozzáadása a kiszolgálóprojekthez a MobileAppConfiguration objektum kibővítésével és egy Notification Hubs-ügyfél létrehozásával.

  1. A Visual Studióban kattintson a jobb gombbal a kiszolgálóprojektre, és válassza a Manage NuGet Packages (NuGet-csomagok kezelése) parancsot, keresse meg Microsoft.Azure.Mobile.Server.Notifications, majd kattintson a Telepítés parancsra.

  2. Ismételje meg ezt a lépést a Microsoft.Azure.NotificationHubs Notification Hubs ügyfélkódtárat tartalmazó csomag telepítéséhez.

  3. A App_Start/Startup.MobileApp.cs fájlban adjon hozzá egy hívást az AddPushNotifications() bővítménymetódushoz az inicializálás során:

     new MobileAppConfiguration()
         // other features...
         .AddPushNotifications()
         .ApplyTo(config);
    
  4. Adja hozzá a következő kódot, amely létrehoz egy Notification Hubs-ügyfelet:

     // 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);
    

Mostantól a Notification Hubs-ügyfél használatával leküldéses értesítéseket küldhet a regisztrált eszközökre. További információkat az Add push notifications to your app (Leküldéses értesítések hozzáadása az alkalmazáshoz) című témakörben találhat. A Notification Hubsról további információt a Notification Hubs áttekintésében talál.

Útmutató: Célzott leküldés engedélyezése címkék használatával

A Notification Hubs lehetővé teszi célzott értesítések küldését adott regisztrációkba címkék használatával. Több címke is automatikusan létrejön:

  • A telepítési azonosító egy adott eszközt azonosít.
  • A hitelesített SID-en alapuló felhasználói azonosító azonosít egy adott felhasználót.

A telepítési azonosító a MobileServiceClientinstallationId tulajdonságából érhető el. Az alábbi példa bemutatja, hogyan adhat hozzá címkét egy adott telepítéshez a Notification Hubsban egy telepítési azonosító használatával:

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

Az ügyfél által a leküldéses értesítések regisztrációja során megadott címkéket a háttérrendszer figyelmen kívül hagyja a telepítés létrehozásakor. Ahhoz, hogy egy ügyfél címkéket adjon a telepítéshez, létre kell hoznia egy egyéni API-t, amely az előző minta alapján ad hozzá címkéket.

Példaként tekintse meg az ügyfél által hozzáadott leküldéses értesítési címkéket a App Service Mobile Apps befejezett gyorsútmutató-mintájában.

Útmutató: Leküldéses értesítések küldése hitelesített felhasználónak

Amikor egy hitelesített felhasználó leküldéses értesítésekre regisztrál, a rendszer automatikusan hozzáad egy felhasználói azonosító címkét a regisztrációhoz. Ezzel a címkével leküldéses értesítéseket küldhet az adott személy által regisztrált összes eszközre. A következő kód lekéri a kérést küldő felhasználó biztonsági azonosítóját, és küld egy leküldéses sablonértesítést az adott személy minden eszközregisztrációjának:

// 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);

Amikor leküldéses értesítésekre regisztrál egy hitelesített ügyfélről, a regisztráció megkísérlése előtt győződjön meg arról, hogy a hitelesítés befejeződött. További információ: Leküldés a felhasználóknak a App Service Mobile Apps befejezett gyorsútmutató-mintája a .NET-háttérrendszerhez.

Útmutató: A .NET Server SDK hibakeresése és hibaelhárítása

Azure App Service számos hibakeresési és hibaelhárítási módszert kínál ASP.NET alkalmazásokhoz:

Naplózás

A szabványos ASP.NET nyomkövetési írással írhat App Service diagnosztikai naplókba. Mielőtt írhat a naplókba, engedélyeznie kell a diagnosztikát a mobilalkalmazás háttérrendszerében.

A diagnosztika engedélyezéséhez és a naplókba való íráshoz:

  1. Kövesse az Alkalmazásnaplózás engedélyezése (Windows) című témakör lépéseit.

  2. Adja hozzá a következő using utasítást a kódfájlhoz:

     using System.Web.Http.Tracing;
    
  3. Hozzon létre egy nyomkövetési írót a .NET-háttérrendszerből a diagnosztikai naplókba való íráshoz az alábbiak szerint:

     ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
     traceWriter.Info("Hello, World");
    
  4. Tegye közzé újra a kiszolgálóprojektet, és a mobilalkalmazás háttérrendszeréhez való hozzáféréssel hajtsa végre a kód elérési útját a naplózással.

  5. Töltse le és értékelje ki a naplókat az Access naplófájljaiban leírtak szerint.

Helyi hibakeresés hitelesítéssel

Az alkalmazást helyileg futtatva tesztelheti a módosításokat, mielőtt közzétennénk őket a felhőben. A legtöbb Azure Mobile Apps-háttéralkalmazás esetében nyomja le az F5 billentyűt a Visual Studióban. A hitelesítés használatakor azonban figyelembe kell venni néhány további szempontot.

Rendelkeznie kell egy felhőalapú mobilalkalmazással, amelyen konfigurálva van a App Service hitelesítés/engedélyezés, és az ügyfélnek meg kell adnia a felhővégpontot másodlagos bejelentkezési állomásként. A szükséges lépésekért tekintse meg az ügyfélplatform dokumentációját.

Győződjön meg arról, hogy a mobil háttérrendszeren telepítve van a Microsoft.Azure.Mobile.Server.Authentication . Ezután az alkalmazás OWIN indítási osztályában adja hozzá a következőket, miután MobileAppConfiguration alkalmazva lett a következőre:HttpConfiguration

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

Az előző példában az authAudience és az authIssuer alkalmazásbeállításokat kell konfigurálnia a Web.config fájlban, hogy mindegyik az alkalmazás gyökerének URL-címe legyen a HTTPS-séma használatával. Hasonlóképpen állítsa be az authSigningKey értéket az alkalmazás aláírókulcsának értékeként. Az aláírókulcs beszerzése:

  1. Navigáljon az alkalmazáshoz a Azure Portal
  2. Kattintson az Eszközök, Kudu, Go elemre.
  3. A Kudu felügyeleti webhelyén kattintson a Környezet elemre.
  4. Keresse meg a WEBSITE_AUTH_SIGNING_KEY értékét.

Használja az aláírókulcsot az authSigningKey paraméterhez a helyi alkalmazáskonfigurációban. A mobil háttérrendszer most már rendelkezik a jogkivonatok helyi futtatásakor történő érvényesítéséhez, amelyet az ügyfél a felhőalapú végpontról szerez be.