Hızlı Başlangıç: iOS veya macOS uygulamasından kullanıcılarda oturum açma ve Microsoft Graph'ı çağırma
Bu hızlı başlangıçta, yerel bir iOS veya macOS uygulamasının kullanıcılarda nasıl oturum açabileceğini ve Microsoft Graph API'sini çağırmak için erişim belirteci alabileceğini gösteren bir kod örneği indirip çalıştıracaksınız.
Hızlı başlangıç hem iOS hem de macOS uygulamaları için geçerlidir. Bazı adımlar yalnızca iOS uygulamaları için gereklidir ve bu şekilde belirtilir.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiziçin hesap oluşturun.
- XCode 10+
- iOS 10+
- macOS 10.12+
Örnek nasıl çalışır?
Hızlı başlangıç uygulamanızı kaydetme
Uygulamanızı kaydetmek ve uygulamanın kayıt bilgilerini çözümünüze el ile eklemek için şu adımları izleyin:
- Microsoft Entra yönetim merkezine en az Uygulama Geliştiriciolarak oturum açın.
- Birden çok kiracıya erişiminiz varsa, üst menüdeki Ayarlar simgesini
kullanarak uygulamayı Dizinler + abonelikler menüsünden kaydetmek istediğiniz kiracıya geçin.
- Identity>Applications>App registrationsbölümüne göz atın.
- Yeni kayıtseçin.
- Uygulamanız için bir Adı girin. Uygulamanızın kullanıcıları bu adı görebilir ve daha sonra değiştirebilirsiniz.
- 'ı seçin,'i kaydedin.
- Yönetaltında Kimlik Doğrulaması>Platform>iOSekle'yi seçin.
- Uygulamanız için Paket Tanımlayıcısı girin. Paket tanımlayıcısı, uygulamanızı benzersiz olarak tanımlayan benzersiz bir dizedir, örneğin
com.<yourname>.identitysample.MSALMacOS
. Kullandığınız değeri not edin. iOS yapılandırmasının macOS uygulamaları için de geçerli olduğunu unutmayın. - Yapılandırma'yı seçin ve bu hızlı başlangıçta ilerleyen kısım için MSAL Yapılandırması ayrıntılarını kaydedin.
- seçin.Bitti.
2. Adım: Örnek projeyi indirme
3. Adım: Bağımlılıkları yükleme
- Zip dosyasını ayıklayın.
- Terminal penceresinde indirilen kod örneğini içeren klasöre gidin ve en son MSAL kitaplığını yüklemek için
pod install
çalıştırın.
4. Adım: Projenizi yapılandırma
Yukarıdaki Seçenek 1'i seçtiyseniz, bu adımları atlayabilirsiniz.
Projeyi XCode'da açın.
ViewController.swift düzenleyin ve 'let kClientID' ile başlayan satırı aşağıdaki kod parçacığıyla değiştirin. Bu hızlı başlangıçta uygulamanızı kaydederken kaydettiğiniz clientID ile
kClientID
değerini güncelleştirmeyi unutmayın:let kClientID = "Enter_the_Application_Id_Here"
Microsoft Entra ulusal bulutları için bir uygulama oluşturuyorsanız , 'let kGraphEndpoint' ve 'let kAuthority' ile başlayan satırı doğru uç noktalarla değiştirin. Genel erişim için varsayılan değerleri kullanın:
let kGraphEndpoint = "https://graph.microsoft.com/" let kAuthority = "https://login.microsoftonline.com/common"
Diğer uç noktalar buradabelgelenmiştir. Örneğin, hızlı başlangıcı Microsoft Entra Germany ile çalıştırmak için aşağıdakileri kullanın:
let kGraphEndpoint = "https://graph.microsoft.de/" let kAuthority = "https://login.microsoftonline.de/common"
Proje ayarlarını açın. Kimlik bölümünde Paket Tanımlayıcısıgirin.
Info.plist sağ tıklayın ve Olarak Aç>Kaynak Koduseçeneğini belirleyin.
dict kök düğümü altında,
Enter_the_bundle_Id_Here
portalda kullandığınız Paket Kimliği ile değiştirin. Dizedekimsauth.
ön ekine dikkat edin.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
Uygulamayı derleyin ve çalıştırın!
Daha Fazla Bilgi
Bu hızlı başlangıç hakkında daha fazla bilgi edinmek için bu bölümleri okuyun.
MSAL'i edin
MSAL (MSAL.framework), kullanıcıların oturumunu açmak ve Microsoft kimlik platformu tarafından korunan bir API'ye erişmek için kullanılan belirteçleri istemek için kullanılan kitaplıktır. Aşağıdaki işlemi kullanarak uygulamanıza MSAL ekleyebilirsiniz:
$ vi Podfile
Bu podfile'a aşağıdakileri ekleyin (projenizin hedefiyle):
use_frameworks!
target 'MSALiOS' do
pod 'MSAL'
end
CocoaPods yükleme komutunu çalıştırın:
pod install
MSAL'ı başlatma
Aşağıdaki kodu ekleyerek MSAL başvurusunu ekleyebilirsiniz:
import MSAL
Ardından aşağıdaki kodu kullanarak MSAL'yi başlatın:
let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Nerede: | Açıklama |
---|---|
clientId |
portal.azure.com adresinde kayıtlı uygulamanın Uygulama Kimliği |
authority |
Microsoft kimlik platformu. Çoğu durumda bu https://login.microsoftonline.com/common olacaktır. |
redirectUri |
Uygulamanın yeniden yönlendirme URI'si. Varsayılan değeri veya özel yeniden yönlendirme URI'nizi kullanmak için 'nil' geçirebilirsiniz. |
Yalnızca iOS için ek uygulama gereksinimleri
Uygulamanızın AppDelegate
içinde aşağıdakilere sahip olması gerekir. Bu, kimlik doğrulaması yaptığınızda MSAL SDK'sının yetkilendirme aracısı uygulamasından belirteç yanıtını işlemesine olanak tanır.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}
Not
iOS 13+ üzerinde, UIApplicationDelegate
yerine UISceneDelegate
benimserseniz, bu kodu scene:openURLContexts:
geri çağırma işlevine yerleştirin (Bkz. Apple'ın belgeleri).
Eski iOS ile uyumluluk için hem UISceneDelegate hem de UIApplicationDelegate'i destekliyorsanız, MSAL geri çağırmanın her iki yere de yerleştirilmesi gerekir.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else {
return
}
let url = urlContext.url
let sourceApp = urlContext.options.sourceApplication
MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}
Son olarak, uygulamanızın Info.plistCFBundleURLTypes
yanında bir LSApplicationQueriesSchemes
girişi olmalıdır. Örnek, bu bilgilerle birlikte gelir.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Kullanıcılar & oturum açarak belirteç talep eder.
MSAL,belirteçleri almak için kullanılan iki yönteme sahiptir: acquireToken
ve acquireTokenSilent
.
acquireToken: Etkileşimli olarak belirteç alma
Bazı durumlarda kullanıcıların Microsoft kimlik platformuyla etkileşim kurması gerekir. Böyle durumlarda, son kullanıcının hesabını seçmesi, kimlik bilgilerini girmesi veya uygulamanızın izinlerini onaylaması gerekebilir. Örneğin
- Uygulamaya ilk kez kullanıcılar oturum açtığında
- Bir kullanıcı parolasını sıfırlarsa, kimlik bilgilerini girmesi gerekir
- Uygulamanız bir kaynağa ilk kez erişim istediğinde
- MFA veya diğer Koşullu Erişim ilkeleri gerektiğinde
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Nerede: | Açıklama |
---|---|
scopes |
İstenen kapsamları içerir (yani, Microsoft Graph için [ "user.read" ] veya özel web API'leri için [ "<Application ID URL>/scope" ] (api://<Application ID>/access_as_user )) |
acquireTokenSilent: Erişim belirtecini sessizce alma
Uygulamalar, kullanıcılarının her belirteç isteğinde bulunduklarında oturum açmalarını gerektirmemelidir. Kullanıcı zaten oturum açmışsa, bu yöntem uygulamaların sessizce belirteç istemesine olanak tanır.
self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in
guard let account = currentAccount else {
return
}
let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
Nerede: | Açıklama |
---|---|
scopes |
İstenen kapsamları içerir (yani, Microsoft Graph için [ "user.read" ] veya özel web API'leri için [ "<Application ID URL>/scope" ] (api://<Application ID>/access_as_user )) |
account |
Belirtecin istenildiği hesap. Bu hızlı başlangıç, yalnızca bir hesap uygulamasıyla ilgilidir. Birden fazla hesabı olan bir uygulama oluşturmak istiyorsanız, hangi hesabın token istekleri için kullanılacağını belirlemek adına mantık tanımlamanız ve accountsFromDeviceForParameters:completionBlock: kullanarak doğru accountIdentifier 'i geçirmeniz gerekir. |
Yardım ve destek
Yardıma ihtiyacınız varsa, bir sorunu bildirmek veya destek seçenekleriniz hakkında bilgi edinmek istiyorsanız bkz. Yardım ve geliştiriciler için destek.
Sonraki adımlar
Microsoft kimlik platformundan erişim belirteci alan ve bunu Microsoft Graph API'sini çağırmak için kullanan bir iOS veya macOS uygulaması oluşturacağınız adım adım kılavuza geçiş yapın.