적용 대상: Workforce 테넌트
외부 테넌트 (자세히 알아보기)
iOS 및 macOS용 MSAL(Microsoft 인증 라이브러리)을 iOS Swift 앱에 추가하는 방법을 보여 주는 자습서 시리즈의 두 번째 자습서입니다.
시작하기 전에 이 페이지의 맨 위에 있는 테넌트 유형 선택기를 선택하여 테넌트 유형을 선택합니다. Microsoft Entra ID는 두 가지 테넌트 구성을 제공합니다: 직원 및 외부 . 직원 테넌트 구성은 직원, 내부 앱 및 기타 조직 리소스를 위한 것입니다. 외부 테넌트는 고객용 앱용입니다.
이 자습서에서는 다음을 수행합니다.
- iOS(Swift) 앱에 MSAL 프레임워크를 추가합니다.
- SDK 인스턴스를 만듭니다.
- Xcode 프로젝트 설정을 구성합니다.
필수 조건
-
모든 조직 디렉터리 및 개인 Microsoft 계정의 계정에 대해 구성된 Microsoft Entra 관리 센터에 새 클라이언트 웹앱을 등록합니다.
애플리케이션 등록에서 자세한 내용을 참조하세요. 다음 값을 애플리케이션 개요 페이지에서 기록하여 나중에 사용하십시오.
- 애플리케이션(클라이언트) ID
- 디렉터리(테넌트) ID
- 엑스코드.
- iOS(Swift) 프로젝트입니다.
플랫폼 리디렉션 URL 추가
앱 등록에 앱 유형을 지정하려면 다음 단계를 수행합니다.
- 관리아래에서 인증>플랫폼 추가>iOS/macOS를 선택합니다.
- 프로젝트의 번들 ID를 입력합니다. 코드 샘플을 다운로드한 경우 번들 ID는
com.microsoft.identitysample.MSALiOS
. 고유한 프로젝트를 만드는 경우 Xcode에서 프로젝트를 선택하고 일반 탭을 엽니다. 번들 식별자는 ID 섹션에 나타납니다. - 구성 선택하고 MSAL 구성 페이지에 표시되는 MSAL 구성 저장하여 나중에 앱을 구성할 때 입력할 수 있습니다.
- 완료를 선택합니다.
iOS(Swift) 앱에 MSAL 프레임워크 추가
앱에 MSAL 라이브러리를 설치하려면 다음 방법 중 하나를 선택합니다.
코코아팟
CocoaPods를 사용하는 경우 먼저 프로젝트의
MSAL
파일과 동일한 폴더에 podfile이라는 빈 파일을 만들어 을 설치합니다. Podfile에 다음을 추가합니다.use_frameworks! target '<your-target-here>' do pod 'MSAL' end
<your-target-here>
를 프로젝트의 이름으로 바꿉니다.터미널 창에서 사용자가 만든 podfile을 포함하는 폴더로 이동하고
pod install
을 실행하여 MSAL 라이브러리를 설치합니다.Xcode를 닫고
<your project name>.xcworkspace
를 열어 Xcode에서 프로젝트를 다시 로드합니다.
카르타고
Carthage를 사용하는 경우, MSAL
에 를 추가하여 설치하세요.
github "AzureAD/microsoft-authentication-library-for-objc" "master"
업데이트된 Cartfile과 동일한 디렉터리에 있는 터미널 창에서 다음 명령을 실행하여 Carthage가 프로젝트의 종속성을 업데이트하도록 합니다.
아이폰 OS:
carthage update --platform iOS
맥 OS:
carthage update --platform macOS
수동으로
Git 하위 모듈을 사용하거나, 최신 릴리스를 확인하여 애플리케이션에 프레임워크로 사용할 수도 있습니다.
앱 등록 추가
다음으로, 코드에 앱 등록을 추가합니다.
먼저 ViewController.swift 파일 및 AppDelegate.swift 또는 SceneDelegate.swift 중 하나의 맨 위에 다음 import 문을 추가합니다.
import MSAL
다음으로 ViewController.swift에 대한 다음 코드를 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?
수정해야 할 유일한 값은 kClientID
가 되도록 에 할당된 값입니다. 이 값은 애플리케이션을 등록하기 위해 이 자습서의 시작 부분에 있는 단계에서 저장한 MSAL 구성 데이터의 일부입니다.
SDK 인스턴스 만들기
프로젝트에서 MSAL 인스턴스를 만들려면 다음 단계를 수행합니다.
ViewController
클래스에 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()
}
ViewController
클래스 및 initMSAL
메서드 뒤에 initWebViewParams
메서드를 추가합니다.
iOS 코드:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
}
macOS 코드:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters()
}
Xcode 프로젝트 설정 구성
프로젝트 서명 및 기능에 새 키 집합 그룹을 추가합니다. 키 집합 그룹은 iOS에서는 com.microsoft.adalcache
, macOS에서는 com.microsoft.identity.universalstorage
여야 합니다.
iOS 전용으로 URL 스키마 구성
이 단계에서는 로그인한 후 사용자를 앱으로 다시 리디렉션할 수 있도록 CFBundleURLSchemes
를 등록합니다. 그런데 LSApplicationQueriesSchemes
를 사용하면 앱에서 Microsoft Authenticator를 사용할 수도 있습니다.
Xcode에서 Info.plist를 소스 코드 파일로 열고 <dict>
섹션 내에 다음을 추가합니다.
[BUNDLE_ID]
를 이전에 사용한 값으로 바꿉니다. 코드를 다운로드한 경우 번들 식별자는 com.microsoft.identitysample.MSALiOS
입니다. 고유한 프로젝트를 만드는 경우 Xcode에서 프로젝트를 선택하고 일반 탭을 엽니다. 번들 식별자는 ID 섹션에 나타납니다.
<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>
macOS의 경우에만 App Sandbox 구성
- Xcode 프로젝트 설정 >기능 탭>App Sandbox로 이동
- 나가는 연결(클라이언트) 체크박스를 선택합니다.
다음 단계
자습서: iOS(Swift) 모바일 앱 사용자 로그인
iOS 및 macOS용 MSAL(Microsoft 인증 라이브러리)을 iOS Swift 앱에 추가하는 방법을 보여 주는 자습서 시리즈의 두 번째 자습서입니다.
시작하기 전에 이 페이지의 맨 위에 있는 테넌트 유형 선택기를 선택하여 테넌트 유형을 선택합니다. Microsoft Entra ID는 두 가지 테넌트 구성을 제공합니다: 직원 및 외부 . 직원 테넌트 구성은 직원, 내부 앱 및 기타 조직 리소스를 위한 것입니다. 외부 테넌트는 고객용 앱용입니다.
이 자습서에서는 다음을 수행합니다.
- iOS(Swift) 앱에 MSAL 프레임워크를 추가합니다.
- SDK 인스턴스를 만듭니다.
필수 조건
-
모든 조직 디렉터리 및 개인 Microsoft 계정의 계정에 대해 구성된 Microsoft Entra 관리 센터에 새 클라이언트 웹앱을 등록합니다.
애플리케이션 등록에서 자세한 내용을 참조하세요. 다음 값을 애플리케이션 개요 페이지에서 기록하여 나중에 사용하십시오.
- 애플리케이션(클라이언트) ID
- 디렉터리(테넌트) ID
- 엑스코드.
- iOS(Swift) 프로젝트입니다.
플랫폼 리디렉션 URL 추가
앱 등록에 앱 유형을 지정하려면 다음 단계를 수행합니다.
- 관리아래에서 인증>플랫폼 추가>iOS/macOS를 선택합니다.
- 프로젝트의 번들 ID를 입력합니다. 코드 샘플을 다운로드한 경우 번들 ID는
com.microsoft.identitysample.MSALiOS
. 고유한 프로젝트를 만드는 경우 Xcode에서 프로젝트를 선택하고 일반 탭을 엽니다. 번들 식별자는 ID 섹션에 나타납니다. - 구성 선택하고 MSAL 구성 페이지에 표시되는 MSAL 구성 저장하여 나중에 앱을 구성할 때 입력할 수 있습니다.
- 완료를 선택합니다.
공개 클라이언트 플로우 활성화
앱을 퍼블릭 클라이언트로 식별하려면 다음 단계를 수행합니다.
관리에서 인증을 선택합니다.
고급 설정에서 공용 클라이언트 흐름 허용에 대해 예를 선택합니다.
저장을 선택하여 변경 내용을 저장합니다.
iOS(Swift) 앱에 MSAL 프레임워크 추가
MSAL 인증 SDK는 표준 OAuth2 및 OpenID Connect를 사용하여 앱에 인증을 통합하는 데 사용됩니다. 이를 통해 Microsoft ID를 사용하여 사용자 또는 앱에 로그인할 수 있습니다. iOS(Swift) 프로젝트에 MSAL을 추가하려면 다음 단계를 수행합니다.
- Xcode에서 iOS 프로젝트를 엽니다.
- 파일 메뉴에서 패키지 종속성 추가...을 선택합니다.
- 패키지 URL로 입력
https://github.com/AzureAD/microsoft-authentication-library-for-objc
하고 패키지 추가 선택
번들 식별자 업데이트
Apple 에코시스템에서 번들 식별자는 애플리케이션에 대한 고유 식별자입니다. 프로젝트에서 번들 식별자를 업데이트하려면 다음 단계를 수행합니다.
프로젝트 설정을 엽니다. ID 섹션에서 번들 식별자입력합니다.
Info.plist 마우스 오른쪽 단추로 클릭하고 다른 방식으로 열기>소스 코드를 선택합니다.
dict 루트 노드에서 포털에서 사용한 번들 ID
Enter_the_bundle_Id_Here
를 로 교체합니다. 문자열의msauth.
접두사를 확인합니다.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
SDK 인스턴스 만들기
프로젝트에서 MSAL 인스턴스를 만들려면 다음 단계를 수행합니다.
import MSAL
클래스의 맨 위에ViewController
추가하여 MSAL 라이브러리를 뷰 컨트롤러로 가져옵니다.applicationContext
함수 바로 앞에 다음 코드를 추가하여 ViewController 클래스에 멤버 변수를viewDidLoad()
추가합니다.var applicationContext : MSALPublicClientApplication? var webViewParameters : MSALWebviewParameters?
이 코드는 두 개의 변수를 선언합니다.
applicationContext
즉, 인스턴스를MSALPublicClientApplication
저장하고webViewParameters
인스턴스를MSALWebviewParameters
저장합니다.MSALPublicClientApplication
는 공용 클라이언트 애플리케이션을 처리하기 위해 MSAL에서 제공하는 클래스입니다. 이MSALWebviewParameters
클래스는 인증 프로세스 중에 사용되는 웹 보기를 구성하기 위한 매개 변수를 정의하는 MSAL에서 제공하는 클래스입니다.뷰
viewDidLoad()
함수에 다음 코드를 추가합니다.do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
코드는 프로세스 중에 발생하는 모든 오류를 처리하여 MSAL을 초기화하려고 시도합니다. 오류가 발생하면 로깅을 오류 세부 정보로 업데이트합니다.
MSAL을 초기화하는 함수를 만드는
initMSAL()
다음 코드를 추가합니다.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) }
이 코드는 iOS용 MSAL을 초기화합니다. 먼저 제공된 Configuration.kAuthority 문자열을 사용하여 권한에 대한 URL을 만들려고 시도합니다. 성공하면 해당 URL을 기반으로 MSAL 기관 개체를 만듭니다. 그런 다음 지정된 클라이언트 ID, 리디렉션 URI 및 권한을 사용하여
MSALPublicClientApplication
을(를) 구성합니다. 모든 구성이 올바르게 설정되면 구성된MSALPublicClientApplication
애플리케이션 컨텍스트를 초기화합니다. 프로세스 중에 오류가 발생하면 오류를 발생시킵니다.Configuration.swift 파일을 만들고 다음 구성을 추가합니다.
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" }
Swift 코드 구성에서
Configuration
라는 이름의 클래스를 정의하고@objcMembers
로 표시합니다. 여기에는 인증 설정과 관련된 다양한 구성 매개 변수에 대한 정적 상수가 포함됩니다. 이러한 매개 변수에는 테넌트 하위 도메인, 클라이언트 ID, 리디렉션 URI, 보호된 API 엔드포인트 및 범위가 포함됩니다. 이러한 구성 상수는 애플리케이션 설정과 관련된 적절한 값으로 업데이트해야 합니다.자리 표시자 찾기:
-
Enter_the_Application_Id_Here
을 이전에 등록한 앱의 애플리케이션(클라이언트) ID 로 바꿉니다. -
Enter_the_Redirect_URI_Here
플랫폼 리디렉션 URL을 추가했을 때 이전에 다운로드한 MSAL 구성 파일에서 kRedirectUri 값으로 바꿉다. -
Enter_the_Protected_API_Scopes_Here
이전에 기록된 범위로 바꿉니다. 범위를 기록하지 않은 경우 이 범위 목록을 비워 둘 수 있습니다. -
Enter_the_Tenant_Subdomain_Here
를 디렉터리(테넌트) 하위 도메인으로 바꿉니다. 예를 들어, 테넌트 기본 도메인이contoso.onmicrosoft.com
인 경우contoso
를 사용합니다. 테넌트 하위 도메인을 모르는 경우 테넌트 세부 정보를읽는 방법을 확인하세요.
-
사용자 지정 URL 도메인 사용(선택 사항)
사용자 지정 도메인을 사용하여 인증 URL을 완전히 브랜드화합니다. 사용자 관점에서 볼 때, 사용자는 인증 과정 동안 ciamlogin.com 도메인 이름으로 리디렉션되는 것이 아니라 도메인에 남아 있습니다.
사용자 지정 도메인을 사용하려면 다음 단계를 사용합니다.
외부 테넌트 앱에 대한 사용자 지정 URL 도메인을 활성화하는 단계를 사용하여 외부 테넌트에 사용자 지정 URL 도메인을 활성화하십시오.
Configuration.swift 파일을 엽니다.
-
kAuthority
속성의 값을 https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here로 업데이트합니다.Enter_the_Custom_Domain_Here
를 사용자 지정 URL 도메인으로,Enter_the_Tenant_ID_Here
를 테넌트 ID로 바꿉니다. 테넌트 ID가 없는 경우 테넌트 세부 정보를 읽는 방법을 알아봅니다.
-
Configuration.swift 파일을 변경한 후 사용자 지정 URL 도메인이 login.contoso.com 테넌트 ID가 aaaabbbb-0000-cccc-1111-dddd2222eeee인 경우 파일은 다음 코드 조각과 유사하게 표시됩니다.
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"
}
다음 단계
자습서: iOS(Swift) 모바일 앱 사용자 로그인