Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Penyewa tenaga kerja
Penyewa eksternal (pelajari selengkapnya)
Ini adalah tutorial kedua dalam seri tutorial yang menunjukkan cara menambahkan Microsoft Authentication Library (MSAL) untuk iOS dan macOS ke aplikasi iOS Swift Anda.
Sebelum memulai, gunakan pemilih Pilih jenis penyewa di bagian atas halaman ini untuk memilih jenis penyewa. Microsoft Entra ID menyediakan dua konfigurasi penyewa, internal dan eksternal. Konfigurasi pengguna untuk karyawan, aplikasi internal, dan sumber daya organisasi lainnya. Penyewa eksternal adalah untuk aplikasi yang digunakan oleh pelanggan Anda.
Dalam tutorial ini, Anda:
- Tambahkan kerangka kerja MSAL ke aplikasi iOS (Swift).
- Buat instans SDK.
- Mengonfigurasi pengaturan proyek Xcode.
Prasyarat
- Daftarkan aplikasi web klien baru di pusat admin Microsoft Entra, dikonfigurasi untuk Akun di direktori organisasi dan akun Microsoft pribadi apa pun. Lihat Mendaftarkan aplikasi untuk detail selengkapnya. Rekam nilai berikut dari halaman Gambaran Umum aplikasi untuk digunakan nanti:
- ID Aplikasi (klien)
- ID Direktori (Penyewa)
- Kode X.
- Proyek iOS (Swift).
Tambahkan URL pengalihan platform
Untuk menentukan jenis aplikasi ke pendaftaran aplikasi Anda, ikuti langkah-langkah berikut:
- Di bawah Kelola, pilih Autentikasi >Tambahkan platform>iOS/macOS.
- Masukkan ID Bundel proyek Anda. Jika Anda mengunduh sampel kode tersebut, ID Bundel adalah
com.microsoft.identitysample.MSALiOS
. Jika Anda membuat proyek Anda sendiri, pilih proyek Anda di Xcode dan buka tab Umum. Pengidentifikasi bundel muncul di bagian Identitas. - Pilih Konfigurasikan dan simpan Konfigurasi MSAL yang muncul di halaman konfigurasi MSAL sehingga Anda dapat memasukkannya saat mengonfigurasi aplikasi nanti.
- Pilih Selesai.
Menambahkan kerangka kerja MSAL ke aplikasi iOS (Swift)
Pilih salah satu cara berikut untuk menginstal pustaka MSAL di aplikasi Anda:
CocoaPods
Jika Anda menggunakan CocoaPods, instal
MSAL
dengan terlebih dahulu membuat file kosong yang disebut podfile di folder yang sama dengan file .xcodeproj proyek Anda. Tambahkan hal berikut ke podfile:use_frameworks! target '<your-target-here>' do pod 'MSAL' end
Ganti
<your-target-here>
dengan nama proyek Anda.Di jendela terminal, navigasikan ke folder yang berisi podfile Anda buat dan jalankan
pod install
untuk menginstal pustaka MSAL.Tutup Xcode dan buka
<your project name>.xcworkspace
untuk memuat ulang proyek di Xcode.
Carthage
Jika Anda menggunakan Carthage, instal MSAL
dengan menambahkannya ke CartfileAnda.
github "AzureAD/microsoft-authentication-library-for-objc" "master"
Dari jendela terminal, di direktori yang sama dengan Cartfileyang diperbarui , jalankan perintah berikut agar Carthage memperbarui dependensi dalam proyek Anda.
Ios:
carthage update --platform iOS
macOS:
carthage update --platform macOS
Secara manual
Anda juga dapat menggunakan Git Submodule, atau melihat rilis terbaru untuk digunakan sebagai kerangka kerja dalam aplikasi Anda.
Menambahkan pendaftaran aplikasi
Selanjutnya, kami menambahkan pendaftaran aplikasi Anda ke kode Anda.
Pertama, tambahkan pernyataan impor berikut ke bagian atas file ViewController.swift dan AppDelegate.swift atau SceneDelegate.swift:
import MSAL
Selanjutnya, tambahkan kode berikut ke ViewController.swift sebelumnya ke viewDidLoad()
:
// Update the below to your client ID. The below is for running the demo only
let kClientID = "Your_Application_Id_Here"
let kGraphEndpoint = "https://graph.microsoft.com/" // the Microsoft Graph endpoint
let kAuthority = "https://login.microsoftonline.com/common" // this authority allows a personal Microsoft account and a work or school account in any organization's Azure AD tenant to sign in
let kScopes: [String] = ["user.read"] // request permission to read the profile of the signed-in user
var accessToken = String()
var applicationContext : MSALPublicClientApplication?
var webViewParameters : MSALWebviewParameters?
var currentAccount: MSALAccount?
Satu-satunya nilai yang Anda ubah adalah nilai yang ditetapkan untuk kClientID
agar menjadi ID Aplikasi Anda. Nilai ini adalah bagian dari data Konfigurasi MSAL yang Anda simpan selama langkah di awal tutorial ini untuk mendaftarkan aplikasi.
Membuat instans SDK
Untuk membuat instans MSAL di proyek Anda, ikuti langkah-langkah berikut:
Ke kelas ViewController
, tambahkan metode initMSAL
:
func initMSAL() throws {
guard let authorityURL = URL(string: kAuthority) else {
self.updateLogging(text: "Unable to create authority URL")
return
}
let authority = try MSALAADAuthority(url: authorityURL)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
self.initWebViewParams()
}
Masih di kelas ViewController
dan setelah metode initMSAL
, tambahkan metode initWebViewParams
:
Kode iOS:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
}
Kode macOS:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters()
}
Mengonfigurasi pengaturan proyek Xcode
Tambahkan grup keychain baru ke proyek Anda Penandatanganan & Kemampuan. Grup rantai kunci harus com.microsoft.adalcache
di iOS dan com.microsoft.identity.universalstorage
di macOS.
Hanya untuk iOS, konfigurasikan skema URL
Dalam langkah ini, Anda akan mendaftarkan CFBundleURLSchemes
sehingga pengguna dapat dialihkan kembali ke aplikasi setelah masuk. Ngomong-ngomong, LSApplicationQueriesSchemes
juga memungkinkan aplikasi Anda untuk menggunakan Microsoft Authenticator.
Di Xcode, buka Info.plist sebagai file kode sumber, dan tambahkan yang berikut di dalam bagian <dict>
. Ganti [BUNDLE_ID]
dengan nilai yang sebelumnya Anda gunakan. Jika Anda mengunduh kode tersebut, pengidentifikasi bundelnya adalah com.microsoft.identitysample.MSALiOS
. Jika Anda membuat proyek Anda sendiri, pilih proyek Anda di Xcode dan buka tab Umum. Pengidentifikasi bundel muncul di bagian Identitas.
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>msauth.[BUNDLE_ID]</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Hanya untuk macOS, konfigurasikan App Sandbox
- Buka tab Xcode Project Settings >Capabilities>App Sandbox
- Pilih kotak centang Koneksi Keluar (Klien).
Langkah berikutnya
Ini adalah tutorial kedua dalam seri tutorial yang menunjukkan cara menambahkan Microsoft Authentication Library (MSAL) untuk iOS dan macOS ke aplikasi iOS Swift Anda.
Sebelum memulai, gunakan pemilih Pilih jenis penyewa di bagian atas halaman ini untuk memilih jenis penyewa. Microsoft Entra ID menyediakan dua konfigurasi penyewa, internal dan eksternal. Konfigurasi pengguna untuk karyawan, aplikasi internal, dan sumber daya organisasi lainnya. Penyewa eksternal adalah untuk aplikasi yang digunakan oleh pelanggan Anda.
Dalam tutorial ini, Anda;
- Tambahkan kerangka kerja MSAL ke aplikasi iOS (Swift).
- Buat instans SDK.
Prasyarat
- Daftarkan aplikasi web klien baru di pusat admin Microsoft Entra, dikonfigurasi untuk Akun di direktori organisasi dan akun Microsoft pribadi apa pun. Lihat Mendaftarkan aplikasi untuk detail selengkapnya. Rekam nilai berikut dari halaman Gambaran Umum aplikasi untuk digunakan nanti:
- ID Aplikasi (klien)
- ID Direktori (Penyewa)
- Kode X.
- Proyek iOS (Swift).
Tambahkan URL pengalihan platform
Untuk menentukan jenis aplikasi ke pendaftaran aplikasi Anda, ikuti langkah-langkah berikut:
- Di bawah Kelola, pilih Autentikasi >Tambahkan platform>iOS/macOS.
- Masukkan ID Bundel proyek Anda. Jika Anda mengunduh sampel kode tersebut, ID Bundel adalah
com.microsoft.identitysample.MSALiOS
. Jika Anda membuat proyek Anda sendiri, pilih proyek Anda di Xcode dan buka tab Umum. Pengidentifikasi bundel muncul di bagian Identitas. - Pilih Konfigurasikan dan simpan Konfigurasi MSAL yang muncul di halaman konfigurasi MSAL sehingga Anda dapat memasukkannya saat mengonfigurasi aplikasi nanti.
- Pilih Selesai.
Mengaktifkan alur klien publik
Untuk mengidentifikasi aplikasi Anda sebagai klien publik, ikuti langkah-langkah berikut:
Di bagian Kelola, pilih Autentikasi.
Di bawah Pengaturan tingkat lanjut, untuk Izinkan alur klien publik, pilih Ya.
Pilih Simpan untuk menyimpan perubahan Anda.
Menambahkan kerangka kerja MSAL ke aplikasi iOS (Swift)
SDK autentikasi MSAL digunakan untuk mengintegrasikan autentikasi ke dalam aplikasi Anda menggunakan OAuth2 standar dan OpenID Connect. Ini memungkinkan Anda untuk memasukkan pengguna atau aplikasi dengan identitas Microsoft. Untuk menambahkan MSAL ke proyek iOS (Swift), ikuti langkah-langkah berikut:
- Buka proyek iOS Anda di Xcode.
- Pilih Tambahkan Dependensi Paket... dari menu File.
- Masukkan
https://github.com/AzureAD/microsoft-authentication-library-for-objc
sebagai URL Paket dan pilih Tambahkan Paket
Memperbarui Pengidentifikasi Paket
Di ekosistem Apple, Pengidentifikasi Bundel adalah pengidentifikasi unik untuk aplikasi. Untuk memperbarui Pengidentifikasi Bundel di proyek Anda, ikuti langkah-langkah berikut:
Buka pengaturan proyek. Di bagian Identitas , masukkan Pengidentifikasi Bundel .
Klik kanan Info.plist dan pilih Buka Sebagai Kode Sumber>.
Di bawah simpul akar dict, ganti
Enter_the_bundle_Id_Here
denganId Bundelyang Anda gunakan di portal. Perhatikan awalanmsauth.
dalam string.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
Membuat instansi SDK
Untuk membuat instans MSAL di proyek Anda, ikuti langkah-langkah berikut:
Impor pustaka MSAL ke pengontrol tampilan Anda dengan menambahkan
import MSAL
di bagian atas kelasViewController
Anda.Tambahkan variabel anggota
applicationContext
ke kelas ViewController Anda dengan menambahkan kode berikut tepat sebelum fungsiviewDidLoad()
:var applicationContext : MSALPublicClientApplication? var webViewParameters : MSALWebviewParameters?
Kode mendeklarasikan dua variabel:
applicationContext
, yang menyimpan instansMSALPublicClientApplication
, danwebViewParameters
, yang menyimpan instansMSALWebviewParameters
.MSALPublicClientApplication
adalah kelas yang disediakan oleh MSAL untuk menangani aplikasi klien publik.MSALWebviewParameters
adalah kelas yang disediakan oleh MSAL yang menentukan parameter untuk mengonfigurasi tampilan web yang digunakan selama proses autentikasi.Tambahkan kode berikut ke fungsi tampilan
viewDidLoad()
:do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
Kode mencoba menginisialisasi MSAL, menangani kesalahan apa pun yang terjadi selama proses. Jika terjadi kesalahan, sistem akan memperbarui catatan log dengan detail kesalahan.
Tambahkan kode berikut yang membuat fungsi
initMSAL()
, yang menginisialisasi MSAL:func initMSAL() throws { guard let authorityURL = URL(string: Configuration.kAuthority) else { self.updateLogging(text: "Unable to create authority URL") return } let authority = try MSALCIAMAuthority(url: authorityURL) let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID, redirectUri: Configuration.kRedirectUri, authority: authority) self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration) }
Kode ini menginisialisasi MSAL untuk iOS. Ini pertama-tama mencoba membuat URL untuk otoritas menggunakan string Configuration.kAuthority yang disediakan. Jika berhasil, ia membuat objek otoritas MSAL berdasarkan URL tersebut. Kemudian, konfigurasikan
MSALPublicClientApplication
dengan ID klien, URI pengalihan, dan otoritas yang diberikan. Jika semua konfigurasi disiapkan dengan benar, maka akan menginisialisasi konteks aplikasi denganMSALPublicClientApplication
yang telah dikonfigurasi. Jika terjadi kesalahan selama proses, pesan kesalahan akan muncul.Buat file Configuration.swift dan tambahkan konfigurasi berikut:
import Foundation @objcMembers class Configuration { static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here" // Update the below to your client ID you received in the portal. static let kClientID = "Enter_the_Application_Id_Here" static let kRedirectUri = "Enter_the_Redirect_URI_Here" static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here" static let kScopes = ["Enter_the_Protected_API_Scopes_Here"] static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com" }
Kode konfigurasi Swift ini mendefinisikan kelas bernama
Configuration
dan ditandai dengan@objcMembers
. Ini termasuk konstanta statis untuk berbagai parameter konfigurasi yang terkait dengan penyiapan autentikasi. Parameter ini termasuk subdomain penyewa , ID klien , redirect URI , titik akhir API yang dilindungi , dan lingkup . Konstanta konfigurasi ini harus diperbarui dengan nilai yang sesuai khusus untuk penyiapan aplikasi.Temukan tanda tempat.
-
Enter_the_Application_Id_Here
dan gantikan dengan ID Aplikasi (klien) dari aplikasi yang Anda daftarkan sebelumnya. -
Enter_the_Redirect_URI_Here
dan ganti dengan nilai kRedirectUri dalam file konfigurasi MSAL yang Anda unduh sebelumnya saat menambahkan URL pengalihan platform. -
Enter_the_Protected_API_Scopes_Here
dan ganti dengan ruang lingkup yang direkam sebelumnya. Jika Anda belum merekam cakupan apa pun, Anda dapat membiarkan daftar cakupan ini kosong. -
Enter_the_Tenant_Subdomain_Here
dan gantikan dengan subdomain Direktori (tenant). Misalnya, jika domain utama penyewa Andacontoso.onmicrosoft.com
, gunakancontoso
. Jika Anda tidak mengetahui subdomain penyewa Anda, belajarlah cara membaca detail penyewa Anda.
-
Menggunakan domain URL kustom (Opsional)
Gunakan domain kustom untuk sepenuhnya memberi merek URL autentikasi. Dari perspektif pengguna, pengguna tetap berada di domain Anda selama proses autentikasi, daripada dialihkan ke nama domain ciamlogin.com.
Gunakan langkah-langkah berikut untuk menggunakan domain kustom:
Gunakan langkah-langkah dalam Mengaktifkan domain URL kustom untuk aplikasi di penyewa eksternal untuk mengaktifkan domain URL kustom untuk penyewa eksternal Anda.
Buka file Configuration.swift:
- Perbarui nilai properti
kAuthority
ke https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. GantiEnter_the_Custom_Domain_Here
dengan domain URL kustom Anda danEnter_the_Tenant_ID_Here
dengan ID penyewa Anda. Jika Anda tidak memiliki ID penyewa, pelajari lebih lanjut tentang bagaimana cara membaca detail penyewa Anda.
- Perbarui nilai properti
Setelah Anda membuat perubahan pada file Configuration.swift, jika domain URL kustom Anda login.contoso.com, dan ID penyewa Anda aaaabbbb-0000-cc-1111-dddd2222eeee, maka file Anda akan terlihat mirip dengan cuplikan berikut:
import Foundation
@objcMembers
class Configuration {
static let kTenantSubdomain = "login.contoso.com"
// Update the below to your client ID you received in the portal.
static let kClientID = "Enter_the_Application_Id_Here"
static let kRedirectUri = "Enter_the_Redirect_URI_Here"
static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
static let kAuthority = "https://\(kTenantSubdomain)/aaaabbbb-0000-cccc-1111-dddd2222eeee"
}