iOS için Intune Uygulama SDK'sı - Uygulama Koruma CA desteği (isteğe bağlı)
Uygulama Koruması Koşullu Erişim, Intune uygulama koruma ilkesinin uygulandığını onaylayana kadar sunucu belirteçlerine erişimi engeller. Bu özellik, ekleme kullanıcı akışlarınızda değişiklik yapılmasını gerektirir. Müşteri Uygulama Koruma CA'sını etkinleştirdikten sonra, bu müşterinin kiracısında korunan kaynaklara erişen uygulamalar bu özelliği desteklemediği sürece erişim belirteci alamaz.
Not
Bu kılavuz birkaç ayrı aşamaya ayrılmıştır. 1. Aşama: Tümleştirmeyi Planlama'ya bakarak başlayın.
6. Aşama: App Protection CA desteği
Aşama Hedefleri
- iOS uygulamasında Uygulama Koruması Koşullu Erişimi desteklemek için kullanılabilecek farklı API'ler hakkında bilgi edinin
- Uygulama Koruması Koşullu Erişimi uygulamanızla ve kullanıcılarınızla tümleştirin.
- Yukarıdaki tümleştirmeyi uygulamanız ve kullanıcılarınız ile test edin.
Bağımlılık
Intune SDK'sına ek olarak, uygulamanızda App Protection CA'yı etkinleştirmek için bu iki bileşene ihtiyacınız vardır.
- iOS Authenticator uygulaması
- MSAL kimlik doğrulama kitaplığı 1.0 veya üzeri
MAM-CA düzeltme akışı
Yeni API'ler
Yeni API'lerin çoğu IntuneMAMComplianceManager.h içinde bulunabilir. Uygulamanın aşağıda açıklanan üç davranış farklılığından haberdar olması gerekir.
Yeni davranış | Açıklama |
---|---|
Uygulama → ADAL/MSAL: Belirteç alma | Bir uygulama belirteç almaya çalıştığında, bir ERROR_SERVER_PROTECTION_POLICY_REQUIRED almaya hazır olmalıdır. Uygulama, ilk hesap ekleme akışı sırasında veya uygulama yaşam döngüsünün ilerleyen bölümlerinde bir belirtece erişirken bu hatayı alabilir. Uygulama bu hatayı aldığında erişim belirteci verilmez ve sunucu verilerini almak için düzeltilmesi gerekir. |
Uygulama → Intune SDK'sı: Çağrı düzeltmeComplianceForIdentity | Bir uygulama ADAL'dan veya MSALErrorServerProtectionPoliciesRequired'den bir ERROR_SERVER_PROTECTION_POLICY_REQUIRED aldığında, Intune'un uygulamayı kaydetmesine ve ilke uygulamasına izin vermek için [[IntuneMAMComplianceManager instance] remediateComplianceForIdentity] çağrısı yapmalıdır. Bu çağrı sırasında uygulama yeniden başlatılabilir. Uygulamanın yeniden başlatmadan önce durumunu kaydetmesi gerekiyorsa, bunu IntuneMAMPolicyDelegate'teki restartApplication temsilci yönteminde yapabilir. remediateComplianceForIdentity, registerAndEnrollAccount ve loginAndEnrollAccount işlevlerinin tümünü sağlar. Bu nedenle uygulamanın bu eski API'lerden birini kullanması gerekmez. |
Intune → Uygulaması: Temsilci düzeltme bildirimi | Intune ilkeleri aldıktan ve uyguladıktan sonra, IntuneMAMComplianceDelegate protokolünün kullanıldığı sonucu uygulamaya bildirir. Uygulamanın her hatayı nasıl işlemesi gerektiği hakkında bilgi için IntuneComplianceManager.h dosyasındaki IntuneMAMComplianceStatus'a bakın. IntuneMAMComplianceCompliant dışındaki tüm durumlarda kullanıcının geçerli bir erişim belirteci olmaz. Uygulama zaten yönetilen içeriğe sahipse ve uyumlu bir durum giremiyorsa, şirket içeriğini kaldırmak için seçmeli silme çağrısı yapmalıdır. Uyumlu bir duruma ulaşamıyorsak uygulamanın, withErrorMessage ve andErrorTitle tarafından sağlanan hata iletisini ve başlık dizesini yerelleştirilmiş olarak görüntülemesi gerekir. |
IntuneMAMComplianceDelegate'in hasComplianceStatus yöntemi örneği
(void) accountId:(NSString*_Nonnull) accountId hasComplianceStatus:(IntuneMAMComplianceStatus) status withErrorMessage:(NSString*_Nonnull) errMsg andErrorTitle:(NSString*_Nonnull) errTitle
{
switch(status)
{
case IntuneMAMComplianceCompliant:
{
/*
Handle successful compliance
*/
break;
}
case IntuneMAMComplianceNotCompliant:
case IntuneMAMComplianceNetworkFailure:
case IntuneMAMComplianceUserCancelled:
case IntuneMAMComplianceServiceFailure:
{
UIAlertController* alert = [UIAlertController alertControllerWithTitle:errTitle
message:errMsg
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {exit(0);}];
[alert addAction:defaultAction];
dispatch_async(dispatch_get_main_queue(), ^{
[self presentViewController:alert animated:YES completion:nil];
});
break;
}
case IntuneMAMComplianceInteractionRequired:
{
[[IntuneMAMComplianceManager instance] remediateComplianceForAccountId:accountId silent:NO];
break;
}
}
}
func accountId(_ accountId: String, hasComplianceStatus status: IntuneMAMComplianceStatus, withErrorMessage errMsg: String, andErrorTitle errTitle: String) {
switch status {
case .compliant:
//Handle successful compliance
case .notCompliant, .networkFailure,.serviceFailure,.userCancelled:
DispatchQueue.main.async {
let alert = UIAlertController(title: errTitle, message: errMsg, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
exit(0)
}))
self.present(alert, animated: true, completion: nil)
}
case .interactionRequired:
IntuneMAMComplianceManager.instance().remediateCompliance(forAccountId: accountId, silent: false)
}
MSAL/ADAL
Uygulamaların, MSAL/ADAL yapılandırmalarına istemci özellikleri değişkeni ekleyerek App Protection CA desteğini belirtmesi gerekir. Aşağıdaki değerler gereklidir: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}
MSALPublicClientApplicationConfig Sınıf Başvurusu (azuread.github.io)
MSALAADAuthority *authority = [[MSALAADAuthority alloc] initWithURL:[[NSURL alloc] initWithString:IntuneMAMSettings.aadAuthorityUriOverride] error:&msalError];
MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc]
initWithClientId:IntuneMAMSettings.aadClientIdOverride
redirectUri:IntuneMAMSettings.aadRedirectUriOverride
authority:authority];
/*
IF YOU'RE IMPLEMENTING CA IN YOUR APP, PLEASE PAY ATTENTION TO THE FOLLOWING...
*/
// This is needed for CA!
// This line adds an option to the MSAL token request so that MSAL knows that CA may be active
// Without this, MSAL won't know that CA could be activated
// In the event that CA is activated and this line isn't in place, the auth flow will fail
config.clientApplicationCapabilities = @[@"protapp"];
guard let authorityURL = URL(string: kAuthority) else {
print("Unable to create authority URL")
return
}
let authority = try MSALAADAuthority(url: authorityURL)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID,redirectUri: kRedirectUri,
authority: authority)
msalConfiguration.clientApplicationCapabilities = ["ProtApp"]
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
MAM SDK uyumluluk düzeltme API'lerinin accountId parametresinin Entra nesne kimliğini getirmek için aşağıdakileri yapmanız gerekir:
- İlk olarak uygulamaya ERROR_SERVER_PROTECTION_POLICY_REQUIRED bildirdiğinde MSAL tarafından gönderilen MSALError nesnesi içinde userInfo[MSALHomeAccountIdKey] öğesinden homeAccountId değerini alın.
- Bu homeAccountId, ObjectId.TenantId biçiminde olacaktır. Dizeyi '.' üzerinde bölerek ObjectId değerini ayıklayın ve düzeltme API'sinde accountId parametresi için bu değeri kullanıncomplianceForAccountId değerini düzeltin.
Çıkış ölçütleri
Uygulama Koruma CA'sı için test kullanıcısı yapılandırma
- adresinde yönetici kimlik bilgilerinizle https://portal.azure.comoturum açın.
- Microsoft Entra ID>Security>Koşullu Erişim>Yeni ilkesi'ni seçin. Yeni bir koşullu erişim ilkesi oluşturun.
- Aşağıdaki öğeleri ayarlayarak koşullu erişim ilkesini yapılandırın:
- Ad alanını doldurma.
- İlkeyi etkinleştirme.
- İlkeyi bir kullanıcıya veya gruba atama.
- Bulut uygulamaları atama. Tüm bulut uygulamalarınıdahil et'i> seçin. Uyarı notları olarak, bu ayarı yanlış yapılandırmamaya dikkat edin. Örneğin, tüm bulut uygulamalarını dışladıysanız kendinizi konsolun dışına kilitleyebilirsiniz.
- Erişim Denetimleri> ErişimIzni VerUygulama koruma ilkesi gerektir'i seçerek erişim > denetimleri verin.
- İlkeyi yapılandırmayı bitirdiğinizde oluştur'u seçerek ilkeyi kaydedin ve uygulayın.
- İlkeyi etkinleştirin.
- Ayrıca, kullanıcıların MAM ilkeleri için hedeflenmiş olduğundan da emin olmanız gerekir.
Test çalışmaları
Test Çalışması | Test etme | Beklenen Sonuç |
---|---|---|
MAM-CA her zaman uygulanır | Uygulamanıza kaydolmadan önce kullanıcının hem Uygulama Koruma CA'sı hem de MAM ilkesi için hedeflendiğinden emin olun. | Uygulamanızın yukarıda açıklanan düzeltme olaylarını işlediğini ve uygulamanın erişim belirteci alabildiğini doğrulayın. |
Kullanıcı kaydedildikten sonra MAM-CA uygulandı | Kullanıcının uygulamada zaten oturum açmış olması, ancak Uygulama Koruma CA'sı için hedeflenmemesi gerekir. | Kullanıcıyı konsolunda App Protection CA için hedefleyip MAM düzeltmesini doğru işlediğinizi doğrulayın |
MAM-CA uyumsuzluğu | Uygulama Koruma CA ilkesi ayarlayın, ancak MAM ilkesi atayın. | Kullanıcı erişim belirteci alamamalıdır. Bu, uygulamanızın IntuneMAMComplianceStatus hata durumlarını nasıl işlediğini test etmede yararlıdır. |
Sonraki Adımlar
Yukarıdaki tüm Çıkış Ölçütlerini tamamladıktan sonra uygulamanız artık App Protection CA desteğiyle başarıyla tümleştirilmiştir. Sonraki bölüm olan 7. Aşama: Web görünümü özellikleri, uygulamanızın istenen uygulama koruma ilkesi desteğine bağlı olarak gerekli olabilir veya olmayabilir.