iOS uygulamanıza kimlik doğrulaması ekleme

Bu öğreticide, desteklenen bir kimlik sağlayıcısı kullanarak iOS hızlı başlangıç projesine kimlik doğrulaması eklersiniz. Bu öğretici, önce tamamlamanız gereken iOS hızlı başlangıç öğreticisini temel alır.

Uygulamanızı kimlik doğrulaması için kaydetme ve App Service

İlk olarak, uygulamanızı bir kimlik sağlayıcısının sitesine kaydetmeniz gerekir ve ardından Mobile Apps arka ucunda sağlayıcı tarafından oluşturulan kimlik bilgilerini ayarlarsınız.

  1. Sağlayıcıya özgü yönergeleri izleyerek tercih ettiğiniz kimlik sağlayıcıyı yapılandırın:

  2. Uygulamanızda desteklemek istediğiniz her sağlayıcı için önceki adımları yineleyin.

Uygulamanızı İzin Verilen Dış Yeniden Yönlendirme URL'lerine ekleme

Güvenli kimlik doğrulaması, uygulamanız için yeni bir URL şeması tanımlamanızı gerektirir. Bu, kimlik doğrulama işlemi tamamlandıktan sonra kimlik doğrulama sisteminin uygulamanıza yeniden yönlendirilmesini sağlar. Bu öğreticide, url şeması uygulama adını kullanacağız. Ancak, seçtiğiniz herhangi bir URL düzenini kullanabilirsiniz. Mobil uygulamanız için benzersiz olmalıdır. Sunucu tarafında yeniden yönlendirmeyi etkinleştirmek için:

  1. Azure portal App Service seçin.

  2. Kimlik Doğrulaması / Yetkilendirme menü seçeneğine tıklayın.

  3. Kimlik Doğrulama Sağlayıcıları bölümünün altında Azure Active Directory'ye tıklayın.

  4. Yönetim modunuGelişmiş olarak ayarlayın.

  5. İzin Verilen Dış Yeniden Yönlendirme URL'lerine girinappname://easyauth.callback. Bu dizedeki uygulama adı , mobil uygulamanızın URL Şemasıdır. Bir protokol için normal URL belirtimine uygun olmalıdır (yalnızca harf ve sayı kullanın ve bir harfle başlayın). Mobil uygulama kodunuzu URL Şeması ile birkaç yerde ayarlamanız gerekeceğinden, seçtiğiniz dizeyi not almanız gerekir.

  6. Tamam'a tıklayın.

  7. Kaydet’e tıklayın.

Kimliği doğrulanmış kullanıcılarla izinleri kısıtlama

