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.
Sağlayıcıya özgü yönergeleri izleyerek tercih ettiğiniz kimlik sağlayıcıyı yapılandırın:
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:
Azure portal App Service seçin.
Kimlik Doğrulaması / Yetkilendirme menü seçeneğine tıklayın.
Kimlik Doğrulama Sağlayıcıları bölümünün altında Azure Active Directory'ye tıklayın.
Yönetim modunuGelişmiş olarak ayarlayın.
İzin Verilen Dış Yeniden Yönlendirme URL'lerine girin
appname://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.Tamam'a tıklayın.
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:
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.
viewDidLoad
QSTodoListViewController.m dosyasında öğesini aşağıdaki kodla değiştirin[self refresh]
:[self loginAndGetData];
QSAppDelegate.h
dosyasını açın ve aşağıdaki kodu ekleyin:#import "QSTodoService.h" @property (strong, nonatomic) QSTodoService *qsTodoService;
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.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üzenleyicisiniAppName-Info.plist
açmak için XCode'da dosyaya tıklayın.com.microsoft.azure.zumo
CFBundleURLName dizesini Apple paket tanımlayıcınızla değiştirin.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:
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.
ToDoTableViewController.swift dosyasındaki ve sonundaki
viewDidLoad()
satırlarıself.refreshControl?.beginRefreshing()
self.onRefresh(self.refreshControl)
kaldırın. Yerine bir aramaloginAndGetData()
ekleyin:loginAndGetData()
AppDelegate.swift
dosyasını açın ve sınıfınaAppDelegate
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.
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üzenleyicisiniAppName-Info.plist
açmak için XCode'da dosyaya tıklayın.com.microsoft.azure.zumo
CFBundleURLName dizesini Apple paket tanımlayıcınızla değiştirin.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