Varsayılan olarak, Bir Mobile Apps arka ucundaki API'ler anonim olarak çağrılabilir. Ardından, erişimi yalnızca kimliği doğrulanmış istemcilere kısıtlamanız gerekir.

  • arka ucuNode.js (Azure portal aracılığıyla) :

    Mobile Apps ayarlarınızda Kolay Tablolar'a tıklayın ve tablonuzu seçin. İzinleri değiştir'e tıklayın, yalnızca tüm izinler için kimliği doğrulanmış erişim'i seçin ve kaydet'e tıklayın.

  • .NET arka ucu (C#):

    Sunucu projesinde Controllers>TodoItemController.cs dosyasına gidin. [Authorize]TodoItemController sınıfına özniteliğini aşağıdaki gibi ekleyin. Erişimi yalnızca belirli yöntemlerle kısıtlamak için, bu özniteliği sınıf yerine yalnızca bu yöntemlere de uygulayabilirsiniz. Sunucu projesini yeniden yayımlayın.

      [Authorize]
      public class TodoItemController : TableController<TodoItem>
    
  • arka ucuNode.js (Node.js kod aracılığıyla) :

    Tablo erişimi için kimlik doğrulaması gerektirmek için Node.js sunucu betiğine aşağıdaki satırı ekleyin:

      table.access = 'authenticated';
    

    Diğer ayrıntılar için bkz . Nasıl yapılır: Tablolara erişim için kimlik doğrulaması gerektirme. Hızlı başlangıç kod projesini sitenizden indirmeyi öğrenmek için bkz . Nasıl yapılır: Git kullanarak Node.js arka uç hızlı başlangıç kod projesini indirme.

Xcode'da, uygulamayı başlatmak için Çalıştır'a basın. Uygulama kimliği doğrulanmamış bir kullanıcı olarak arka uçtan erişmeye çalıştığından bir özel durum ortaya çıkar, ancak TodoItem tablosu artık kimlik doğrulaması gerektirir.

Uygulamaya kimlik doğrulaması ekleme

Objective-C:

  1. Mac bilgisayarınızda, Xcode'da QSTodoListViewController.m dosyasını açın ve aşağıdaki yöntemi ekleyin:

    - (void)loginAndGetData
    {
        QSAppDelegate *appDelegate = (QSAppDelegate *)[UIApplication sharedApplication].delegate;
        appDelegate.qsTodoService = self.todoService;
    
        [self.todoService.client loginWithProvider:@"google" urlScheme:@"appname" controller:self animated:YES completion:^(MSUser * _Nullable user, NSError * _Nullable error) {
            if (error) {
                NSLog(@"Login failed with error: %@, %@", error, [error userInfo]);
            }
            else {
                self.todoService.client.currentUser = user;
                NSLog(@"User logged in: %@", user.userId);
    
                [self refresh];
            }
        }];
    }
    

    Google'ı kimlik sağlayıcınız olarak kullanmıyorsanız google'ı microsoftaccount, twitter, facebook veya windowsazureactivedirectory olarak değiştirin. Facebook kullanıyorsanız, uygulamanızda Facebook etki alanlarını izin verilenler listesine eklemelisiniz.

    urlScheme değerini uygulamanız için benzersiz bir adla değiştirin. urlScheme, Azure portal İzin Verilen Dış Yeniden Yönlendirme URL'leri alanında belirttiğiniz URL Düzeni protokolüyle aynı olmalıdır. urlScheme, kimlik doğrulama isteği tamamlandıktan sonra uygulamanıza geri dönmek için kimlik doğrulama geri çağırması tarafından kullanılır.

  2. viewDidLoadQSTodoListViewController.m dosyasında öğesini aşağıdaki kodla değiştirin[self refresh]:

    [self loginAndGetData];
    
  3. QSAppDelegate.h dosyasını açın ve aşağıdaki kodu ekleyin:

    #import "QSTodoService.h"
    
    @property (strong, nonatomic) QSTodoService *qsTodoService;
    
  4. QSAppDelegate.m dosyasını açın ve aşağıdaki kodu ekleyin:

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
    {
        if ([[url.scheme lowercaseString] isEqualToString:@"appname"]) {
            // Resume login flow
            return [self.qsTodoService.client resumeWithURL:url];
        }
        else {
            return NO;
        }
    }
    

    Bu kodu doğrudan satır okumadan #pragma mark - Core Data stackönce ekleyin. appname değerini 1. adımda kullandığınız urlScheme değeriyle değiştirin.

  5. AppName-Info.plist Dosyayı açın (AppName yerine uygulamanızın adını yazın) ve aşağıdaki kodu ekleyin:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.microsoft.azure.zumo</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appname</string>
            </array>
        </dict>
    </array>
    

    Bu kod öğesinin <dict> içine yerleştirilmelidir. appname dizesini (CFBundleURLSchemes dizisi içinde) 1. adımda seçtiğiniz uygulama adıyla değiştirin. Bu değişiklikleri plist düzenleyicisinde de yapabilirsiniz. Plist düzenleyicisini AppName-Info.plist açmak için XCode'da dosyaya tıklayın.

    com.microsoft.azure.zumoCFBundleURLName dizesini Apple paket tanımlayıcınızla değiştirin.

  6. Uygulamayı başlatmak için Çalıştır'a basın ve ardından oturum açın. Oturum açtığınızda, Yapılacaklar listesini görüntülemeniz ve güncelleştirmeler yapabilmeniz gerekir.

Swift:

  1. Mac bilgisayarınızda, Xcode'da ToDoTableViewController.swift dosyasını açın ve aşağıdaki yöntemi ekleyin:

    func loginAndGetData() {
    
        guard let client = self.table?.client, client.currentUser == nil else {
            return
        }
    
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.todoTableViewController = self
    
        let loginBlock: MSClientLoginBlock = {(user, error) -> Void in
            if (error != nil) {
                print("Error: \(error?.localizedDescription)")
            }
            else {
                client.currentUser = user
                print("User logged in: \(user?.userId)")
            }
        }
    
        client.login(withProvider:"google", urlScheme: "appname", controller: self, animated: true, completion: loginBlock)
    
    }
    

    Google'ı kimlik sağlayıcınız olarak kullanmıyorsanız google'ı microsoftaccount, twitter, facebook veya windowsazureactivedirectory olarak değiştirin. Facebook kullanıyorsanız, uygulamanızda Facebook etki alanlarını izin verilenler listesine eklemelisiniz.

    urlScheme değerini uygulamanız için benzersiz bir adla değiştirin. urlScheme, Azure portal İzin Verilen Dış Yeniden Yönlendirme URL'leri alanında belirttiğiniz URL Düzeni protokolüyle aynı olmalıdır. urlScheme, kimlik doğrulama isteği tamamlandıktan sonra uygulamanıza geri dönmek için kimlik doğrulama geri çağırması tarafından kullanılır.

  2. ToDoTableViewController.swift dosyasındaki ve sonundaki viewDidLoad() satırları self.refreshControl?.beginRefreshing()self.onRefresh(self.refreshControl) kaldırın. Yerine bir arama loginAndGetData() ekleyin:

    loginAndGetData()
    
  3. AppDelegate.swift dosyasını açın ve sınıfına AppDelegate aşağıdaki satırı ekleyin:

    var todoTableViewController: ToDoTableViewController?
    
    func application(_ application: UIApplication, openURL url: NSURL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        if url.scheme?.lowercased() == "appname" {
            return (todoTableViewController!.table?.client.resume(with: url as URL))!
        }
        else {
            return false
        }
    }
    

    appname değerini 1. adımda kullandığınız urlScheme değeriyle değiştirin.

  4. AppName-Info.plist Dosyayı açın (AppName yerine uygulamanızın adını yazın) ve aşağıdaki kodu ekleyin:

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>com.microsoft.azure.zumo</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appname</string>
            </array>
        </dict>
    </array>
    

    Bu kod öğesinin <dict> içine yerleştirilmelidir. appname dizesini (CFBundleURLSchemes dizisi içinde) 1. adımda seçtiğiniz uygulama adıyla değiştirin. Bu değişiklikleri plist düzenleyicisinde de yapabilirsiniz. Plist düzenleyicisini AppName-Info.plist açmak için XCode'da dosyaya tıklayın.

    com.microsoft.azure.zumoCFBundleURLName dizesini Apple paket tanımlayıcınızla değiştirin.

  5. Uygulamayı başlatmak için Çalıştır'a basın ve ardından oturum açın. Oturum açtığınızda, Yapılacaklar listesini görüntülemeniz ve güncelleştirmeler yapabilmeniz gerekir.

App Service Kimlik Doğrulaması Apples Inter-App İletişim kullanır. Bu konu hakkında daha fazla ayrıntı için Apple Belgeleri'ne bakın